SQL:DROP、DELETE、TRUNCATE三个删除语句的不同

我们首先复制出三个一模一样的表:

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的删除整个内容的功能,,但是执行效率较低。

你可能感兴趣的:(SQL:DROP、DELETE、TRUNCATE三个删除语句的不同)