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引用操作的表上選擇適當的存儲引擎。
新聞熱點
疑難解答