我们首先复制出三个一模一样的表:
CREATE TABLE test1 as SELECT * FROM `2017-Q1`;
CREATE TABLE test2 as SELECT * FROM `2017-Q1`;
CREATE TABLE test3 as SELECT * FROM `2017-Q1`;
然后来看一下表中的大概内容,三张表的内容是一模一样的:
接下来我们来比较三个删除语句的不同。
1) DROP TABLE test1;
此时整张表都被删除了,数据库中没有了test1这张表,也就是说drop是删除表结构和表数据;
2) DELETE FROM test2;
表结构依然保存,数据全部删除,当然delete后面是可以加where语句删除特定的行的,删除整张表内容的时间是0.551s;
3) TRUNCATE TABLE test3;
表结构依然保存,数据全部删除,这个语句只能用来清空表,不能删除指定行,删除整张表内容的时间是0.016s,在清空表的效率上比delete更好;
总结:1.truncate和drop语句的写法相同都是后面加 table 表名;delete要加from 表名;
2.drop删除表结构和表内容;delete和truncate只删除表内容,保留表结构;
3.delete后面可以加where语句删除指定行,不加则可以实现truncate的删除整个内容的功能,,但是执行效率较低。