MySQL delete 语句

柔情只为你懂 2023-06-27 03:14 81阅读 0赞

mysql 中delete语句主要分为三个层次,下面简单介绍下

  1. 最基础的条件删除,如下所示

    DELETE FROM table_name where table_name.name=’dell’

还有一种按序删除的方式如下

  1. DELETE FROM customers ORDER BY Name LIMIT 10
  1. 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;

  1. DELETE a FROM tablename AS a LEFT JOIN temp_name AS b ON a.ID = b.ID WHERE b.ID IS not null;
  1. MySQL ON DELETE CASCADE示例

此时 有A和B两个表,当删除A表的记录时,B表关联的字段自动删除,此时需要用到这种方式;

第一步, 创建buildings表,如下创建语句:

  1. USE testdb;
  2. CREATE TABLE buildings (
  3. building_no INT PRIMARY KEY AUTO_INCREMENT,
  4. building_name VARCHAR(255) NOT NULL,
  5. address VARCHAR(255) NOT NULL
  6. )ENGINE=InnoDB DEFAULT CHARSET=utf8;

第二步, 创建rooms表,如下创建语句:

  1. USE testdb;
  2. CREATE TABLE rooms (
  3. room_no INT PRIMARY KEY AUTO_INCREMENT,
  4. room_name VARCHAR(255) NOT NULL,
  5. building_no INT NOT NULL,
  6. FOREIGN KEY (building_no)
  7. REFERENCES buildings (building_no)
  8. ON DELETE CASCADE
  9. )ENGINE=InnoDB DEFAULT CHARSET=utf8;

请注意,在外键约束定义的末尾添加ON DELETE CASCADE子句。

第三步插入部分数据

  1. INSERT INTO buildings(building_name,address)
  2. VALUES('海南大厦','海口市国兴大道1234号'),
  3. ('万达水城','海口市大同路1200号');
  4. INSERT INTO rooms(room_name,building_no)
  5. VALUES('Amazon',1),
  6. ('War Room',1),
  7. ('Office of CEO',1),
  8. ('Marketing',2),
  9. ('Showroom',2);

此时 删除building_no = 2 的记录,可以看到rooms表中也删除了

  1. DELETE FROM buildings WHERE building_no = 2;

请注意,ON DELETE CASCADE仅支持使用存储引擎支持外键(如InnoDB)的表上工作。 某些表类型不支持诸如MyISAM的外键,因此应该在使用MySQL ON DELETE CASCADE引用操作的表上选择适当的存储引擎。

发表评论

表情:
评论列表 (有 0 条评论,81人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DELETE语句

    SQL Server不允许删除作为外键约束的一部分被引用的行。如果一行使用外键引用另一行(无论是否在同一表中),则要先删除被引用行后才能删除引用行。 DELETE [

    相关 MySQL DELETE 语句

    可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。 可以在mysql>命令提示符或PHP脚本中执行该命令。 以下是SQL DELETE