关于表以及表的数据的删除有三种方法,DELETE、TRUNCATE、DROP。
现在假使有一张表叫做 book。
DELETE
DELETE 针对的是表的数据层面,作用在一条一条的数据上,使用语法如下:
DELETE FROM book;
上面的语句表示删除 book 表的所有数据,当然也可以指定删除的条件,如:
DELETE FROM book WHERE id > 10000;
以上的删除语法有一个特点,就是如果删除数据的数据量过大,只要删除的操作没有返回结果,因为任何原因中断了操作,数据还是会恢复到删除前的状态。
所以如果要删除大量数据,为了不锁定表影响其它进程对该表的操作,可以对数据分批次删除。
TRUNCATE
这个关键词的作用是,清空某张表,跟上面 DELETE 的
DELETE FROM book;
效果相同,但是这个操作更快,因为,
DELETE 的操作手段是对每一条数据挨个删除,
TRUNCATE 的操作手段是直接删除该表的数据库文件,然后根据原表的数据结构重新创建一张原名表。
所以,如果要清空一张表,推荐使用 TRUNCATE,而且如果 id 是自增字段,那么 TRUNCATE 之后会重新从1 开始计数。
TRUNCATE 使用语法如下:
TRUNCATE TABLE book;
DROP
这个作用是删除某一张表,是在表的层面作用,效果是使用之后该表在数据库中就不存在了,表结构和数据都没了,show tables; 之后没有该表的操作。
使用语法如下:
DROP TABLE book;