資料庫中刪除語句drop、delete、truncate的相同點和不同點的比較
用法:
delete:用於刪除表中的行(注:可以刪除某一行;也可以在不刪除表的情況下(即意味著表的結構、屬性、索引完整)刪除所有行)
語法:刪除某一行:delete from 表名稱 where 列名稱=值
刪除所有行: delete from 表名稱 或 delete * from 表名稱,實際是一行一行的刪。
drop:用於刪除表(注:將表的結構、屬性、索引也會被刪除。)
truncate:用於刪除表內的資料(注:僅刪除表內的資料,不刪除表本身,相當於delete語句不寫where子句一樣,效率高於delete)
語法:truncate table 表名稱
資料庫中刪除語句的相同點和不同點的比較:
相同點:
1.truncate和不帶where子句的delete,以及drop都能刪除表內的資料
2.truncate和delete只刪除表資料保留表結構
不同點:
1.truncate table tablename
刪除表內容釋放表空間保留表結構(即:只刪除表內的資料,不刪除表本身。相當於delete語句不寫where子句一樣),不使用事務處理即和事務無關
truncate 語句預設情況下將空間釋放到 minextents個 extent,
除非使用reuse storage;truncate 會將高水線復位(回到最開始)。
2.delete table tablename [where子句]
delete屬於資料操作語言(dml),不能自動提交事務,需commit提交
這個操作會放到 rollback segement 中,事務提交之後才生效;
如果有相應的 trigger,執行的時候將被觸發。
delete 語句不影響表所占用的 extent,高水線(high watermark)保持原位置不動
3.drop table tablename
drop屬於資料定義語言(ddl)可以自動提交事務;
drop 語句將刪除表的結構被依賴的約束(constrain)、觸發器(trigger)、索引(index)【刪除表資料同時刪除表結構】;
依賴於該錶的儲存過程/函式將保留,但是變為 invalid 狀態。
drop 語句將表所占用的空間全部釋放。
刪除資料的速度,一般來說: drop> truncate > delete
使用場合:
當你不再需要該錶時, 用 drop;
當你仍要保留該錶,但要刪除所有記錄時, 用 truncate;
當你要刪除部分記錄時(always with a where clause), 用 delete.
注意: 對於有主外來鍵關係的表,不能使用truncate而應該使用不帶where子句的delete語句,由於truncate不記錄在日誌中,不能夠啟用觸發器
資料庫刪除操作
最近找工作,記錄下面試當中遇到的一些問題吧,都是很基礎的,但是當時自己就是想不起來,所以重新學習記錄下吧!資料庫刪除操作的實現主要有三個關鍵字drop truncate delete,這三者使用效果不同,使用場景也不同 1 drop 如果需要刪除資料庫中某一張表時,可以執行drop table ta...
MySQL資料庫刪除操作
刪除資料庫 drop database if exists 資料庫名 例如 刪除school資料庫 if exists 為可選,判斷是否存在,如果不存在則會丟擲異常 刪除資料表 drop table if exists 表名 例如 刪除student表 注意 刪除具有主外來鍵關係的表時,要先刪子表 ...
資料庫插入 更新 刪除操作
1.插入資料 1 為表中的所有的字段插入資料 insert into 表名稱 欄位1,欄位2,欄位3.vaues 值1,值2,值3.括號內為根據所建立的字段型別逐一進行插入,逐一在給字元型別資料插入的時候,使用單引號 2 為表的指定指端插入資料 insert into 表名稱 指定欄位1,指定欄位2...