数据库中 删除表用哪个delete,drop,truncate?
因为要测试是否可以数据库重新生成一个表,要删除掉原来的表, 数据库删除有delete,truncate,drop,菜鸟上查了区别,记录于此:
- drop test; 删除表test,并释放空间,将test删除的一干二净
- truncate test;删除表的内容,并释放空间,但不删除表的定义,表的结构还在
- delete删除指定数据 delete from test where age=30 and country='US';
- delete删除整个表内的内容,保留表的定义,不释放空间
- delete * from test ;
delete,drop,truncate 都有删除表的作用,区别在于:
- 1、delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
- 2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
- 3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。