SQL中的左连接与右连接,内连接有什么不同
SQL中的左连接与右连接,内连接有什么不同
我们来举个例子。天庭上面有一个管理系统:管理系统有个主表:主表记录着各个神仙的基本信息(我们把它当成表A)。还有个表记录着他们这个神仙的详细信息(我们把它当成表B)。
表A的信息为
| idA | name | position |
|---|---|---|
| 1 | 李靖 | 托塔天王 |
| 2 | 值年神李丙 | 四值功曹 |
| 3 | 增长天王 | 四大天王 |
| 4 | 青龙孟章神君 | 四方神 |
表B的信息为(此神仙有无犯过天条)
| IDB | Name | THINGS |
|---|---|---|
| 1 | NO | |
| 3 | YES | 上班玩忽职守 |
| 4 | NO | |
| 5 | NO | |
| 6 | YES | 调戏嫦娥妹妹 |
刚好赶上天庭蟠桃会,王母就让你统计下,参加蟠桃会的人有无犯事的记录,有的话就取消他参加宴会的资格。
这个时候,你用上了 左连接 方法
语句为下:select A.* ,B.* from A left outer join B on (A.IDA=B.IDB)
| IDA | NAME | position | IDB | Name | THINGS |
|---|---|---|---|---|---|
| 1 | 李靖 | 托塔天王 | 1 | NO | |
| 2 | 值年神李丙 | 四值功曹 | NULL | NULL | NULL |
| 3 | 增长天王 | 四大天王 | 3 | YES | 上班玩忽职守 |
| 4 | 青龙孟章神君 | 四方神 | 4 | NO |
结果就如同这样,表B中的IDB=5和6这条数据没有展示出来。且IDA=2 这条数据在表B中取null,左连接取的就是FROM后面该表中的所有数据作为查询结果。
但是如果你用了右连接:
语句为下:select A.* ,B.* from A right outer join B on (A.IDA=B.IDB)
| IDA | NAME | position | IDB | Name | THINGS |
|---|---|---|---|---|---|
| 1 | 李靖 | 托塔天王 | 1 | NO | |
| 3 | 增长天王 | 四大天王 | 3 | YES | 上班玩忽职守 |
| 4 | 青龙孟章神君 | 四方神 | 4 | NO | |
| NULL | NULL | NULL | 5 | NO | |
| NULL | NULL | NULL | 6 | YES | 调戏嫦娥妹妹 |
这个时候王母一看。什么,居然有人调戏 嫦娥,而且还查不到这个人?王母就会大发雷霆然后限你一天之内找到这个人。
内连接和自然连接的写法一样
select * from A,B where A.IDA=B.IDB
| IDA | NAME | position | IDB | Name | THINGS |
|---|---|---|---|---|---|
| 1 | 李靖 | 托塔天王 | 1 | NO | |
| 3 | 增长天王 | 四大天王 | 3 | YES | 上班玩忽职守 |
| 4 | 青龙孟章神君 | 四方神 | 4 | NO |
整体来概述一下,这些的区别是什么:
通俗易懂
左连接:左边有的,右边没有的为null
右连接:左边没有的,右边有的为null
内连接:显示左边右边共有的
SQL中的左连接与右连接,内连接有什么不同的更多相关文章
- PHP左、右、内连接
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.inner join: 内连接,又 ...
- SQLServer学习笔记<> 表连接查询----交叉连接、内连接、左连接、右连接
(1)交叉连接(cross join)即我们所说的笛卡尔积.查询出满足两张表所有的记录数,A(3条记录),B(9条记录),A*B(27条记录). 比如:雇员表(HR.employees)和货运公司(S ...
- Linq中的左连,右连,内连
1.左连接: var LeftJoin = from emp in ListOfEmployeesjoin dept in ListOfDepartmenton emp.DeptID equals d ...
- C++中的左值与右值(二)
以前以为自己把左值和右值已经弄清楚了,果然发现自己还是太年轻了,下面的这些东西是自己通过在网上拾人牙慧,加上自己的理解写的. 1. 2. 怎么区分左值和右值:知乎大神@顾露的回答. 3. 我们不能直接 ...
- 【SQL Server】左联接,右联接,内联接的比较
首先需要解释一下这几个联接的意思: left join(左联接): 返回包括左表中的所有记录和右表中联结字段相等的记录. right join(右联接): 返回包括右表中的所有记录和左表中联结字段相等 ...
- C++中的左值和右值
左值和右值的定义 在C++中,能够放到赋值操作符=左边的是左值,能够放到赋值操作符右边的是右值.有些变量既能够当左值又能够当右值.进一步来讲,左值为Lvalue,事实上L代表Location,表示在内 ...
- c++中的左值与右值
左值(lvalue)和右值(rvalue)是 c/c++ 中一个比较晦涩基础的概念,不少写了很久c/c++的人甚至没有听过这个名字,但这个概念到了 c++11 后却变得十分重要,它们是理解 move/ ...
- c++中的左值和右值的理解
1.左值和右值的概念 C++中左值(lvalue)和右值(rvalue)是比较基础的概念,虽然平常几乎用不到,但C++11之后变得十分重要,它是理解 move/forward 等新语义的基础. 左值与 ...
- SQL中的左连接与右连接有什么区别,点解返回值会不同?(转)
例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 04 王五 ...
随机推荐
- 源码安装zabbix-oracle
源码安装zabbix_agent4.0.3 1.源码包下载地址:https://www.zabbix.com/download_sources 2.下载完后上传在任意目录用root用户创建以下脚本 ...
- 如何查看jdk版本和路径
cmd进入命令提示符,查看jdk版本,输入java -version;查看jdk路径 ,输入set java home.,这个也是默认路径
- Spring MVC @CookieValue注解(5)
@CookieValue的作用 用来获取Cookie中的值 @CookieValue参数 1.value:参数名称 2.required:是否必须 3.defaultValue:默认值 @Cookie ...
- java 3des加密问题记录
3des加密有不同的加密模式和填充模式,这个网上很多不多说了,只要保证加解密的时候加密模式和填充模式保持一致就可以了 首先对于密钥的生成,java中有2种方式: 1.第一种,采用ECB模式和不填充模式 ...
- 十个非常实用的MySQL命令
建赟 版主 楼主 前言 今天介绍一些MySQL常用的实用命令,都是一些比较简单的命令.已经知道的朋友,就当是巩固吧,不知道的童鞋,可以好好在自己的机器上,练习下. 0. 显示数据库 命令:s ...
- SpringCloud学习笔记《---04 Feign---》基础篇
- VM 设置windows与Ubuntu 共享文件
虚拟机 ---> 设置 ---> 选项 ---> 共享文件夹 ---> 选择总是启用 添加Windows下的路径 ---> 确定 1. 先 ...
- python日常使用
os.path.splitext('C:\py\wxPython.gif') 得到扩展名的函数 os.remove(删除文件) os.listdir(显示该目录下的文件) os.getcwd(获取当 ...
- elast数据存放
这几天一直在索引数据,突然发现服务器状态变红色了,去官网看了下 集群状态如果是红色的话表示有数据已经丢失了!这下头大了才索引了7G数据,后面还有10多个G, 我在liunx下看了下磁盘空间 发现运行e ...
- CSIC_716_20191126【面向对象编程--继承】
继承 什么是继承:继承是新建类的一种方式,通过此方式生成的类称为子类.或者 派生类,被继承的类称为父类.基类或超类.在python中,一个子类可以继承多个父类. 继承的作用:减少代码的冗余,提高开发效 ...