尚硅谷之MySQL基础
9.3 删除数据
1、语法
delete from 表名 【where 条件】; |
delete 表1,表2,....... from 表1,表2,...... 【where 条件】; |
2、说明
1、如果不加where条件,表示删除整张表的数据,表结构保留。
delete from 表名;
删除整张表的数据还可以使用truncate 表名;
区别:
truncate相当于删除表再重建一张同名结构的表,操作后得到一张全新表,而delete是在原有表中删除数据。如果决定清空一张表的数据,truncate速度更快一些。
TRUNCATE语句不能回滚
2、如果删除主表的记录,要注意查看从表的外键是否有依赖该行的值,如果有
(1)如果外键是on delete RESTRICT或on delete NO ACTION,那么要先处理从表的数据,才能删除
(2)如果外键是on delete SET NULL 或 on delete CASCADE,那么删除时从表的对应记录也会被置空或跟着删除
3、可以一次删除多个表的数据
例如:两个表没有建立外键,但逻辑上有外键关系,也可以通过删除多个表的数据来实现级联删除
3、示例
#删除学号为9的学生信息 DELETE FROM t_stu WHERE sid = 9; |
#注意:前提是没有外键或外键是on delete cascade #删除所有“教学部”的员工信息和薪资信息和“教学部”部门信息 DELETE t_employee,t_department,t_salary FROM t_employee,t_department,t_salary WHERE t_department.`dname` ='教学部' AND t_employee.`dept_id`=t_department.`did` AND t_employee.`eid` = t_salary.eid; |