【SQL】连接 —— 内连接、外连接、左连接、右连接、交叉连接
连接
· 内连接
· 外连接
· 左连接
· 右连接
· 全连接
· 交叉连接
· 匹配符号(+)
连接
根据表之间的关系,呈现跨表查询的结果。
外连接 | |||||
内连接 | 左连接 | 右连接 | 全连接 | 交叉连接 | |
基准 | 左表 | 右表 | |||
显示数据 | 两表公共部分 |
左表全部 右表满足条件部分 无显示NULL |
右表全部 左表满足条件部分 无显示NULL |
左右表全部 无显示NULL |
两表所有行的组合 (笛卡尔积) |
关键词 | (inner) join |
(left) join |
(right) join |
full (outer) join |
cross join |
语法简述 | A join B on 条件 | A left join B on 条件 | A right join B on 条件 | A full join B on 条件 | A cross join B on 条件 |
就表A、表B示例
Aid | name | age |
1 | Mary | 22 |
2 | Jack | 20 |
Aid | name |
1 | Jack |
2 | Ma |
内连接
- 等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
- 不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
- 自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
获取两表的公共部分
select * from A (inner) join B on A.name = B.name (显性内连接)
select * from A where A.name = B.name (隐性外连接)
A_Aid | A_name | A_age | B_Bid | B_name1 |
1 | Jack | 22 | 1 | Jack |
外连接
左连接
以左表为基准,左表数据全部返回,右表数据只满足where条件,无显示NULL
select * from A left (outer) join B on A.name = B.name 均为全表扫描
select * from A where A.name = B.name (+) A为全表扫描,B为索引扫描,效率稍高
A_Aid | A_name | A_age | B_Bid | B_name1 |
1 | Jack | 22 | 1 | Jack |
2 | Mary | 20 | NULL | NULL |
右连接
以右表为基准,右表数据全部返回,左表只返回满足条件的,无显示NULL
select * from A right (outer) join B on A.name = B.name
select * from A where A.name(+) = B.name
A_Aid | A_name | A_age | B_Bid | B_name1 |
1 | Jack | 22 | 1 | Jack |
NULL | NULL | NULL | 2 | Ma |
全连接
显示两表全部数据,完整外部联接返回左表和右表中的所有行。
当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。
如果表之间有匹配行,则整个结果集行包含基表的数据值。
select * from A full (outer) join B on A.name = B.name
A_Aid | A_name | A_age | B_Bid | B_name1 |
1 | Jack | 22 | 1 | Jack |
2 | Mary | 20 | NULL | NULL |
NULL | NULL | NULL | 2 | Ma |
交叉连接
将两个表的所有行进行组合,连接后的行数为两个表的乘积数。(笛卡尔积)
select * from A cross join B
A_Aid | A_name | A_age | B_Bid | B_name1 |
1 | Jack | 22 | 1 | Jack |
1 | Jack | 22 | 2 | Ma |
2 | Mary | 20 | 1 | Jack |
2 | Mary | 20 | 2 | Ma |
匹配符号
对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项:
1.(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
2. 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符
3.(+)操作符只适用于列,而不能用在表达式上。
4.(+)操作符不能与or和in操作符一起使用。
5.(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
一句话记忆:+号在哪里,就是匹配表
转载于:https://www.cnblogs.com/tubybassoon/p/9517932.html
【SQL】连接 —— 内连接、外连接、左连接、右连接、交叉连接相关推荐
- 数据库内、外、左、右连接详解
写在前面: 数据库连接操作非常重要,明确连接操作有助于更好地掌握SQL语句查询操作. 数据库连表方式: 内连接 :inner join 外连接 :outer join 左外连接 :left outer ...
- 如何同时使用内网(本地有线连接)和外网(WLAN无线连接)
如何同时使用内网(本地有线连接)和外网(WLAN无线连接) 进入网络连接页面 设置优先级 跃点数设置 IPV4设置 进入网络连接页面 控制面板 -> 网络和Internet -> 网络和共 ...
- linq to entity 左联接 右连接 以及内连接写法的区别(转)
linq to entity 左连接 右连接 以及内连接写法的区别 还有就是用lambda表达式怎么写,那个效法效率高些? [解决办法] 左连右连还是内连这个其实你不需要关心.只需要根据实体的映射关 ...
- sql内连接、左连接、右连接以及全连接查询
Mysql 一,内连接.左连接.右连接以及全连接查询 一.内连接查询 inner join 关键字:inner join on 语句:select * from a_table a inner joi ...
- mysql中union,左连接,右连接,与内连接
union 1).作用:把俩次或者多次查询结果合并起来2).要求俩次查询的列数一致对于组合查询结果排序:select语句的输出用order by子句排序.在用union组合查询时,只能使用一条orde ...
- 内网虚拟机静态IP设置VMWare内网通外网不通把某一网段白名单虚拟机ping不通主机虚拟机桥接改成非192.168网段服务器与电脑直连共享wifi
首先关于虚拟机网络问题,先打开网络适配器,查看是否有vmware下载后的两个自带的虚拟网卡,网络和internet->更改适配器 可以看到VMnet1和VMnet8两个虚拟机网卡和wlan网卡以 ...
- 用神经网络分类左和右
A:[左] B:[右] (A,B)-m*n*k-(1,0)(0,1) 分类左右前提是要存在一个物理环境,在这个环境中是不区分左右的.也就是要假设存在一个左和右的二重态 (左,右)-m*n*k-(1,0 ...
- 怎么让图片从左往右移动php,javascript - 想让图片上那个块,在增加块的宽度的时候向右边移动,而不是向左边移动。需要怎么解决?...
javascript - 想让图片上那个块,在增加块的宽度的时候向右边移动,而不是向左边移动.需要怎么解决? 滿天的星座2017-07-05 10:39:20 0 2 212 * { marg ...
- SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)
目录 一.连接的介绍 连接是什么? 连接分几种? 条件连接 等值连接 自然连接 二.连接的使用 内连接 INNER JOIN 内连接与等值连接区别 内连接与自然连接区别 外连接 OUTER JOIN ...
- SQL的左连接 ,右连接,内连接和全外连接的4者区别
基本定义: left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录. right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录. inner j ...
最新文章
- 【swjtu】数据结构实验3_基于循环队列的排队买票模拟程序
- Java学习、简单代码编译
- MFC中如何给对话框添加背景图片
- 驱动12.移植dm9000驱动程序
- Kakao Talk母公司第四季净利润暴跌80%
- java邻接表无向图的创建_无向图的邻接表创建以及图的深度和…
- zabbix mysql安装配置_Zabbix安装图解教程 | 系统运维
- VMware卸载干净彻底 VMware Workstation 静态IP配置(vm常见问题)
- 黑苹果声卡HDA无声问题
- 京东已删除订单恢复方法
- 苹果Mac优化清理工具CleanMyMac X2023版本
- aliyun资源编排 介绍和实例
- java解析excel文件详解_java解析excel文件的方法
- Linux上构筑iPhone OS3.1.2开发环境之解压firmware
- 你心心念念的 GitHub手机版APP终于来咯
- 第二节 python知识点梳理
- c# 如何把一个1000数字随机分成10个数字 总和1000 加抽奖概率
- iOS15.4终于来了 搭配这款便签很舒服
- 十、Cadence ic 617 D触发器版图设计
- Android PMS运行规则