《Mysql應(yīng)用MySQL清空數(shù)據(jù)表的方法實(shí)例與分析》要點(diǎn):
本文介紹了Mysql應(yīng)用MySQL清空數(shù)據(jù)表的方法實(shí)例與分析,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
MySQL數(shù)據(jù)庫(kù)中,如果我們想清空數(shù)據(jù)表(刪除數(shù)據(jù)表中所有內(nèi)容)的話,可以通過(guò)下面兩個(gè)語(yǔ)句來(lái)實(shí)現(xiàn):MYSQL教程
truncate table table_n; delete from table_n;
實(shí)例
MYSQL教程
我們先通過(guò)實(shí)例看下通過(guò)這兩種方式清空數(shù)據(jù)庫(kù)的過(guò)程和結(jié)果MYSQL教程
#delete演示 mysql> create table testforde( -> number int not null auto_increment, -> name varchar(20) not null, -> primary key(number) -> ); Query OK, 0 rows affected (0.05 sec) #truncate演示 mysql> create table testfortr( -> number int not null auto_increment, -> name varchar(20) not null, -> primary key(number) -> ); Query OK, 0 rows affected (0.04 sec)
以上是兩張同樣結(jié)構(gòu)的數(shù)據(jù)表,下面我們先插入數(shù)據(jù),然后再分別用 delete
和 truncate
操作它們,看下結(jié)果如何MYSQL教程
mysql> insert into testforde(name) values('zhagnsan'),('lisi'),('wanger'),('zhaoliu'),('xiaosan'),('qiqi'),('hanba'); Query OK, 7 rows affected (0.04 sec) Records: 7 Duplicates: 0 Warnings: 0 mysql> insert into testfortr(name) values('zhagnsan'),('lisi'),('wanger'),('zhaoliu'),('xiaosan'),('qiqi'),('hanba'); Query OK, 7 rows affected (0.00 sec) Records: 7 Duplicates: 0 Warnings: 0 mysql> select * from testforde; +--------+----------+ | number | name | +--------+----------+ | 1 | zhagnsan | | 2 | lisi | | 3 | wanger | | 4 | zhaoliu | | 5 | xiaosan | | 6 | qiqi | | 7 | hanba | +--------+----------+ 7 rows in set (0.01 sec) mysql> select * from testfortr; +--------+----------+ | number | name | +--------+----------+ | 1 | zhagnsan | | 2 | lisi | | 3 | wanger | | 4 | zhaoliu | | 5 | xiaosan | | 6 | qiqi | | 7 | hanba | +--------+----------+ 7 rows in set (0.00 sec) mysql> delete from testforde; Query OK, 7 rows affected (0.02 sec) mysql> truncate table testfortr; Query OK, 0 rows affected (0.02 sec) mysql> insert into testforde(name) values('zhagnsan'),('lisi'),('wanger'),('zhaoliu'),('xiaosan'),('qiqi'),('hanba'); Query OK, 7 rows affected (0.00 sec) Records: 7 Duplicates: 0 Warnings: 0 mysql> insert into testfortr(name) values('zhagnsan'),('lisi'),('wanger'),('zhaoliu'),('xiaosan'),('qiqi'),('hanba'); Query OK, 7 rows affected (0.00 sec) Records: 7 Duplicates: 0 Warnings: 0 mysql> select * from testforde; +--------+----------+ | number | name | +--------+----------+ | 8 | zhagnsan | | 9 | lisi | | 10 | wanger | | 11 | zhaoliu | | 12 | xiaosan | | 13 | qiqi | | 14 | hanba | +--------+----------+ 7 rows in set (0.00 sec) mysql> select * from testfortr; +--------+----------+ | number | name | +--------+----------+ | 1 | zhagnsan | | 2 | lisi | | 3 | wanger | | 4 | zhaoliu | | 5 | xiaosan | | 6 | qiqi | | 7 | hanba | +--------+----------+ 7 rows in set (0.00 sec)
從上面操作過(guò)程和結(jié)果不難看出,它們最大的區(qū)別就是delete
在不限定where
條件下清空表的話,不會(huì)重置auto_increment
的值,新插入的會(huì)隨著上次的值接著增加;而truncate
則不然,他會(huì)直接重置為1(其實(shí)這里它做的操作可以理解為直接刪除表結(jié)構(gòu)和內(nèi)容,然后依照表結(jié)構(gòu)重建表)MYSQL教程
那么除了上面能明顯看出來(lái)的區(qū)別之外,他們還存在以下幾點(diǎn)區(qū)別:MYSQL教程
??? 1、truncate
是整個(gè)清空的,而delete是逐行刪除的.相較而言,truncate
效率較高.MYSQL教程
??? 2、在事物處理方面,truncate
可能不會(huì)那么平安.因?yàn)?delete
語(yǔ)句是數(shù)據(jù)庫(kù)操作語(yǔ)言(dml),這個(gè)操作會(huì)放到 rollback segement
中,事務(wù)提交之后才生效;如果有相應(yīng)的 trigger
,執(zhí)行的時(shí)候?qū)⒈挥|發(fā).而 truncate
是數(shù)據(jù)庫(kù)定義語(yǔ)言(ddl),操作立即生效,原數(shù)據(jù)不放到 rollback segment
中,不能回滾,操作不觸發(fā) trigger
.MYSQL教程
??? 3、truncate
只能做清空表使用,而 delete
可以配合 where
,order by
,limit
等字句使用,所以在靈活方面,delete
完勝.MYSQL教程
??? 4、truncate
操作不會(huì)記錄到日志中,而delete
則是記錄的.MYSQL教程
??? 5、正是由于 truncate
操作不會(huì)記錄到日志中,所以它不會(huì)激活觸發(fā)器.所以對(duì)于由 foreign
約束引用的表,不能使用 truncate table
,而應(yīng)使用不帶 where
子句的 delete
語(yǔ)句.MYSQL教程
??? 6、truncate
不能用于參與了索引視圖的表MYSQL教程
總結(jié)MYSQL教程
以上就是MySQL清空數(shù)據(jù)表的全部?jī)?nèi)容了,希望這篇文章的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能有所贊助,如果有疑問(wèn)大家可以留言交流.MYSQL教程
歡迎參與《Mysql應(yīng)用MySQL清空數(shù)據(jù)表的方法實(shí)例與分析》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/11524.html