一、sql清除表中數據,表結構為什么還在
一般的數據庫原理是將表結構作為元數據單獨存放的,而表實際存儲的數據是放在另外一個地方,數據庫系統保存兩者的對應關系。這樣就能用sql語句查詢到對應的數據,一般清空數據和刪除表是分開的兩個操作。
就ORACLE數據庫,簡單的來說
清除數據你可能用的是delete或者truncate來,而不是drop,drop是直接刪除表,delete和truncate是刪除表中的數據
比如delete:
delete from a 此法是刪除表a中的數據,一條一條刪除的;
truncate table a 此法也是刪除表a中的數據,但是不是一條一條的刪;
drop table a 此法是直接刪除表a,包括表中的數據及數據結構。
延伸閱讀:
二、SQL TRUNCATE TABLE清空表語句
SQL TRUNCATE TABLE 語句用來刪除表中的所有記錄,也即清空表,它類似于不帶 WHERE 子句的 DELETE FROM 語句。
TRUNCATE TABLE 和?DROP TABLE
DROP TABLE 用來刪除表,包括刪除該表的數據、結構、索引、觸發器、約束等所有信息。一旦使用?DROP TABLE 刪除了表,則該表的所有信息都將丟失,該表再也無法使用了。如果您希望存儲一些數據,就只能重新創建該表。
TRUNCATE TABLE 僅僅刪除表的所有記錄,表的結構、索引、觸發器、約束等將被保留,后續仍然可以使用該表。
TRUNCATE TABLE 和 DELETE FROM
不帶 WHERE 子句的?DELETE FROM 語句同樣可以達到清空表的效果,但是?TRUNCATE TABLE 使用的系統資源和日志資源更少,因此比?DELETE FROM 更加快速。
DELETE FROM 語句每刪除一行,都會在事務日志中為所刪除的行記錄一項。TRUNCATE TABLE 通過釋放表中數據所用的數據頁來刪除數據,只會在事務日志中記錄頁的釋放。
此外,TRUNCATE TABLE 還能重置具有自動遞增(AUTO_INCREMENT)屬性的字段,而 DELETE FROM 卻不具備該功能。
總結
當您不再需要該表時,使用 DROP TABLE;當您仍要保留該表,只是想刪除所有記錄時,使用 TRUNCATE TABLE;當你要刪除部分記錄時,使用帶有 WHERE 子句的 DELETE FROM。