MYSQL清空表和截斷表問題
MYSQL清空表和截斷表
清空表和截斷表
清空表:delete from users;
清空表只是清空表中的邏輯數(shù)據(jù),但是物理數(shù)據(jù)不清除,如主鍵值、索引等不被清除,還是原來的值。
截斷表:truncate table users;
截斷表可以用于刪除表中 的所有數(shù)據(jù)。截斷表命令還會回收所有索引的分配頁。
截斷表的執(zhí)行速度與不帶where子句的delete(刪除)命令相同,甚至比它還要快。
delete(刪除)一次刪除一行數(shù)據(jù),并且將每一行被刪除的數(shù)據(jù)都作為一個事務(wù)記錄日志;而truncate (截斷)表則回收整個數(shù)據(jù)頁,只記錄很少的日志項。delete(刪除)和truncate(截斷)都會回收被數(shù)據(jù)占用的空間,以及相關(guān)的索引。只有表的 擁有者可以截斷表。
另外,truncate表之后,如果有自動主鍵的話,會恢復(fù)成默認(rèn)值。
MYSQL清空表數(shù)據(jù)的注意事項
清空表數(shù)據(jù) 可用的兩種操作:
delete from 表名; truncate table 表名;
兩者比較
不帶where參數(shù)的delete語句可以刪除mysql表中所有內(nèi)容,使用truncate table也可以清空mysql表中所有內(nèi)容。
效率上truncate比delete快,但truncate刪除后不記錄mysql日志,不可以恢復(fù)數(shù)據(jù)。
delete的效果有點像將mysql表中所有記錄一條一條刪除到刪完,而truncate相當(dāng)于保留mysql表的結(jié)構(gòu),重新創(chuàng)建了這個表,所有的狀態(tài)都相當(dāng)于新表。
我在用delete from 進(jìn)行刪除時發(fā)現(xiàn)報錯了,說時safe updae 模式什么的,后來查看其他小伙伴的博客,發(fā)現(xiàn)了解決辦法:
只需執(zhí)行 SET SQL_SAFE_UPDATES = 0; 即可。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- MySQL數(shù)據(jù)庫高級操作實戰(zhàn)(克隆表、清空表、創(chuàng)建臨時表及約束)
- MySQL中如何清空表數(shù)據(jù)
- MySQL刪除表數(shù)據(jù)與MySQL清空表命令的3種方法淺析
- mysql清空表數(shù)據(jù)的兩種方式和區(qū)別解析
- MySQL查看表和清空表的常用命令總結(jié)
- MySQL刪除表操作實現(xiàn)(delete、truncate、drop的區(qū)別)
- mysql 刪除操作(delete+TRUNCATE)
- MySQL刪除數(shù)據(jù)Delete與Truncate語句使用比較
- Mysql清空表數(shù)據(jù)庫命令truncate和delete詳解
相關(guān)文章
centos 6.5下 mysql-community-server. 5.7.18-1.el6安裝
這篇文章主要介紹了centos 6.5下 mysql-community-server. 5.7.18-1.el6安裝,需要的朋友可以參考下2017-04-04navicat 連接數(shù)據(jù)庫隔段時間后自動斷開連接的解決方案
這篇文章主要介紹了navicat 連接數(shù)據(jù)庫隔段時間后自動斷開連接的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12mysql中distinct和group?by的區(qū)別淺析
distinct簡單來說就是用來去重的,而group by的設(shè)計目的則是用來聚合統(tǒng)計的,兩者在能夠?qū)崿F(xiàn)的功能上有些相同之處,但應(yīng)該仔細(xì)區(qū)分,下面這篇文章主要給大家介紹了關(guān)于mysql中distinct和group?by區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-05-05mariadb集群搭建---Galera Cluster+ProxySQL教程
這篇文章主要介紹了mariadb集群搭建---Galera Cluster+ProxySQL教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03