1. 程式人生 > >mysql語句中的Delete、Drop、Ttuncate的區別

mysql語句中的Delete、Drop、Ttuncate的區別

1. truncatedelete只刪除資料不刪除表的結構(定義) 
drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的 
儲存過程/函式將保留,但是變為invalid狀態. 
2.delete語句是dml,這個操作會放到rollback segement中,事務提交之後才生效;如果有相應的trigger, 
執行的時候將被觸發. 
truncate,drop是ddl, 操作立即生效,原資料不放到rollback segment中,不能回滾. 操作不觸發 
trigger. 
3.delete語句不影響表所佔用的extent, 高水線(high watermark)保持原位置不動 
顯然drop語句將表所佔用的空間全部釋放 
truncate
語句預設情況下見空間釋放到 minextents個 extent,除非使用reuse storage; truncate 會將高水線復位(回到最開始). 4.速度,一般來說: drop> truncate > delete 5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及. 使用上,想刪除部分資料行用delete,注意帶上where子句. 回滾段要足夠大. 想刪除表,當然用drop 想保留表而將所有資料刪除. 如果和事務無關,用truncate即可. 如果和事務有關,或者想觸發trigger,還 是用delete.

如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新匯入/插入資料/

總結:

DROP用於刪除表,資料庫等.
TRUNCATE和DELETE都是刪除表資料.
但是TRUNCATE相當於初始化,比如如果有自增長ID,用TRUNCATE刪除後,自增長Id會從1開始,(truncat會釋放表所佔的空間)
而delete則不會.

相關推薦

sql語句刪除表 droptruncate和delete的用法

drop table xx --xx是資料表的名字 作用:刪除內容和定義,釋放空間. 後果:整個表刪除,內容被刪除 truncate table xx 作用:刪除內容,釋放空間但不刪除定義.與drop不同的是隻清空表資料,不刪除表結構 注意:不可刪除行資料,只能全表刪除

mysql語句DeleteDropTtuncate區別

1. truncate和 delete只刪除資料不刪除表的結構(定義) drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的

MySQL語句 LEFT JOIN INNER JOIN RIGHT JOIN 區別

今天遇見一個吭,許是我沒有理解清楚三者之間的聯絡。 不多說,直接上程式碼: MySQL查詢語句: SELECT u.* FROM tb_active_user AS u LEFT JOIN tb_active_team AS t ON t.user_id = #{use

SQL語句有關單引號雙引號和加號的問題

類型 OS clas 條件 分析 student 條件查詢 log div 字符串數據是用單引號包在外面的,而+號只是用來連接這些字符串的. 數據庫裏的字段是整型的時候不要加單引號,是字符串的時候要加,其它類型根據實際情況來,雙引號就是用來拼接字符串的,單引號是sql文的固

機房收費系統之收取金額查詢(TPicker控制元件時間段取值SQL語句單引號與雙引號區別

        收取金額查詢窗體較組合查詢而言就是小菜一碟,但即便是內容較少也有其精華之處,現在分享一下我的學習過程吧^_^ 一、收取金額查詢窗體的流程圖: 二、問題集 這是什麼錯誤呢,為什麼會出現這個型別的錯誤? 產生此問題的程式碼部分是什麼樣子的呢? 以

TruncateDropDelete區別與用法

SQL語句中刪除資料的幾種方式 今日在刪除資料時,發現除了常用的Delete & Drop語句之外,還有Truncate也是與刪除資料相關的,針對上述三種有進行簡單的比較與整理 1)從刪除機制上來看 把table當作黑板,資料當作黑板上的文字 Delete:逐行刪除資料

MySQL/InnoDB,樂觀鎖悲觀鎖共享鎖排它鎖行鎖表鎖死鎖概念的理解

MySQL/InnoDB的加鎖,一直是一個面試中常問的話題。例如,資料庫如果有高併發請求,如何保證資料完整性?產生死鎖問題如何排查並解決?我在工作過程中,也會經常用到,樂觀鎖,排它鎖,等。於是今天就對這幾個概念進行學習,屢屢思路,記錄一下。 注:MySQL是一

用java實現對MySql資料庫資料的讀取插入修改和刪除

目標: 1、實現eclipse同資料庫的連線 2、在eclipse中用java實現對資料庫的控制 初學java和資料庫,本文是參考這篇文章的思路的學習筆記,程式碼實現了將4個控制函式(讀取、插入、修改和刪除)分別寫成4個靜態方法呼叫。 1. 關於java和MySQL的連

SQL語句的左連線右連線交叉連線全外連線

第一部分、連線查詢一、內連線內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的列值。內連線分三種:1、等值連線:在連線條件中使用等於號(=)運算子比較被連線列的列值,其查詢結果中列出被連線表中的所有列,包括其中的重複列。2、不等連線:在連線條件使用除等於運算子以外的其它比較運算子比較被連

MySql語句select可以嵌套麽,字段的重命名可以用中文麽

ply 描述 查詢 select get targe http 查詢語句 字段 今天文檔中看到的查詢語句,SELECT後面又跟了一個SELECT嵌套,而且把字段重命名為中文,請問可以這樣做麽

pandas 處理缺失值[dropnadropfillna]

面對缺失值三種處理方法: option 1: 去掉含有缺失值的樣本(行) option 2:將含有缺失值的列(特徵向量)去掉 option 3:將缺失值用某些值填充(0,平均值,中值等) 對於dro

mysql 語句 sum函式求和 null 變 0

在SQL語句中使用集合函式count(),返回結果肯定為非負整數,這也是用來判斷資料有無的一個很有效的方法; 然後在用sum()進行集合相加的時候,如果sum()的物件沒有記錄,那麼不會返回0,而返回null,這麼做,不會影響資料庫,因為數值型欄位也是可以存放NULL的,因

mysql 語句帶變數

select  CONCAT("old_",@a:[email protected]+1)  aaa from sss 以下內容轉載 在專案開發過程中用到hibernate的createSQLQuery,報如下錯誤: org.hibernate.Query

MySQL 語句執行優先順序——and比or高

轉:   MySQL 語句中執行優先順序——and比or高 2017年04月20日 13:33:03 十步行 閱讀數:7381   MySQL中,AND的執行優先順序高於OR。也就是說,在沒有小括號()的干預下,總是先執行AND語句,再執行O

使用Map集合,PreparedStatement 介面對 MySQL 語句的?佔位符進行設定

使用?佔位符的原因:Statement不安全,存在SQL注入防風險! 涉及知識點:Map集合,PreparedStatement 介面,MySQL資料庫,ResultSet結果集 使用方法: 博主是用的是 eclipse Jee IDE,使用MySQL需要在 .....\工程名\We

MySql語句Union和join的用法

一直以來,對於資料庫SQL方面都是半吊子水平,能寫一些基本的增刪改查的語句,大部分時間都是用下Where,偶爾用用Order By、Limit,Like什麼的。連表查詢也是一些很簡單的使用。至於那些高階用法,都還給老師了。最近接騰訊的IDIP的SDK,需要查詢一些遊戲資料,發

MySQL語句有IFNULL , 查詢結果返回是亂碼 [[email protected]類的結果

問題描述:根據開發反饋由於應用查詢MySQL資料庫的資料,有部分數值出現亂碼,如下圖所示。整條sql在資料庫中查詢沒有出現這種亂碼情況。在資料庫中查詢亂碼兩個欄位是如下的結果:開始進行分析問題是什麼原因造成亂碼問題:1、首先資料庫查詢結果沒有問題,那麼從應用端開始查。找到相應

Oracle 12C 新特性之表分割槽帶非同步全域性索引非同步維護(一次addtruncatedropspiltmerge多個分割槽)

實驗準備: -- 建立實驗表 CREATE TABLE p_andy (ID number(10), NAME varchar2(40)) PARTITION BY RANGE (id) (PARTITION p1 VALUES LESS THAN (10), PARTITION p2 VALUES LES

sqldeletedrop ,truncate三者的區別

sql中delete,drop ,truncate都代表刪除,但3者又有一些區別   1. truncate和 delete只刪除資料不刪除表的結構(定義) drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於

MYSQL語句執行擷取資料SUBSTRING

SELECT SUBSTRING(CardID, -3) FROM users 取CardID欄位後三位字元   SELECT SUBSTRING(CardID, 3) FROM users