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也会感到惊讶。许多数据库“设计者”满怀希望和一厢情愿地实现完整性约束。这两个都不能很好地扩展。