table的table屬性為什麼不顯示?相同點TRUNCATE TABLE和DELETE都可以删除整個數據庫表的記錄,今天小編就來聊一聊關于table的table屬性為什麼不顯示?接下來我們就一起去研究一下吧!
table的table屬性為什麼不顯示
相同點
TRUNCATE TABLE和DELETE都可以删除整個數據庫表的記錄
不同點
- DELETE
- DML語言
- 可以回退
- 可以有條件的删除
- DELETE FROM 表名 WHERE 條件
- TRUNCATE TABLE
- DDL語言
- 無法回退
- 默認所有的表内容都删除
- 删除速度比delete快
- TRUNCATE TABLE 表名
- DROP TABLE
- 用于删除表(表的結構、屬性以及索引也會被删除);
- DROP TABLE 表名
原理
DDL(Data Definition Language)數據定義語言,DML(Data Manipulation Language)數據操作語言。
- TRUNCATE在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete将被撤銷,而TRUNCATE則不會被撤銷。
- TRUNCATE是一個DDL語言,向其他所有的DDL語言一樣,他将被隐式提交,不能對TRUNCATE使用ROLLBACK命令。
- TRUNCATE将重新設置高水平線和所有的索引。在對整個表和索引進行完全浏覽時,經過TRUNCATE操作後的表比Delete操作後的表要快得多。
- TRUNCATE不能觸發任何Delete觸發器。
- 當表被清空後表和表的索引講重新設置成初始大小,而delete則不能。
- 不能清空父表。
優化
在數據庫裡,使用delete删除數據以後,數據庫的存儲容量不會減少,而且使用delete删除某個表的數據以後,查詢這張表的速度和删除之前一樣,不會發生變化。
因為數據庫有一個HWM高水位,它是oracle的一個表使用空間最高水位線。當插入了數據以後,高水位線就會上漲,但是如果你采用delete語句删除數據的話,數據雖然被删除了,但是高水位線卻沒有降低,還是你剛才删除數據以前那麼高的水位。除非使用truncate删除數據。那麼,這條高水位線在日常的增删操作中隻會上漲,不會下跌,所以數據庫容量也隻會上升,不會下降。而使用select語句查詢數據時,數據庫會掃描高水位線以下的數據塊,因為高水位線沒有變化,所以掃描的時間不會減少,所以才會出現使用delete删除數據以後,查詢的速度還是和delete以前一樣。
,