當前位置:首頁 » 編程語言 » sql刪除一個表並將空間釋放掉
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql刪除一個表並將空間釋放掉

發布時間: 2023-05-17 05:38:43

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、不能清空父表

㈡ MySQL中刪除表後如何釋放硬碟空間

使用: truncate table tablename DROP STORAGE;
解釋: 直接刪除表,並且釋放存儲空間。truncate的意思是清空表數據, 「DROP STORAGE」是釋放存儲空間。

㈢ oracle 在刪除表,表空間,用戶時 如何釋放磁碟空間

oracle刪除表,釋放表空間,需要通過truncate table xx,然後drop table xxx 來釋放,或者直接通過 drop table xxx purge;

示例如下:

1、創建測試表,

create table test_space(id number, name varchar2(20));

㈣ 用SQL語句怎麼刪除表中的所有數據

從一個表中刪除數據,使用DELETE語句。從表中刪除所有行

DELETE FROMtable_name;

或DELETE * FROMtable_name;

或DELETE FROM Customers

WHERE cust_id = '10000006';

DELETE不需要列名和通配符,它是刪除整行而不是刪除列,要刪除指定的列,請使用update語句;並且DELETE語句從表中刪除行,甚至是刪除表中所有行,而不是刪除表本身。

如果想刪除表中的所有行,可以使用TRUNCATE TABLE語句,完成相同的工作,而速度更快。

(4)sql刪除一個表並將空間釋放掉擴展閱讀

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。

㈤ 如何用SQL語言刪除一個表

DROP命令。

1、drop table xx --xx是數據表的名字

作用:刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增數據是不可能的,除非新增一個表。

2、 drop table test,就是把整個表 移除.裡面的數據都消失

比如下面有一個[FusionChartsDB]資料庫中的test表。