truncatesql語法
1. 如何一個sql語句就刪除表中所有的數據
用SQL語句一次清空所有數據.找到了三種方法進行清空.使用的資料庫為MS SQL SERVER.(表之間不能有外鍵關系)
1.搜索出所有表名,構造為一條SQL語句
declare@trun_namevarchar(8000)
set@trun_name=''
select@trun_name=@trun_name+'truncatetable'+[name]+''fromsysobjectswherextype='U'andstatus>0
exec(@trun_name)
該方法適合表不是非常多的情況,否則表數量過多,超過字元串的長度,不能進行完全清理.
2.利用游標清理所有表
declare@trun_namevarchar(50)
declarename_cursorcursorfor
select'truncatetable'+namefromsysobjectswherextype='U'andstatus>0
openname_cursor
fetchnextfromname_cursorinto@trun_name
while@@FETCH_STATUS=0
begin
exec(@trun_name)
print'truncatedtable'+@trun_name
fetchnextfromname_cursorinto@trun_name
end
closename_cursor
deallocatename_cursor
這是我自己構造的,可以做為存儲過程調用, 能夠一次清空所有表的數據,並且還可以進行有選擇的清空表.
3.利用微軟未公開的存儲過程(前提是使用sql server 2005以上版本)
execsp_msforeachtable"truncatetable?"
--刪除當前資料庫所有表中的數據sp_MSforeachtable@command1='Deletefrom?'sp_MSforeachtable@command1="TRUNCATETABLE?"
該方法可以一次清空所有表,但不能加過濾條件.
引:csdn,blog.csdn.net/feiji323/article/details/5669775
2. 關於SQL刪除語句TRUNCATE和DELETE
TRUNCATE 是將你的表初始化。假如現在你的表中有10條數據,現在TRUNCATE TABLE 的話,就會將表還原為你最初剛創建好時的狀態。表剛創建好時肯定是沒有任何數據。因此數據就都沒有了。DELETE TABLE雖然也將你表中的數據清除,但是在你的事務日誌文件(LDF)里,還會有相應的記錄。沒有徹底刪除。並且DELETE TABLE 還可以刪除指定列,比如我想刪除ID為1的列。就可以寫: delete 表名 where id=1 都是自己寫的,希望對你有幫助!、、
3. 用SQL語句怎麼刪除表中的所有數據
從一個表中刪除數據,使用DELETE語句。從表中刪除所有行
DELETE FROMtable_name;
或DELETE * FROMtable_name;
或DELETE FROM Customers
WHERE cust_id = '10000006';
DELETE不需要列名和通配符,它是刪除整行而不是刪除列,要刪除指定的列,請使用update語句;並且DELETE語句從表中刪除行,甚至是刪除表中所有行,而不是刪除表本身。
如果想刪除表中的所有行,可以使用TRUNCATE TABLE語句,完成相同的工作,而速度更快。
(3)truncatesql語法擴展閱讀
drop直接刪掉表。
truncate刪除的是表中的數據,再插入數據時自增長的數據id又重新從1開始。
delete刪除表中數據,可以在後面添加where字句
(1)DELETE語句執行刪除操作的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中保存以便進行進行回滾操作。TRUNCATE TABLE 則一次性地從表中刪除所有的數據並不把單獨的刪除操作記錄記入日誌保存,刪除行是不能恢復的。並且在刪除的過程中不會激活與表有關的刪除觸發器。執行速度快。
(2) 表和索引所佔空間。當表被TRUNCATE 後,這個表和索引所佔用的空間會恢復到初始大小,而DELETE操作不會減少表或索引所佔用的空間。drop語句將表所佔用的空間全釋放掉。
(3) 一般而言,drop > truncate > delete
(4) 應用范圍。TRUNCATE 只能對TABLE;DELETE可以是table和view
(5) TRUNCATE 和DELETE只刪除數據,而DROP則刪除整個表(結構和數據)。
(6) truncate與不帶where的delete :只刪除數據,而不刪除表的結構(定義)drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger)索引(index);依賴於該表的存儲過程/函數將被保留,但其狀態會變為:invalid。
4. sql語句中刪除表數據drop、truncate和delete的用法
雖然綠色資源網小編不建議大家去用命令刪除資料庫表中的東西,但是這些刪除命令總有用的著的地方。
說到刪除表數據的關鍵字,大家記得最多的可能就是delete了
然而我們做資料庫開發,讀取資料庫數據.對另外的兩兄弟用得就比較少了
現在來介紹另外兩個兄弟,都是刪除表數據的,其實也是很容易理解的
老大------drop
出沒場合:drop
table
tb
--tb表示數據表的名字,下同
絕招:刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增數據是不可能的,除非新增一個表,
例如:一個班就是一個表,學生就是表中的數據,學生的職務就是定義
drop
table
class,就是把整個班移除.學生和職務都消失
比如下面TestSchool資料庫中有兩張表[Classes]表和[Teacher]表
當執行下面代碼之後
Classes表就被清楚,一干二凈!
刪除得非常暴力,作為老大實至名歸
老二-----truncate
出沒場合:truncate
table
tb
絕招:刪除內容、釋放空間但不刪除定義。與drop不同的是,他只是清空表數據而已,他比較溫柔.
同樣也是一個班,他只去除所有的學生.班還在,職務還在,如果有新增的學生可以進去,也可以分配上職務
刪除內容很容易理解,不刪除定義也很容易理解,就是保留表的數據結構
上圖就表現了:刪除內容
執行語句之後,發現數據表的結構還在,也就是不刪除定義
至於釋放空間,看下下面兩幅圖.你們就會明白的
右圖:Id列標識列,因之前delete過行數據,所以會出現標識列不連續(體現了delete刪除是不釋放空間的)
經過truncate
table
Teacher
之後
再新增三條數據
右圖:同樣Id是標識列,發現插入數據的時候,標識列連續了(體現了truncate刪除是釋放空間)
注意:truncate
不能刪除行數據,要刪就要把表清空
老三-----delete
出沒場合:delete
table
tb
--雖然也是刪除整個表的數據,但是過程是痛苦的(系統一行一行地刪,效率較truncate低)
或
delete
table
tb
where
條件
絕招:刪除內容不刪除定義,不釋放空間。三兄弟之中最容易欺負的一個
然後關於delete的就不詳細說明了,大家都懂的
關於truncate的小小總結:
truncate
table
在功能上與不帶
WHERE
子句的
delete語句相同:二者均刪除表中的全部行。
但
truncate
比
delete速度快,且使用的系統和事務日誌資源少。
delete
語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。所以可以對delete操作進行roll
back
1、truncate
在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete將被撤銷,而
truncate
則不會被撤銷。
2、truncate
是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對
truncate
使用ROLLBACK命令。
3、truncate
將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過
truncate
操作後的表比Delete操作後的表要快得多。
4、truncate
不能觸發任何Delete觸發器。
5、當表被清空後表和表的索引講重新設置成初始大小,而delete則不能。
6、不能清空父表
5. sql 刪除語句
1、delete 語句用於刪除表中的行。delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中保存
語法:DELETE FROM 表名稱 WHERE 列名稱 = 值,
如:刪除student表中姓名為張三豐的學生信息-delete from studentwhere name=『張三豐』;
2、drop (刪除表):刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增數據是不可能的,除非新增一個表。
drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger)索引(index);依賴於該表的存儲過程/函數將被保留,但其狀態會變為:invalid。
3、truncate (清空表中的數據):刪除內容、釋放空間但不刪除定義(保留表的數據結構)。與drop不同的是,只是清空表數據而已。
注意:truncate 不能刪除行數據,要刪就要把表清空。
(5)truncatesql語法擴展閱讀:
資料庫操作中,經常要用到刪除表和刪除表數據,在實際應用中,三者的區別是明確的。
當你不再需要該表時, 用 drop;
當你仍要保留該表,但要刪除所有記錄時, 用 truncate;
當你要刪除部分記錄時(always with a WHERE clause), 用 delete。
truncate 與delete 比較:
1、truncate table 在功能上與不帶 WHERE 子句的 delete語句相同:二者均刪除表中的全部行。
2、truncate 比 delete速度快,且使用的系統和事務日誌資源少。
3、truncate 操作後的表比Delete操作後的表要快得多。
6. sql中truncate是什麼語句
truncate刪除表中的所有數據。
7. SQL的幾個刪除語句
TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。
DELETE 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 DELETE。如果要刪除表定義及其數據,請使用 DROP TABLE 語句。
對於由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由於 TRUNCATE TABLE 不記錄在日誌中,所以它不能激活觸發器。
TRUNCATE TABLE 不能用於參與了索引視圖的表。
8. sql語句中刪除表數據drop,truncate和delete的區別
drop table xx --xx是數據表的名字
作用:刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增數據是不可能的,除非新增一個表。
drop table test,就是把整個表 移除.裡面的數據都消失
比如下面有一個[FusionChartsDB]資料庫中的test表。
執行 drop table FC_Procts後,FC_Procts刪除的一干二凈。
truncate table xx
作用:刪除內容、釋放空間但不刪除定義。與drop不同的是,他只是清空表數據而已,不刪除表結構。
如下 test表有數據。
執行 truncate table test 後,內容被刪除 表結構還在。
truncate 釋放空間的體現。truncate table test 後 向test表添加數據,id標識列連續了(體現了truncate刪除是釋放空間)
用delete刪除 數據,然後添加。可以看到添加之後id標識不連續。(說明delete刪除不釋放空間)
delete table xx
作用:也是刪除整個表的數據,但是過程是痛苦的(系統一行一行地刪,效率較truncate低) 或delete table tb where 條件
刪除內容不刪除定義,不釋放空間。
truncate 與delete 比較:
truncate table 在功能上與不帶 WHERE 子句的 delete語句相同:二者均刪除表中的全部行。
truncate 比 delete速度快,且使用的系統和事務日誌資源少。
truncate 操作後的表比Delete操作後的表要快得多。
當表被清空後表和表的索引講重新設置成初始大小,而delete則不能。
9. sql server語句中delete和truncate的區別
相同點:
1.truncate和不帶where子句的delete、以及drop都會刪除表內的數據。
2.drop、truncate都是DDL語句(數據定義語言),執行後會自動提交。
不同點:
1. truncate 和 delete 只刪除數據不刪除表的結構(定義)
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,再重新導入/插入數據。
6.delete是DML語句,不會自動提交。drop/truncate都是DDL語句,執行後會自動提交。
7、TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。DELETE 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放。
8、TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 DELETE。如果要刪除表定義及其數據,請使用 DROP TABLE 語句。
9、對於由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由於 TRUNCATE TABLE 不記錄在日誌中,所以它不能激活觸發器。
10、TRUNCATE TABLE 不能用於參與了索引視圖的表。
資料來源於:
www.cnblogs.com/8765h/archive/2011/11/25/2374167.html
10. sql truncate table 怎麼用
1、考慮CUSTOMERS表具有以下記錄:
2、以下是例子截斷:
SQL > TRUNCATE TABLE CUSTOMERS;
現在,CUSTOMERS表將被截斷,並以下是來自SELECT語句的輸出:
SQL> SELECT * FROM CUSTOMERS;Empty set (0.00 sec).