成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Delete、Drop、Truncate有什么區別?你知道嗎?

數據庫 MySQL
在 InnoDB 引擎中,delete 操作并不是真的把數據刪除掉了,而是給數據打上刪除標記,標記為刪除狀態,這一點我們可以通過將 MySQL 設置為非自動提交模式,來測試驗證一下。

在 MySQL 中,刪除的方法總共有 3 種:delete、truncate、drop,而三者的用法和使用場景又完全不同,接下來我們具體來看。

1.delete

detele 可用于刪除表的部分或所有數據,它的使用語法如下:

PS:[] 中的命令為可選命令,可以被省略。

如果我們要刪除學生表中數學成績排名最高的前 3 位學生,可以使用以下 SQL:

delete from table_name [where...] [order by...] [limit...]

1.1 delete 實現原理

在 InnoDB 引擎中,delete 操作并不是真的把數據刪除掉了,而是給數據打上刪除標記,標記為刪除狀態,這一點我們可以通過將 MySQL 設置為非自動提交模式,來測試驗證一下。非自動提交模式的設置 SQL 如下:

delete from student order by math desc limit 3;

之后先將一個數據 delete 刪除掉,然后再使用 rollback 回滾操作,最后驗證一下我們之前刪除的數據是否還存在,如果數據還存在就說明 delete 并不是真的將數據刪除掉了,只是標識數據為刪除狀態而已,驗證 SQL 和執行結果如下圖所示:

圖片

1.2 關于自增列

在 InnoDB 引擎中,使用了 delete 刪除所有的數據之后,并不會重置自增列為初始值,我們可以通過以下命令來驗證一下:

圖片

2.truncate

truncate 執行效果和 delete 類似,也是用來刪除表中的所有行數據的,它的使用語法如下:

truncate [table] table_name

truncate 在使用上和 delete 最大的區別是,delete 可以使用條件表達式刪除部分數據,而 truncate 不能加條件表達式,所以它只能刪除所有的行數據,比如以下 truncate 添加了 where 命令之后就會報錯:

圖片

2.1 truncate 實現原理

truncate 看似只刪除了行數據,但它卻是 DDL 語句,也就是 Data Definition Language 數據定義語言,它是用來維護存儲數據的結構指令,所以這點也是和 delete 命令是不同的,delete 語句屬于 DML,Data Manipulation Language 數據操縱語言,用來對數據進行操作的。為什么 truncate 只是刪除了行數據,沒有刪除列數據(字段和索引等數據)卻是 DDL 語言呢?這是因為 truncate 本質上是新建了一個表結構,再把原先的表刪除掉,所以它屬于 DDL 語言,而非 DML 語言。

2.2 重置自增列

truncate 在 InnoDB 引擎中會重置自增列,如下命令所示:

圖片

3.drop

drop 和前兩個命令只刪除表的行數據不同,drop 會把整張表的行數據和表結構一起刪除掉,它的語法如下:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [,tbl_name]

其中 TEMPORARY 是臨時表的意思,一般情況下此命令都會被忽略。

drop 使用示例如下:

圖片

三者的區別

數據恢復方面:delete 可以恢復刪除的數據,而 truncate 和 drop 不能恢復刪除的數據。

執行速度方面:drop > truncate > delete。

刪除數據方面:drop 是刪除整張表,包含行數據和字段、索引等數據,而 truncate 和 drop 只刪除了行數據。

添加條件方面:delete 可以使用 where 表達式添加查詢條件,而 truncate 和 drop 不能添加 where 查詢條件。

重置自增列方面:在 InnoDB 引擎中,truncate 可以重置自增列,而 delete 不能重置自增列。

總結

delete、truncate 可用于刪除表中的行數據,而 drop 是把整張表全部刪除了,刪除的數據包含所有行數據和字段、索引等數據,其中 delete 刪除的數據可以被恢復,而 truncate 和 drop 是不可恢復的,但在執行效率上,后兩種刪除方式又有很大的優勢,所以要根據實際場景來選擇相應的刪除命令,當然 truncate 和 drop 這些不可恢復數據的刪除方式使用的時候也要小心。

責任編輯:武曉燕 來源: Java面試真題解析
相關推薦

2024-05-27 00:00:00

localhostIPv6IPv4

2022-03-13 18:53:31

interfacetypeTypeScript

2021-02-06 21:57:40

Debug模式Release

2022-08-26 01:41:42

GPUCPU架構

2022-06-20 07:44:22

truncatedeletedrop

2021-07-27 08:02:45

DTO 軟件Pojo

2024-10-22 17:04:31

2023-04-26 10:21:04

2023-12-07 07:08:09

Angular函數

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

2018-10-26 10:41:06

ApacheNginx服務器

2020-10-21 10:30:24

deletetruncatedrop

2024-03-26 00:10:08

預測AI泛化

2024-10-22 09:59:36

虛擬化容器化系統

2025-02-18 08:11:17

2022-11-28 00:04:17

2024-01-15 12:16:37

2024-07-30 08:22:47

API前端網關

2024-08-20 08:29:55

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产区免费视频 | 91在线网站 | www.99热这里只有精品 | 91精品久久久久久久久久入口 | 81精品国产乱码久久久久久 | 欧美网站一区二区 | 久草免费电影 | 欧美日韩亚洲视频 | 精品亚洲一区二区三区 | 精品中文在线 | 超碰日本| 久久99国产精一区二区三区 | 免费看爱爱视频 | 天色综合网| 日韩在线一区视频 | 日韩亚洲一区二区 | 欧美国产一区二区 | 国产一区二区三区四区区 | 一区二区在线免费观看视频 | 亚洲精品在线视频 | 精品视频999 | 久久99精品国产99久久6男男 | 国产精品一区二区福利视频 | 天天躁日日躁xxxxaaaa | 97国产成人 | 黄色骚片 | 欧美区日韩区 | 国产精品视频一区二区三区 | 日产精品久久久一区二区福利 | 久久久久一区二区三区四区 | 国产精品亚洲一区二区三区在线 | 美女爽到呻吟久久久久 | 99精品久久 | 福利国产| 亚洲欧美精品国产一级在线 | 毛片一区 | 精品久久国产 | 伊人久久伊人 | 日韩视频在线播放 | 在线观看av免费 | 久久久精品视频一区二区三区 |