文档章节

SQL 内链接Inner Join和外连接Outer Join

令飞
 令飞
发布于 2015/04/18 23:18
字数 696
阅读 50
收藏 0

连接条件可在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:

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

本文转载自:http://my.oschina.net/sunchp/blog/93630

共有 人打赏支持
上一篇: redis主要命令
下一篇: DNS解析过程
令飞
粉丝 47
博文 21
码字总数 14127
作品 0
杭州
程序员
私信 提问
mysql 内链接/外链接/交叉链接

1.内链接(典型的链接运算,使用=或<>之类的比较运算)内链接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索students和coursesb表中的学生标识号相同的所有行。 2.外链接...

hyhlinux
2016/07/06
52
0
MYSQL子查询与连接

37:子查询与连接 SET 列名 gbk;//改变客户端数据表的编码类型。 子查询 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句 例如 SELECT FROM t1 WHERE col1=(SELECT col2 FROM t2); 其...

别叫小伙
2016/09/30
0
0
SQL连接查询

连接查询的语法如下: SELECT 参数列表FROM 连接表一 连接类型 连接表二[ON 连接条件] (一二可以是同一张表,称为自连接) 连接类型有以下几种: (1)[INNER] JOIN 内连接 (2)LEFT [OUT...

sr5220
2014/02/13
0
0
SQL 多个表之间联合查询

非常少用join,这次学学,并备忘两篇文章! 转自:http://hcx-2008.javaeye.com/blog/285661 连接查询 通过连接运算符能够实现多个表查询。连接是关系数据库模型的主要特点,也是它差别于其他...

云栖希望。
2018/01/06
0
0
内连接,外链接(左连接、右连接、全连接),交叉连接大总结

版权声明:欢迎交流! https://blog.csdn.net/basycia/article/details/52205916 1.什么是连接查询呢? 3.具体使用介绍 联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。...

雪飞静
2016/08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
1
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
2
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
3
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
2
0
深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部