2011-06-29 109 views
0

在更新ID或者有人试图删除一个类别时,在MySQL中使用关系会派上用场。但有没有简单的方法来做一个SELECT查询,而不使用JOIN?从关系数据库中选择

JOIN易于使用,但是在执行SELECT时不能使用关系吗?我可以做一个没有关系的JOIN!

是否仅使用关系,以便我可以控制ID字段上的操作?

回答

1

创建数据库(特定于外键)的约束用于维护参照完整性,以防止意外删除其他行引用的行。

限制条件不提供任何方式使用自动连接的表执行SELECT。因此 - NO,您需要明确指定所有JOIN。并且YES,JOIN不依赖于现有约束:您可以将它用于任何表,任何字段并编写任何条件,而不管它们是否通过外键关系相互引用。

+0

很酷。有点我正在寻找的答案:) – hogni89

1

是的,你可以 - 通过子查询。

SELECT * 
FROM A 
WHERE A.ID IN 
    (SELECT B.Id FROM B) 

- 在这个例子中,你基本上正在做一个INNER JOIN。

和关系用于参照完整性。顶部的例子中没有保证B.Id与A.Id有任何关系。如果您的数据库密钥相互关联,那么可以保证表中的表必须存在表B中存在的行中的记录。

+0

但是这可以做到没有关系? – hogni89

+0

您正在定义关系。 –