2010-04-10 78 views
2

在我看来,有两个场景中,使用连接:使用在进行连接

  1. 当数据否则将被复制
  2. 当从一个查询数据,否则在另一个查询
  3. 使用

这些情况正确吗?是否有任何其他情况下使用JOIN?

编辑:我想我错了。我明白如何一个JOIN的作品,我不太确定的是使用一个。

+0

如果您的数据分布在多个表格中,则您别无选择。当定义了一对多关系时,您将别无选择,只能将数据拆分为两个表,而不会有太多重复。它是关系数据库系统的一个非常关键的概念(而不是平面文件) – 2010-04-10 06:28:27

回答

2

当您需要来自多个表格的信息时,您可以使用连接:)

+3

大声笑..这是正确的关于自我连接? – 2013-12-04 07:16:27

+0

这个答案稍微不足,因为它同样适用于'SELECT NAME,ID FROM CLIENT,ORDER',它不使用连接。 – Aerovistae 2017-07-13 18:26:39

+0

@jemfinch那么,为什么要引入自连接? – overexchange 2017-08-24 21:17:19

6

JOINS用于JOIN表与相关信息。

Tipical情况是,你必须让说

如果用户有特定的安全设置的用户表。连接将被使用,以便您可以确定用户拥有哪些设置。

Users 
-UserID 
-UserName 

UserSecurityRoles 
-UserID 
-SecurityRoleID 

SecurityRoles 
-SecurityRoleID 
-SecurityRole 

SELECT * 
FROM Users u INNER JOIN 
UserSecurityRoles usr ON u.UserID = usr.UserID INNER JOIN 
SecurityRoles sr ON usr.SecurityRoleID = sr.SecurityRoleID 
WHERE sr.SecurityRole = 'Admin' 

LEFT加入将在您希望从匹配的右检索所有从表中左侧的数据,只有数据的情况下使用。

JOINS用于开始标准化表结构。您可以在列上创建100个表,其中很多数据可能为NULL,或者可以对表进行规范化处理,以避免使用空值过多的列,并将适当的数据分组到表结构中。

这个问题的答案Question有具有使用的图形显示的JOIN

3

连接是用来返回在关系数据库中的相关数据中非常很好的链接。数据可以通过3种方式

  • 一个涉及到很多关系(A 可以有很多交易
  • 多对多的关系(A 医生可以有很多患者,但患者可以有不止一个医生
  • 一对一的关系(一个可以具有恰好一个护照数)

加入进来各种口味:

  • 内连接将来自两个表,其中每个表中匹配的密钥
  • 左连接返回数据或RIGHT JOIN将返回一个表中的所有行并匹配另一个表中的数据
  • CROSS JOIN将返回每个表的产品