数据修改之Delete
一、删除基本数据
基本语法:
delete from 表名 [from data sources] [where conditons]
注:一般data sources 很少出现。
二、删除时引用多个表
如:
delete from Product
from Product join ProductCategory on Product.categoryID=ProductCategory.ID
where ProductCategory.categoryname='video'
这个SQL语句功能:删除Product表中 种类为Video的所有产品,其中因为各类名称
存储在ProductCategory 表中,所以使用了一个联接来完成。
注:这样的操作都可以采用子查询来实现。与update命令的from子句一样,delete
命令的第二个from 子句也不是ANSI SQL标准语法,如果项目的可移植性非常重要,
应使用子查询来实现。
三、级联删除
引用完整性(RI):从表行不能引用不存在的主表行
当删除主表行时,删除从表行中对应的行。(级联删除)
可在外键上加上on delete cascade,
四、物理删除数据的替代方法
1、在行中包含一个逻辑删除位来标记。如Isdelte
但是加了逻辑删除标记,在所有的SQL语句操作(如Select语句)时,
都必须加上对这个删除位的条件判断。
2、将删除的行归档到另一个表或数据库中
3、对所有数据修改进行全面的审计跟踪