【发布时间】:2011-09-24 18:32:54
【问题描述】:
在更新 ID 或有人试图删除类别时,在 MySQL 中使用关系会派上用场。但是有没有不使用 JOIN 的简单方法来执行 SELECT 查询?
JOIN 很容易使用,但是我不能在做 SELECT 的时候使用关系吗?我可以在没有关系的情况下进行 JOIN!
是否仅使用关系以便我可以控制 ID 字段上的操作?
【问题讨论】:
标签: mysql join database-relations
在更新 ID 或有人试图删除类别时,在 MySQL 中使用关系会派上用场。但是有没有不使用 JOIN 的简单方法来执行 SELECT 查询?
JOIN 很容易使用,但是我不能在做 SELECT 的时候使用关系吗?我可以在没有关系的情况下进行 JOIN!
是否仅使用关系以便我可以控制 ID 字段上的操作?
【问题讨论】:
标签: mysql join database-relations
数据库中的约束(特别是外键)是为了维护引用完整性而创建的,以防止意外删除另一行引用的行。
约束不提供任何方式来执行 SELECT 与自动连接的表。所以 - NO,您需要明确指定所有 JOINs。并且YES、JOIN 不依赖于现有的约束:您可以将它用于任何表、任何字段并编写任何条件,而不管它们通过外键关系相互引用。
【讨论】:
是的,您可以 -- 通过子查询。
SELECT *
FROM A
WHERE A.ID IN
(SELECT B.Id FROM B)
-- 在此示例中,您实际上是在执行 INNER JOIN。
关系用于参照完整性。在上面的示例中不能保证 B.Id 必须与 A.Id 有任何关系。如果您将数据库键相互绑定,则可以保证表 A 中必须存在一条记录,表 B 中的一行才能存在。
【讨论】: