sql:快速刪除數據庫中所有表中的數據


select 'truncate table ' + Name + ';' from sysobjects where xtype='U' order by name asc;

該條語句執行之后會將數據庫中所有的表都查詢出來,復制出來之后執行truncate語句即可

sysobjects

在數據庫內創建的每個對象(約束、默認值、日志、規則、存儲過程等)在表中占一行。只有在 tempdb 內,每個臨時對象才在該表中占一行。

列名 數據類型 描述
name sysname 對象名。
Id int 對象標識號。
xtype char(2) 對象類型。可以是下列對象類型中的一種:

C = CHECK 約束
D = 默認值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日志
FN = 標量函數
IF = 內嵌表函數
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 復制篩選存儲過程
S = 系統表
TF = 表函數
TR = 觸發器
U = 用戶表
UQ = UNIQUE 約束(類型是 K)
V = 視圖
X = 擴展存儲過程

uid smallint 所有者對象的用戶 ID。
info smallint 保留。僅限內部使用。
status int 保留。僅限內部使用。
base_schema_
ver
int 保留。僅限內部使用。
replinfo int 保留。供復制使用。
parent_obj int 父對象的對象標識號(例如,對於觸發器或約束,該標識號為表 ID)。
crdate datetime 對象的創建日期。
ftcatid smallint 為全文索引注冊的所有用戶表的全文目錄標識符,對於沒有注冊的所有用戶表則為 0。
schema_ver int 版本號,該版本號在每次表的架構更改時都增加。
stats_schema_
ver
int 保留。僅限內部使用。
type char(2) 對象類型。可以是下列值之一:

C = CHECK 約束 
D = 默認值或 DEFAULT 約束
F = FOREIGN KEY 約束 
FN = 標量函數
IF = 內嵌表函數
K = PRIMARY KEY 或 UNIQUE 約束 
L = 日志
P = 存儲過程
R = 規則
RF = 復制篩選存儲過程
S = 系統表 
TF = 表函數
TR = 觸發器
U = 用戶表
V = 視圖
X = 擴展存儲過程

userstat smallint 保留。
sysstat smallint 內部狀態信息。
indexdel smallint 保留。
refdate datetime 留作以后使用。
version int 留作以后使用。
deltrig int 保留。
instrig int 保留。
updtrig int 保留。
seltrig int 保留。
category int 用於發布、約束和標識。
cache smallint 保留。

truncate和不帶where子句的delete, 以及drop都會刪除表內的數據 

不同點: 
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,再重新導入/插入數據 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM