Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 什么';DELETE语句中的内部联接和左联接的区别是什么?_Mysql_Sql_Join_Foreign Key Relationship_Sql Delete - Fatal编程技术网

Mysql 什么';DELETE语句中的内部联接和左联接的区别是什么?

Mysql 什么';DELETE语句中的内部联接和左联接的区别是什么?,mysql,sql,join,foreign-key-relationship,sql-delete,Mysql,Sql,Join,Foreign Key Relationship,Sql Delete,在执行删除操作时,我可以通过执行左连接来删除两个或多个表中的行 DELETE a, b FROM table1 a LEFT JOIN table2 b on (a.id = b.id) WHERE ... 我还可以进行内部联接 DELETE a, b FROM table1 a INNER JOIN table2 b on (a.id = b.id) WHERE ... 这两者的区别到底是什么 那么其他连接呢 在delete语句中使用其他联接类型有意义吗?这些类型有何用处 删除与删除有什么

在执行删除操作时,我可以通过执行
左连接来删除两个或多个表中的行

DELETE a, b FROM
table1 a
LEFT JOIN table2 b on (a.id = b.id)
WHERE ...
我还可以进行
内部联接

DELETE a, b FROM
table1 a
INNER JOIN table2 b on (a.id = b.id)
WHERE ...
这两者的区别到底是什么

那么其他连接呢
delete
语句中使用其他联接类型有意义吗?这些类型有何用处

删除与删除有什么区别。。。加入并使用外键
如果我在DELETE CASCADE
子句上设置了一个带有
的外键:

  • 这是否与
    内部
    或“左”连接匹配(或不匹配)
  • 这是否比使用连接更好(更快/更安全)

  • 我正在使用MySQL,但我也想知道其他哪些数据库支持它。

    不同之处在于内部连接不会删除任何未连接的内容。根据
    WHERE
    子句中的内容,左连接可以删除未连接的内容。

    它不是“通用的”。并非所有DBMS都允许使用DELETE语句进行连接。因此,它应该被正确地标记为mysql@thirsty_horse,PostgreSQL,SQL server,DB2,Oracle do.SQL server不允许此多表
    DELETE
    。只有1个表可以作为
    DELETE
    操作的目标<代码>删除a,b…
    将无效。@Martin,谢谢你今天学到了一个新东西…@le dorfier,好的,对此感到惊讶。您碰巧知道哪些数据库支持它?所以只有内部联接才能保留引用完整性?@Johan:不。引用完整性取决于声明的完整性约束以及在规则和触发器中实现的约束。除非有bug,否则任何数据库更新(如INSERT、update、DELETE)都不能以违反完整性约束的方式更改行。但是,复杂语句的结果——例如包含外部联接的DELETE语句——即使是经验丰富的DBA也会感到惊讶。许多数据库“设计者”满怀希望和一厢情愿地实现完整性约束。这两个都不能很好地扩展。