最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL刪除數(shù)據(jù)用法及區(qū)別詳解(DELETE、TRUNCATE?和?DROP)

 更新時(shí)間:2025年11月14日 08:25:11   作者:wdwc2  
MySQL中刪除數(shù)據(jù)表是非常容易操作的, 但是你再進(jìn)行刪除表操作時(shí)要非常小心,因?yàn)閳?zhí)行刪除命令后所有數(shù)據(jù)都會(huì)消失,這篇文章主要介紹了MySQL刪除數(shù)據(jù)用法及區(qū)別(DELETE、TRUNCATE?和?DROP)的相關(guān)資料,需要的朋友可以參考下

一、前言

在 MySQL 中,可以使用 DELETE、TRUNCATEDROP 語(yǔ)句來(lái)刪除數(shù)據(jù)。這三者雖然都能達(dá)到刪除數(shù)據(jù)的效果,但它們的作用范圍、執(zhí)行效率以及數(shù)據(jù)恢復(fù)能力存在差異。

本文將介紹:

  • DELETE、TRUNCATEDROP 的用法和區(qū)別
  • DELETE 語(yǔ)句的高級(jí)用法
  • 刪除操作的注意事項(xiàng)和最佳實(shí)踐

二、MySQL 中的三種刪除方式

1.DELETE語(yǔ)句

DELETE 語(yǔ)句用于刪除表中符合條件的數(shù)據(jù)行,不刪除表本身。

基本語(yǔ)法:

DELETE FROM 表名 WHERE 條件;
  • 表名:要操作的表名稱。
  • WHERE 條件:指定要?jiǎng)h除的記錄,省略則刪除所有記錄。
  • 不加 WHERE 會(huì)刪除表中所有數(shù)據(jù),但表結(jié)構(gòu)仍然保留。

示例:

假設(shè)有以下表 users

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT,
    city VARCHAR(50)
);

-- 插入測(cè)試數(shù)據(jù)
INSERT INTO users (name, age, city) VALUES
('Alice', 25, 'Beijing'),
('Bob', 30, 'Shanghai'),
('Charlie', 35, 'Guangzhou');

刪除指定行:

DELETE FROM users WHERE name = 'Bob';

? 結(jié)果:刪除 name='Bob' 的記錄。

刪除所有數(shù)據(jù):

DELETE FROM users;

? 結(jié)果:清空表中數(shù)據(jù),但表結(jié)構(gòu)還在。

刪除多行:

DELETE FROM users WHERE age > 25;

? 結(jié)果:刪除所有年齡大于 25 歲的用戶。

2.TRUNCATE語(yǔ)句

TRUNCATE 語(yǔ)句用于清空表中的所有數(shù)據(jù),但不會(huì)記錄刪除操作,效率比 DELETE 更高。

基本語(yǔ)法:

TRUNCATE TABLE 表名;
  • 作用:清空表中的數(shù)據(jù),但保留表結(jié)構(gòu)。
  • 效率:比 DELETE 快,且釋放表空間。
  • 自增 ID 重置TRUNCATE 會(huì)將 AUTO_INCREMENT 重置為 1。

示例:

TRUNCATE TABLE users;

? 結(jié)果:

  • 清空表數(shù)據(jù)。
  • id 自動(dòng)增長(zhǎng)重置為 1。

3.DROP語(yǔ)句

DROP 語(yǔ)句用于刪除表本身,不僅數(shù)據(jù)被刪除,表結(jié)構(gòu)也會(huì)消失。

基本語(yǔ)法:

DROP TABLE 表名;
  • 作用:刪除表及其數(shù)據(jù),無(wú)法恢復(fù)。
  • 效率:速度快,但不可恢復(fù)。

示例:

DROP TABLE users;

? 結(jié)果:

  • users 被刪除,數(shù)據(jù)和表結(jié)構(gòu)都不存在。

三、DELETE高級(jí)用法

1. 使用DELETE刪除多表數(shù)據(jù)(多表關(guān)聯(lián)刪除)

在多表關(guān)聯(lián)查詢時(shí),可以使用 JOIN 刪除多個(gè)表中的數(shù)據(jù)。

基本語(yǔ)法:

DELETE 表別名 FROM 表1 AS 別名1
JOIN 表2 AS 別名2 ON 關(guān)聯(lián)條件
WHERE 條件;

示例:

假設(shè)有以下兩張表:

  • orders(訂單表)
  • customers(客戶表)
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    amount DECIMAL(10,2),
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

-- 插入數(shù)據(jù)
INSERT INTO customers VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
INSERT INTO orders VALUES (1, 1, 100.50), (2, 2, 200.75), (3, 3, 300.25);

刪除與Bob相關(guān)的訂單:

DELETE o FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE c.name = 'Bob';

? 結(jié)果:

  • 刪除 Bob 相關(guān)的訂單數(shù)據(jù)。

2. 使用LIMIT限制刪除條數(shù)

在刪除大量數(shù)據(jù)時(shí),可以使用 LIMIT 限制刪除的行數(shù),防止誤操作導(dǎo)致大量數(shù)據(jù)丟失。

基本語(yǔ)法:

DELETE FROM 表名 WHERE 條件 LIMIT N;

示例:

刪除 users 表中的前兩條記錄:

DELETE FROM users ORDER BY id ASC LIMIT 2;

? 結(jié)果:

  • 僅刪除兩條數(shù)據(jù),防止誤刪大量數(shù)據(jù)。

3. 使用ORDER BY和LIMIT

在刪除數(shù)據(jù)時(shí),可以通過(guò) ORDER BYLIMIT 指定刪除順序和數(shù)量。

示例:

刪除年齡最大的 2 個(gè)用戶:

DELETE FROM users
ORDER BY age DESC
LIMIT 2;

