from 指定一个额外的from 子句。这是delete 命令在transact-sql 语言中的扩展,它允许同时删除多个表中的数据。其所含的参数包括join_table、 join_type 等,与第10 章“数据查询”中from 子句中所讲的一致。
where 指定限制数据删除的条件。如果不指定where 子句,就会删除表中的所有数据。在 where 子句中指定两种形式的删除操作。一种是搜索删,除即使用搜索条件来限定要删除的数据行:另一种是定位删除,即使用current of 子句来指定一个游标,删除操作会在游标的当前位置产生。定位删除比搜索删除更精确。
global 说明要使用的游标是全局游标。如果不使用此选项,而又存在一个全局游标和一个局部游标同名的情况时,系统认为所选择的游标是局部游标。
11.2.2 用delete 删除数据 (1) 删除一条记录 例11-5 删除编号为‘10031011 ’的员工记录 use pangu delete from employee where emp_id = ’10031011’ (2) 删除多条记录 例11-6 删除所有的部门信息记录 use pangu delete from department_info /* 或使用 delete department_info */ 这个例子删除了department_info 表中的所有数据使它成为空表 (3) 带子查询的删除语句 子查询同样可以嵌套在delete 语句中,用以构造执行删除操作的条件。 例11-7: 删除后勤部所有员工的记录。 use pangu delete from employee where dept_id = (select dept_id from department where d_name = ’后勤部’) 例11-8 删除订货表前100 项记录中所有产品编号为1003002 的产品 use pangu delete orders from (select top 100 * from orders) as orders_ top100 where orders.p_id = orders_ top100.p_id
(4) 删除当前游标行数据 例11-9: 删除游标dinfo_cursor 所指定的数据行。 delete from department_info where current of dinfo_cursor