博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL 内链接Inner Join和外连接Outer Join
阅读量:7134 次
发布时间:2019-06-28

本文共 2347 字,大约阅读时间需要 7 分钟。

hot3.png

连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行。 

连接可分为以下几类:  

  • 内链接(Inner Join)

  • 外连接(Outer Join)

            |--- 左连接(Left Join) 

            |--- 右连接(Right Join) 

  • 全连接(Full Join)

INNER JOIN 

在表中存在至少一个匹配时,INNER JOIN 关键字返回行。 

INNER JOIN 关键字语法

1
2
3
4
SELECT
column_name(s)
FROM
table_name1
INNER
JOIN
table_name2
ON
table_name1.column_name=table_name2.column_name

注释:INNER JOIN 与 JOIN 是相同的。

一句话概括:inner join只取都不null的,相当于用from a,b where ?=?(连接是on ? = ?)

示例:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

LastName
FirstName
OrderNo
Adams
John
22456
Adams
John
24562
Carter
Thomas
44678

OUTER JOIN

根据目的表(希望获取其全部记录的表)是右表还是左表,分为左连接和右连接。

 LEFT JOIN 

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

LEFT JOIN 关键字语法

1
2
3
4
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。

一句话概括:以左表为标准,取出左表所有的记录,右表有对应记录则显示,无则显示null。

示例:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

LastName
FirstName
OrderNo
Adams
John
22456
Carter
Thomas
77895
Bush
George

RIGHT JOIN

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

RIGHT JOIN 关键字语法

1
2
3
4
SELECT
column_name(s)
FROM
table_name1
RIGHT
JOIN
table_name2
ON
table_name1.column_name=table_name2.column_name

注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。

一句话概括:以右表为标准,取出右表所有的记录,左表有对应记录则显示,无则显示null。

示例:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

LastName
FirstName
OrderNo
Adams
John
22456
Carter
Thomas
77895
34764

FULL JOIN

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

FULL JOIN 关键字语法

1
2
3
4
SELECT
column_name(s)
FROM
table_name1
FULL
JOIN
table_name2
ON
table_name1.column_name=table_name2.column_name

注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。

一句话概括:完整外部连接返回左表和右表中的所有行。是左连接和右连接的合集。

示例:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

LastName
FirstName
OrderNo
Adams
John
22456
Bush
George
34764

PS:

交叉连接:交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。  

转载于:https://my.oschina.net/zhenglingfei/blog/403439

你可能感兴趣的文章
WPF单线程定时器 简单实例
查看>>
javascript中的数据结构
查看>>
jsp get方式请求参数中包含中文乱码问题解决
查看>>
【云图】如何制作官网上的实体店分布图?
查看>>
Copy-VMFile
查看>>
Winform开发框架中实现多种数据库类型切换以及分拆数据库的支持
查看>>
JSHint Options 翻译
查看>>
Android 判断SD卡是否存在及容量查询
查看>>
让你提升命令行效率的 Bash 快捷键
查看>>
mvc之验证IEnumerable<T> 类型,多选框验证
查看>>
2014年黑金FPGA原创教程规划发布
查看>>
Java NIO类库Selector机制解析--转
查看>>
java提高篇(二九)-----Vector
查看>>
Unity3d游戏中添加移动MM支付SDK问题处理
查看>>
UVALive 5968
查看>>
Remove Duplicates from Sorted List II leetcode java
查看>>
XSS 前端防火墙 —— 天衣无缝的防护
查看>>
Firefox地址栏样式设定
查看>>
java微信接口之四—上传素材
查看>>
[Javascript] Funciton Expression
查看>>