(1)join
SQL join 用于把来自两个或多个表的行结合起来。
最常见的 JOIN 类型:
(1) SQL INNER JOIN(简单的 JOIN)、
(2)SQL LEFT JOIN、
(3)SQL RIGHT JOIN、
(4)SQL FULL JOIN,
其中前一种是内连接,后三种是外链接。
(2)INNER JOIN语法
select column_name(s)
from table 1
INNER JOIN table 2
ON
table 1.column_name=table 2.column_name
例子如下:按部门编号查询员工的名字及工作所在地,链接了Scott用户下的表EMP和表DEPT
三表链接例子:
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);
有Orders,Customers,shippers三张表进行链接,先将其中两张表链接成一张表,在链接第三张表。
(3)LEFT JOIN
SQL LEFT JOIN 语法
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
或者
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
注释:在一些数据库中,LEFT JOIN称为LEFT OUT ER JOIN。
(3)RIGHT JOIN
SQL RIGHT JOIN 语法
SELECT column_name(s)
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;
(4)同样的查询语句,三种链接,结果对比
对比分析:
(1)内连接返回的是两表匹配的值,也就是说,只返回两个表都匹配到的行。
(2)左链接返回左表的所有行,右链接返回右表所有行。
(3)三种链接的关系图
(5)其他链接形式
(1)当左(表1)或右(表2)表记录匹配时,FULL OUTER JOIN关键字将返回所有记录。
注意: FULL OUTER JOIN可能会返回非常大的结果集!
(2)自连接语法
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
例子:查询EMP表下部门不同,但是工作相同的员工的姓名,部门和工作