笔记之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删除整个表,包括数据、表结构,就是把整个表给删掉

 

posted @ 2020-04-17 08:42  吾言!  阅读(886)  评论(0编辑  收藏  举报