3、sql 表的连接
摘自: https://blog.csdn.net/holly2008/article/details/25704471
表连接分为:CROSS JOIN、INNERT JOIN、OUTER JOIN、SELF JOIN。
一、CROSS JOIN 交叉连接
1、返回的记录数为两个表的记录数乘积。比如,A表有n条记录,B表有m条记录,则返回n*m条记录。
2、将A表的所有行分别与B表的所有行进行连接。
二、INNER JOIN 内连接
内连接就是关联的两张或多张表中,根据关联条件,显示所有匹配的记录,匹配不上的,不显示。
1、--也可以省略inner关键字,直接写join
2、--如果两张表的关联字段名相同,也可以使用USING子句。

三、OUTER JOIN 外连接
外连接,又分为:(-如果两张表的关联字段名相同,也可以使用USING子句)
1.LEFT OUTER JOIN/LEFT JOIN(左外连接)
2.RIGHT OUTER JOIN/RIGHT JOIN(右外连接)
3.FULL OUTER JOIN/FULL JOIN(全外连接)
1.LEFT OUTER JOIN/LEFT JOIN(左外连接)
左外连接就是关联的两张或多张表中,根据关联条件,显示匹配的记录,左表中有的记录,但是右表中没有匹配上的,以空(null)显示。
LEFT OUTER JOIN也可以简写成LEFT JOIN,效果是一样的。
2.RIGHT OUTER JOIN/RIGHT JOIN(右外连接)
右外连接就是关联的两张或多张表中,根据关联条件,显示匹配的记录。右表中有的记录,但是左表中没有匹配上的,以空(null)显示。
RIGHT OUTER JOIN也可以简写成RIGHT JOIN,效果是一样的。
3.FULL OUTER JOIN/FULL JOIN(全外连接)
全外连接就是关联的两张或多张表中,根据关联条件,显示所有匹配和不匹配的记录。(m + n)
左表中有的记录,但是右表中没有匹配上的,以空(null)显示。右表中有的记录,但是左表中没有匹配上的,也以空(null)显示。
FULL OUTER JOIN也可以简写成FULL JOIN,效果是一样的。
四、SELF JOIN 自连接
自连接,就是把一张表取两个别名,当做两张表来使用,自己和自己关联。(一般不用)

可以修改为

五、Natural JOIN 自然连接
对两张表中名称、数据类型都相同的字段进行等值连接,并返回符合条件的结果
两张表的相同的字段不能超过 11 个。
eg: select select_list from table1 natural join tabl2
六、总结
表连接分为:
1.CROSS JOIN:显示迪卡尔积。
2.INNERT JOIN:显示所有匹配的项。
3.OUTER JOIN
外连接又分为:
1) LEFT OUTER JOIN/LEFT JOIN:显示左表的所有项,右表没有匹配的项,则以null显示。
2) RIGHT OUTER JOIN/RIGHT JOIN:显示右表的所有项,左表没有匹配的项,则以null显示。
3) FULL OUTER JOIN/FULL JOIN:显示所有匹配和不匹配的项,左右两张表没有匹配的,都以null显示。
4.SELF JOIN:把一张表取两个别名,当做两张表来使用,自己和自己关联。
5、NATURAL JOIN: 把两张表根据同名称、同数据类型的字段进行连接起来,返回匹配的项。
3、sql 表的连接的更多相关文章
- 小谈SQL表的连接
简述SQL连接 SQL连接呢,主要分为以下几种内连接,左连接,右连接,全连接(当然还有很多官方的说法,这里就讲讲最常用的). 既然都叫连接了,那至少要有两个对象,也就是说,至少要有两个表,要怎么样的表 ...
- sql 表的连接与查找
A.left outer join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行. SQL: select a.a, a.b, a.c, b.c, b.d, b.f fro ...
- sql 表的连接 inner join、full join、left join、right join、natural join
一.内连接-inner jion : SELECT * FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2 INN ...
- SQL表连接查询(inner join、full join、left join、right join)
SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...
- SQL表连接查询
SQL表连接查询(inner join.full join.left join.right join) 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和 ...
- sql表连接left join,right join,inner join三者之间的区别
sql表连接left join,right join,inner join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (以左表数据为基准,不足补为NULL) ...
- sql表连接的几种方式
这里有两张表TableA和TableB,分别是姓名表和年龄表,用于我们例子的测试数据 TableA id name 1 t1 2 t2 4 t4 TableB id age 1 18 2 20 3 1 ...
- SQL表连接
背景 在上次的自考科目<数据库系统原理>中.已经接触到了关于数据库表连接的一些知识,近期的学习过程中又用到了关于数据库表的连接问题,趁此再跟大家一起回想一下. 导图总结 首先用一张思维导图 ...
- 一个典型的多表参与连接的复杂SQL调优(SQL TUNING)引发的思考
今天在看崔华老师所著SQL优化一书时,看到他解决SQL性能问题的一个案例,崔华老师成功定位问题并进行了解决.这里,在崔华老师分析定位的基础上,做进一步分析和推理,以便大家一起研究探讨,下面简述该案例场 ...
随机推荐
- redis在分布式中的使用
作者:孤独烟 来自:http://rjzheng.cnblogs.com/ 为什么要用redis:为了并发和性能,使用redis做为缓冲 使用redis有什么缺点 主要是四个问题 (一)缓存和数据库双 ...
- 在win7下,将QT集成到vs2010上
在网上查了很多,自己先是下载了一个5.2.0版本的,但在我的电脑上运行时老报错,一怒之下决定不再使用5.2.0版本的QT,而先择了更低版本的4.8.5版本,然后.....然后就成功了.谢天谢地,在这我 ...
- php 发送邮件(1)代码逻辑
tp3.2 使用phpmailer发送短信邮箱 准备工作 1.thinkphp3.2 2.qq邮箱(开通过POP3/SMTP服务)在qq邮箱内,设置->账户->POP3/IMAP/SMTP ...
- CentOS7 一个网卡配置多个IP地址
1.给网卡p8p1新创建配置文件(复制原来的p8p1,修改IP地址即可) ifcfg-p8p1:0 vim /etc/sysconfig/network-scripts/ifcfg-p8p1:0 D ...
- 导入 kotlin(7)
导入包 除了默认导入之外,每个文件可以包含它自己的导入指令. 导入语法在语法中讲述.可以导入一个单独的名字,如.import foo.Bar // 现在 Bar 可以不用限定符访问也可以导入一个作用域 ...
- Day1_Python基础一
一.基本认识 1.计算机基础 CPU:计算 内存:缓存 硬盘:存储 操作系统:硬件与软件的桥梁 应用程序:应用的平台 2.Python的历史 1989年龟叔,追求清晰.简单.优美的原则. 主要领域:云 ...
- Boston House Price with Scikit-Learn
Boston House Price with Scikit-Learn Data Description >>> from sklearn.datasets import load ...
- 浏览器端-W3School-HTML:HTML DOM Object 对象
ylbtech-浏览器端-W3School-HTML:HTML DOM Object 对象 1.返回顶部 1. HTML DOM Object 对象 Object 对象 Object 对象代表 HTM ...
- Raspbian 编译安装 PHP 7.2
原文地址:Raspbian 编译安装 PHP 7.2 0x00 配置 开发板: Raspberry Pi 3B 系统: Raspbian 2019-04-08 stretch 0x01 下载源码 20 ...
- 【10】css设置文字不换行,超过的部分用“...”代替
设置文字不换行,超过的部分用“...”代替 overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 210 ...