? 結(jié)果:

  • 刪除年齡最大的兩名用戶。

四、DELETE與TRUNCATE的區(qū)別

對(duì)比項(xiàng)DELETETRUNCATE
數(shù)據(jù)刪除方式按行刪除整表清空
是否記錄日志記錄日志不記錄日志
自增 ID 重置不重置重置為 1
刪除速度慢,逐行刪除快,清空整表
是否可回滾可回滾(開(kāi)啟事務(wù))不可回滾
觸發(fā)器是否執(zhí)行會(huì)觸發(fā)不會(huì)觸發(fā)
表空間釋放不釋放釋放表空間

五、刪除操作的注意事項(xiàng)

  1. 謹(jǐn)慎使用 DELETE 和 TRUNCATE

    • TRUNCATE 無(wú)法回滾,清空數(shù)據(jù)前要三思。
    • 在執(zhí)行刪除前,最好使用 SELECT 確認(rèn)數(shù)據(jù)范圍。
  2. 使用事務(wù)防止誤操作

    • 在執(zhí)行大批量刪除時(shí),使用事務(wù)以便回滾:
    START TRANSACTION;
    DELETE FROM users WHERE age > 30;
    ROLLBACK; -- 撤銷操作
    COMMIT;   -- 確認(rèn)操作
    
  3. 備份數(shù)據(jù)

    • 刪除操作前,備份重要數(shù)據(jù),以防誤刪。

六、總結(jié)

在 MySQL 中,刪除數(shù)據(jù)主要使用以下三種方式:

  • ? DELETE:按條件刪除數(shù)據(jù),記錄日志,可回滾。
  • ? TRUNCATE:清空表數(shù)據(jù),不記錄日志,不可回滾。
  • ? DROP:刪除表及數(shù)據(jù),無(wú)法恢復(fù)。

高級(jí)用法:

  • 使用 LIMIT 限制刪除條數(shù),防止誤刪大量數(shù)據(jù)。
  • 多表關(guān)聯(lián)刪除,提高操作靈活性。
  • 使用事務(wù)保護(hù)數(shù)據(jù),防止誤刪不可恢復(fù)。

到此這篇關(guān)于MySQL刪除數(shù)據(jù)用法及區(qū)別的文章就介紹到這了,更多相關(guān)MySQL刪除數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 獲取今天、昨天0點(diǎn)時(shí)間戳的實(shí)例

    mysql 獲取今天、昨天0點(diǎn)時(shí)間戳的實(shí)例

    今天小編就為大家分享一篇mysql 獲取今天、昨天0點(diǎn)時(shí)間戳的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 詳解MySQL批量入庫(kù)的幾種方式

    詳解MySQL批量入庫(kù)的幾種方式

    本文主要介紹了詳解MySQL批量入庫(kù)的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 深入解析MySQL索引數(shù)據(jù)結(jié)構(gòu)

    深入解析MySQL索引數(shù)據(jù)結(jié)構(gòu)

    什么是索引?索引就是排好序的數(shù)據(jù)結(jié)構(gòu),可以幫助我們快速的查找到數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL索引數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • mysql查詢連續(xù)記錄方式

    mysql查詢連續(xù)記錄方式

    這篇文章主要介紹了mysql查詢連續(xù)記錄方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • mysql 控制臺(tái)操作

    mysql 控制臺(tái)操作

    其實(shí)MYSQL的對(duì)數(shù)據(jù)庫(kù)的操作與其它的SQL類數(shù)據(jù)庫(kù)大同小異,您最好找本將SQL的書(shū)看看。
    2009-06-06
  • MySQL如何實(shí)現(xiàn)事務(wù)的ACID

    MySQL如何實(shí)現(xiàn)事務(wù)的ACID

    這篇文章主要介紹了MySQL如何實(shí)現(xiàn)事務(wù)的四大特性,幫助大家更好的理解和學(xué)習(xí)MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-09-09
  • mysql?8.0.28?winx64.zip安裝配置方法圖文教程

    mysql?8.0.28?winx64.zip安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql?8.0.28?winx64.zip安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Mybatis多表查詢與動(dòng)態(tài)SQL特性詳解

    Mybatis多表查詢與動(dòng)態(tài)SQL特性詳解

    動(dòng)態(tài)SQL可以省略很多拼接SQL的步驟,使用類似于JSTL方式,下面這篇文章主要給大家介紹了關(guān)于Mybatis多表查詢與動(dòng)態(tài)SQL特性的相關(guān)資料,文字通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • MySQL創(chuàng)建表操作命令分享

    MySQL創(chuàng)建表操作命令分享

    這篇文章主要介紹了MySQL創(chuàng)建表操作命令分享,分享內(nèi)容有查看所有表,創(chuàng)建表和MySQL支持的常用數(shù)據(jù)類型,具有一的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • mysql Access denied for user ‘root’@’localhost’ (using password: YES)解決方法

    mysql Access denied for user ‘root’@’localhost’ (using passw

    這篇文章主要介紹了mysql Access denied for user ‘root’@’localhost’ (using password: YES)解決方法,本文給出詳細(xì)的解決步驟及操作注釋,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

阜康市| 长泰县| 南投县| 阿拉尔市| 佛教| 远安县| 石屏县| 平顺县| 怀仁县| 闽侯县| 三亚市| 林州市| 抚远县| 顺平县| 原平市| 灵武市| 梧州市| 望城县| 通化县| 平利县| 拜城县| 枝江市| 无为县| 九龙坡区| 台安县| 陇南市| 七台河市| 积石山| 万安县| 周至县| 集安市| 沙坪坝区| 雷山县| 化德县| 双江| 丹凤县| 都昌县| 马公市| 蒙阴县| 麻江县| 吴旗县|