SQL 教程

SQL 教程 SQL 简介 SQL 语法 SQL Select SQL Select Distinct SQL Where SQL And, Or, Not SQL Order By SQL Insert Into SQL Null Values SQL Update SQL Delete SQL Select Top SQL Min 和 Max SQL Count, Avg, Sum SQL Like SQL 通配符 SQL In SQL Between SQL 别名 SQL 联接 SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL 自联接 SQL Union SQL Group By SQL Having SQL Exists SQL Any, All SQL Select Into SQL Insert Into Select SQL Case SQL Null 函数 SQL 存储过程 SQL 注释 SQL 运算符

SQL 数据库

SQL 创建数据库 SQL 删除数据库 SQL 数据库备份 SQL Create Table SQL Drop Table SQL Alter Table SQL 约束 SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key SQL Check SQL Default SQL Index SQL 自动增量 SQL 日期 SQL 视图 SQL 注入 SQL 托管 SQL 数据类型

SQL 参考手册

SQL 关键字 MySQL 函数 SQL Server 函数 MS Access 函数 SQL 快速参考手册

SQL 实例

SQL 实例 SQL 测验 SQL 练习


SQL 联接

SQL JOIN

JOIN SQL 用于根据两个或多个表之间的一个相关列合并两个或多个表中的行。

请看 "Orders" 表:

OrderID CustomerID OrderDate
10308 2 1996-09-18
10309 37 1996-09-19
10310 77 1996-09-20

然后,请看 "Customers" 表:

CustomerID CustomerName ContactName Country
1 Alfreds Futterkiste Maria Anders Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Mexico
3 Antonio Moreno Taquería Antonio Moreno Mexico

请注意,"Customers" 表中的 "CustomerID" 列指的是 "Customers" 表中的 "CustomerID"。上面两个表之间的关系是 "CustomerID" 列。

然后,我们可以创建以下 SQL 语句(包含 INNER JOIN),用于选择两个表中具有匹配值的记录:

实例

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
亲自试一试 »

将产生如下结果:

OrderID CustomerName OrderDate
10308 Ana Trujillo Emparedados y helados 9/18/1996
10365 Antonio Moreno Taquería 11/27/1996
10383 Around the Horn 12/16/1996
10355 Around the Horn 11/15/1996
10278 Berglunds snabbköp 8/12/1996

不同类型的 SQL JOIN

下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。

  • (INNER) JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT (OUTER) JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT (OUTER) JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL (OUTER) JOIN: 只要其中一个表中存在匹配,就返回行

SQL INNER JOIN  SQL LEFT JOIN  SQL RIGHT JOIN  SQL FULL OUTER JOIN


学习训练

练习题:

JOIN 子句中插入缺失的部分,以连接 Orders客户, 使用两个表中的 CustomerID 字段作为两个表之间的关系。

SELECT *
FROM Orders
LEFT JOIN Customers
=
;

开始练习