MySQL delete 語句

mysql 中delete語句主要分爲三個層次,下面簡單介紹下

1. 最基礎的條件刪除,如下所示

DELETE FROM table_name  where    table_name.name='dell'

還有一種按序刪除的方式如下

DELETE FROM customers ORDER BY Name LIMIT 10

2. MySQL DELETE語句使用INNER JOIN子句

DELETE  a FROM tablename AS a LEFT JOIN temp_name AS b ON a.ID = b.ID WHERE b.UserID > 0;


DELETE  a FROM tablename AS a LEFT JOIN temp_name AS b ON a.ID = b.ID WHERE b.ID IS not null;

3. MySQL ON DELETE CASCADE示例

此時 有A和B兩個表,當刪除A表的記錄時,B表關聯的字段自動刪除,此時需要用到這種方式;

第一步, 創建buildings表,如下創建語句:

USE testdb;
CREATE TABLE buildings (
    building_no INT PRIMARY KEY AUTO_INCREMENT,
    building_name VARCHAR(255) NOT NULL,
    address VARCHAR(255) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

第二步, 創建rooms表,如下創建語句:

USE testdb;
CREATE TABLE rooms (
    room_no INT PRIMARY KEY AUTO_INCREMENT,
    room_name VARCHAR(255) NOT NULL,
    building_no INT NOT NULL,
    FOREIGN KEY (building_no)
        REFERENCES buildings (building_no)
        ON DELETE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

請注意,在外鍵約束定義的末尾添加ON DELETE CASCADE子句。

第三步插入部分數據

INSERT INTO buildings(building_name,address)
VALUES('海南大廈','海口市國興大道1234號'),
      ('萬達水城','海口市大同路1200號');

INSERT INTO rooms(room_name,building_no)
VALUES('Amazon',1),
      ('War Room',1),
      ('Office of CEO',1),
      ('Marketing',2),
      ('Showroom',2);

此時 刪除building_no = 2 的記錄,可以看到rooms表中也刪除了

DELETE FROM buildings WHERE building_no = 2;

請注意,ON DELETE CASCADE僅支持使用存儲引擎支持外鍵(如InnoDB)的表上工作。 某些表類型不支持諸如MyISAM的外鍵,因此應該在使用MySQL ON DELETE CASCADE引用操作的表上選擇適當的存儲引擎。

發佈了30 篇原創文章 · 獲贊 17 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章