All articles(网络文学目录) All Pictures(图片目录) All Softwares(软件目录)

 
SQL数据库高级教程:学习 SQL JOIN_[SQL Server教程]

Writer: 归海一刀 Article type: Programming skills(编程技巧) Time: 2014/2/3 6:40:20 Browse times: 435 Comment times: 0

SQL数据库高级教程:学习 SQL JOIN_[SQL Server教程]


01Hansen, Ola02Svendson, Tove03Svendson, Stephen04Pettersen, Kari

表 Orders:

234Printer01657Table03865Chair03

Referring to Two Tables

我们可以通过引用两个表的方式,从两个表中获取数据:

实例

谁订购了产品,并且他们订购了什么产品?

SELECT Employees.Name, Orders.Product FROM Employees, OrdersWHERE Employees.Employee_ID=Orders.Employee_ID 

结果:

Hansen, OlaPrinterSvendson, StephenTableSvendson, StephenChair

实例

谁订购了打印机?

SELECT Employees.NameFROM Employees, OrdersWHERE Employees.Employee_ID=Orders.Employee_IDAND Orders.Product='Printer' 

结果:

Hansen, Ola

使用Join

我们也可以使用关键词JOIN来从两个表中获取数据:

内连接(INNER JOIN)

语法:

SELECT field1, field2, field3FROM first_tableINNER JOIN second_tableON first_table.keyfield = second_table.foreign_keyfield 

谁定购了产品,并且他们定购了什么?

SELECT Employees.Name, Orders.ProductFROM EmployeesINNER JOIN OrdersON Employees.Employee_ID=Orders.Employee_ID

内连接会返回两个表中所匹配的所有的行。假如某些Employees中的行与Orders中的行不匹配,那些行就不会被列出来。

结果:

Hansen, OlaPrinterSvendson, StephenTableSvendson, StephenChair

Example 左连接(LEFT JOIN)

语法:

SELECT field1, field2, field3FROM first_tableLEFT JOIN second_tableON first_table.keyfield = second_table.foreign_keyfield 

列出所有的雇员,以及他们的定购产品 - 如果有的话。

SELECT Employees.Name, Orders.ProductFROM EmployeesLEFT JOIN OrdersON Employees.Employee_ID=Orders.Employee_ID 

左连接会第一个表(Employees)那里返回所有的行,即使在第二个表(Orders)中没有匹配的行。假如某些Employees中的行没有在Orders中可匹配的行,这些行业会被列出来。

结果:

Hansen, OlaPrinterSvendson, Tove Svendson, StephenTableSvendson, StephenChairPettersen, Kari

Example 右连接(RIGHT JOIN)

语法:

SELECT field1, field2, field3FROM first_tableRIGHT JOIN second_tableON first_table.keyfield = second_table.foreign_keyfield 

列出所有的定单,以及定购者 - 如果有的话。

SELECT Employees.Name, Orders.ProductFROM EmployeesRIGHT JOIN OrdersON Employees.Employee_ID=Orders.Employee_ID 

右连接会从第二个表格(Orders)那里返回所有的行,即使在第一个表格中没有可匹配的行。假如Orders中的某些行没有在Employees可匹配的行,那些行也会被列出。

结果:

Hansen, OlaPrinterSvendson, StephenTableSvendson, StephenChair


Head photo

Go homepage
Upload pictures
Write articles

SQL数据库高级教程:学习 SQL JOIN_[SQL Server教程]

Joins 和 Keys

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行join。

数据库中的表可通过键将彼此联系起来。一个主键(Primary Key)可以是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。Employee_ID会区分开每一个人,即使他们中的人都着相同的名字。

当你看到下面的例子时,请注意以下几点:

  • "Employee_ID"列是"Employees"表的主键
  • "Prod_ID"列是"Orders"表的主键
  • 表"Orders"中的"Employee_ID"列用于引用"Employees"表中的员工,而无需使用他们的确切姓名

表 Employees:

Employee_IDNameProd_IDProductEmployee_IDNameProductNameNameProductNameProductNameProduct

There are 0 records,
Comment:
Must be registered users to comment(必须是注册用户才能发表评论)

Disclaimer Privacy Policy About us Site Map
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.