SQL语法(五) 多表联合查询

SQL语法(五) 多表联合查询前言当需要获取的数据分布在多张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99)范例1.笛卡儿积将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积。结果的数量为所有表的数量的乘积。–SQL92方式–表名以逗号隔开实现多表查询–SQL99方式–使用crossjoin关键字2.等值连接筛选&不等…

大家好,又见面了,我是你们的朋友全栈君。

前言

           当需要获取的数据分布在多张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99)

范例

1.笛卡儿积

将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积。结果的数量为所有表的数量的乘积。

–SQL92方式
  –表名以逗号隔开实现多表查询
–SQL99方式
  –使用cross join 关键字

SQL语法(五) 多表联合查询

2.等值连接筛选&不等值连接筛选(内连接)

–概念:先做表的笛卡尔积,然后筛选,筛选条件为等值筛选。
–注意:条件为字段的值相同(字段值条件)来进行筛选,字段的名字可以不同

–SQL92方式
  –where 筛选条件…
–SQL99方式
  –使用natural join 表名(自然连接,根据名称相同字段进行等值连接)
  –使用(inner) join 表名 on 筛选条件…    (内连接,根据筛选条件进行等值/不等值连接,inner关键字可以省略不写)
  –使用(inner) join 表名 using(字段名,字段名,….)  (内连接,根据名称相同字段进行等值连接,可指定字段,inner关键字可以省略)

SQL语法(五) 多表联合查询

SQL语法(五) 多表联合查询

SQL语法(五) 多表联合查询

3.自连接

SQL语法(五) 多表联合查询

4.外连接

(1)左外连接

–SQL92方式
  –where子句中在右边连接字段后加 (+),显示左边对应字段没有值的数据
–SQL99方式
  –select 内容 from 表名 left (outer) join 表名 on 连接条件 (外连接,outer可以省略不写)

SQL语法(五) 多表联合查询

(2)右外连接

–SQL92方式
  –where子句中在左边连接字段后加 (+),显示右边对应字段没有值的数据
–SQL99方式
  –select 内容 from 表名 right (outer) join 表名 on 连接条件 (外连接,outer可以省略不写)

SQL语法(五) 多表联合查询

(3)满外连接

–SQL92方式
  无
–SQL99方式
  –select 内容 from 表名 full (outer) join 表名 on 连接条件 (外连接,outer可以省略不写)

SQL语法(五) 多表联合查询

附录:多表联合查询示例(SQL99)

--查询所有数据
select * from EMP for update;

--笛卡尔积 (1,2,3) (5,6,7)
--SQL92,SQL99(推荐)
--使用 cross join 关键字
select * from emp cross join dept;--15*4=60

--等值连接和不等值连接(内连接)
--先做笛卡尔积,然后根据条件进行筛选
--注意:条件为字段的值相同来进行筛选,字段的名字可以不同

--等值连接
       --自然连接:根据名称相同字段进行等值连接
       --使用 natural join关键字
       select * from emp natural join dept;
       --名称字段不相同
       -- 表一 inner join 表二 on 筛选条件
       select * from emp e inner join dept t on e.deptno = t.deptno;
       --名称字段相同也可以使用
       -- 表一 inner join 表二 using (字段名,字段名...)
       select * from emp join dept using (deptno);
--不等值连接
   select * from emp e inner join dept t on e.sal between 1000 and 1500;

--自连接
   select * from emp a inner join emp b on a.empno = b.mgr;


--外连接

--左外连接
-- 表一 left (outer) join 表二 on 筛选条件
select * from emp e left join dept t on e.deptno = t.deptno;

--右外连接
-- 表一 right (outer) join 表二 on 筛选条件
select * from emp e right join dept t on e.deptno = t.deptno;

--满外连接
-- 表一 full (outer) join 表二 on 筛选条件
select * from emp e full join dept t on e.deptno = t.deptno;

附录:操作视频

SQL语法之多表联合查询

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131535.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python画图常用颜色

    python画图常用颜色’.’pointmarker’,’pixelmarker’o’circlemarker’v’triangle_downmarker’^’triangle_upmarker’<’triangle_leftmarker’>’triangle_rightmarker’…

    2022年6月12日
    38
  • AGI:走向通用人工智能的【生命学&哲学&科学】第一篇——生命、意识、五行、易经、量子

    AGI:走向通用人工智能的【生命学&哲学&科学】第一篇——生命、意识、五行、易经、量子AGI:走向通用人工智能的【生命学&哲学&科学】第一篇——生命、意识、五行、易经、量子经典的物理统一在原子上,量子的物理统一在量子上,化学统一在元素上,而生命统一在DNA上,DNA本身拆干了,其实就是一群元素,按照经典物理和量子物理所进行的组合。科学本质上是一种经验主义的认识论,属于哲学的一个分支。量子理论,要通过哲学语言,量子属于形而上看不到、摸不着的东西。元气的基本五行,是世界万物的行成与演变的方式。生命的本质是化学,化学的本质是物理,物理的本质用数学描述,数学的本质是由我们的某种语言写出

    2022年6月3日
    37
  • CefSharp 与 js 相互调用「建议收藏」

    CefSharp 与 js 相互调用「建议收藏」CefSharp与js相互调用一.CefSharp调用jsCefSharp.WinForms.ChromiumWebBrowserwb;…方式1.ExecuteScriptAsync方法使用方式与js的eval方法一样,异步执行,无返回值。//xxx为js的方法名称wb.ExecuteScriptAsync(“xx

    2022年9月19日
    2
  • 如何免费下载付费音乐歌曲,6个网站+8个APP

    如何免费下载付费音乐歌曲,6个网站+8个APP现在听音乐的软件,QQ音乐,酷狗,网易云等,很多歌曲可以在线听。但是下载某些歌曲或者在线听高品质无损的都需要付费。这一期,给大家推荐的是免费下载付费歌曲工具,包括网站跟APP。网站篇1.VIP

    2022年7月1日
    69
  • 操作系统用户态和内核态之间的切换过程是什么_用户进程从用户态切换到内核态

    操作系统用户态和内核态之间的切换过程是什么_用户进程从用户态切换到内核态操作系统用户态和内核态之间的切换过程1.用户态和内核态的概念区别究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子voidtestfork(){if(0==fork())…

    2022年9月17日
    2
  • Kafka入门经典教程_kafka菜鸟教程

    Kafka入门经典教程_kafka菜鸟教程转自:https://blog.csdn.net/yuan_xw/article/details/512109541Kafka入门教程1.1消息队列(MessageQueue)MessageQueue消息传送系统提供传送服务。消息传送依赖于大量支持组件,这些组件负责处理连接服务、消息的路由和传送、持久性、安全性以及日志记录。消息服务器可以使用一个或多个代理实例。J…

    2022年10月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号