一:DELETE语法

以往用delect删除表数据是都是单表(一个表)删除。对于关联表,往往都是先删除第一个表的数据,然后再写另一个delect语句删除另一个表的数据(浪费时间,又影响性能,与数据库交互两次)。通过查阅官方文档的delect语法。有一些新的感悟。

1.1:单表语法(完整语法)

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROMtbl_name #()[PARTITION (partition_name [, partition_name]...)] #(分区)[WHERE where_condition] #(删除条件)

[ORDER BY ...] #(删除顺序)

[LIMIT row_count] #(现在一次删除的数量)

对于[]里面都是一些可选阐述,对于每个参数的意思我也是大概了解,在此我就不多做解释了,有兴趣的课参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/delete.html

1.2:多表语法(本次重点)

语法1:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]tbl_name[.*] [, tbl_name[.*]] ...FROMtable_references[WHERE where_condition]

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]

FROM tbl_name[.*] [, tbl_name[.*]] ...

USING table_references[WHERE where_condition]

1.3:多表删除

您可以在DELETE语句中指定多个表,以根据WHERE子句中的条件从一个或多个表中删除行。您不能使用ORDER BY或LIMIT在多表中DELETE。该table_references子句列出了连接中涉及的表。

对于第一个多表语法,仅FROM删除子句之前列出的表中的匹配行。对于第二个多表语法,仅删除FROM子句(在USING子句之前)中列出的表中的匹配行。结果是您可以同时从多个表中删除行,并具有仅用于搜索的其他表:

语法1

DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOINt3WHERE t1.id=t2.id AND t2.id=t3.id;

语法2:

DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOINt3WHERE t1.id=t2.id AND t2.id=t3.id;

例如:删除一班班集(id =1)和一班所有的学生(学生的班级classes.id=1)

DELETE classes ,students FROM students INNER JOIN classes WHERE classes.id = 1 AND students.`class_id` = 1;

注意:我上面用的是inner join 关联也可用outer join(是默认关联语法),但推荐用inner join因为inner join是取得两表的交集(outer join也可以取交集),省去了一些麻烦,也可规避一些误操作。具体细节可关联查询细节

备注:前面的示例使用INNER JOIN,但多表DELETE语句可以使用语句中允许的其他类型的连接SELECT,例如LEFT JOIN。例如,要删除不存在t1匹配项的行t2,请使用LEFT JOIN:

1.4:使用别名(alise)

多表中的表别名DELETE只应table_references在语句的部分声明。在其他地方,允许别名引用但不允许别名声明。

语法:

DELETE a1, a2 FROM t1 AS a1 INNER JOIN t2 ASa2WHERE a1.id=a2.id;DELETE FROM a1, a2 USING t1 AS a1 INNER JOIN t2 ASa2WHERE a1.id=a2.id;

注意不要写成:(定义标的别名要在from后面)DELETE t1 AS a1, t2 AS a2 FROM t1 INNER JOINt2WHERE a1.id=a2.id;DELETE FROM t1 AS a1, t2 AS a2 USING t1 INNER JOINt2WHERE a1.id=a2.id;

mysql delete join语法_mysql之delete语法相关推荐

  1. mysql数据库语法_MySQL数据库基本语法

    SQL WHAT(SQL是什么?) Structured Query Language:结构化查询语⾔ WHY(为何要使用SQL?) 难道仅仅使用SQL Server Management Studi ...

  2. mysql right join实例_MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

    LEFT JOIN 语法用法与实例MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT ...

  3. mysql natural join用法_MySQL NATURAL JOIN

    NATURAL JOIN 也叫自然连接,实际是属于 JOIN 的一种. MySQL NATURAL JOIN 语法如下: ... FROM table1 NATURAL JOIN table2 ... ...

  4. mysql left join 空值_MySQL LEFT JOIN NULL值

    这个问题更多的是2012年3月回复的问题.由于这是4个月后,我提出了一个新问题.参考:MySQL LEFT JOIN - Values can be NULL 我的SQL语句如下所示: SELECT ...

  5. mysql 索引语法_MySQL 索引:语法及案例剖析

    MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索 ...

  6. mysql delete in死锁_mysql 执行delete引发死锁问题

    关于mysql事务引发的死锁异常解决 场景 问题 死锁日志[^2] 锁类型与隔离级别 InnerDB 锁: mysql事务 解决方案 场景 mysql 5.7 InnoDB存储引擎 jdk 8 spr ...

  7. mysql外键引用语法_mysql – 外键语法

    我先创建了Teacher表,其描述是 mysql> desc teacher; +--------------+-------------+------+-----+---------+---- ...

  8. mysql查询数据不变_mysql之delete删除记录后数据库大小不变

    当DELETE后面跟条件的时候,则就会出现这个问题 delete from table_name where 条件 删除数据后,数据表占用的空间大小不会变. 不跟条件直接delete的时候. dele ...

  9. mysql特有语法_MySQL 独有SQL语法汇总(一)

    连接 主机名 端口 一个合法用户 用户口令 Mysql -u root -p -h myserver -P 9999 选择数据库 可使用USE关键字,mysql语言组成部分的一个关键字,绝不要使用关键 ...

最新文章

  1. springCloud全家桶
  2. IBastis配置实例
  3. 小程序统一服务消息_微信团队发布小程序模板消息能力调整通知:小程序订阅消息接口正式上线...
  4. c语言调用子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  5. android 开发规范
  6. EF更新指定字段...
  7. php authorization,PHP CURL设置Authorization
  8. 使用本地计划任务定时关闭azure虚拟机
  9. 开启3389常用终端命令
  10. 抛出与抽象相对应的异常(61)
  11. TechNet Plus订阅版再度推出6折优惠
  12. openstack手动部署简单记录
  13. 迷宫算法总结(最短路径)
  14. html中怎么去除多余的代码,去除HTML代码中所有标签的两种方法
  15. bzoj 4518: [Sdoi2016]征途
  16. ubuntu shell命令划重点
  17. Buffer(缓冲器)
  18. js pug 代码_Vue项目中配置pug解析支持
  19. 【this,super关键字使用】经典习题
  20. 4.ERC20常用查询操作

热门文章

  1. 【程序设计】变量与常量
  2. 今天(5/6)放假的公司名单
  3. nyoj973 天下第一(spfa判环)
  4. MaskRCNN网络结构
  5. uniapp - 超详细的 H5 公众号网页微信登录示例代码,提供从 0-1 公众号配置及详细注释代码(站在新手小白的角度)第三方微信授权登录的实现!!
  6. 词法分析器--C实现
  7. 高斯模糊java代码_简单的java高斯模糊算法
  8. 钓鱼wifi的搭建方法(整理了一些资料
  9. 【Bleak】四、扫描(指定设备名字)
  10. 金融培训直播的优势有哪些?