笔记之MySQL删除表和数据drop、delete、truncate
删除表(格式:drop table 表名/drop table if exists 表名)
drop table student;删除学生表
drop table if exists teacher ; 删除teacher表,如果这个表存在(删除多个表格可以逗号加表名)
删除数据(delete from 表名 where 条件)若无后面的条件则代表全表执行,删除后无法恢复
delete from student ;(清空student表格)
delete from student where name='姜子牙';(删除name叫姜子牙的数据)
逻辑删除:对于重要数据,不能轻易执行delete语句进行删除,一旦删除,数据无法恢复,此时可以进行逻辑删除(逻辑删除实际是添加一个新的字段标识数据是否被删除,字段名一般叫is_delete,默认设置为0,代表的是数据没被删除,删除了一条数据只是修改了此数据的is_delete字段为1)
如:update teacher set is_delete=1 where name='姜子牙';即代表name=‘姜子牙’这条数据已经是删除的数据
查询所有教师时不显示删除的学生:select * from teacher where is_delete=0;
===============================================2021-10-15更新=====================================================
delete数据量大的时候删的超级慢(delete可以回滚,带事务 所以会慢一点) ,还会中间断了 ,容易死锁 ,还要解锁 ,超级烦
当数据量很大的时候,delete删除系统一行一行地删,效率比truncate低,此时一般使用truncate删除数据
相对delete,truncate使用的系统和事务日志资源少,当表被清空后表和表的索引将重新设置成初始大小,delete则不能。
truncate语法:
truncate table 表名称;
truncate删除整个表的数据;delete和truncate都是删除整个表的数据;drop删除整个表,包括数据、表结构,就是把整个表给删掉