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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux中进行模块操作的命令

    Linux中进行模块操作的命令

    2021年8月18日
    55
  • js实现模糊查询

    js实现模糊查询1、简述实现模糊查询方法有很多种,后端可以实现,前端使用js也可以实现。后端实现起来需要根据输入框中搜索的关键字,去后台拼接SQL语句查询。前端直接使用字符串的indexOf()方法或者正则表达式匹配实现,相比后端实现这种方法的用户体验更友好。2、demo当输入框中输入内容或者点击查询按钮时,根据输入框中的关键字,模糊查询下面表格的内容,并重新渲染表格。代码如下。(1)…

    2022年5月30日
    29
  • 原码、反码、补码知识详细讲解(此作者是我找到的讲的最细最明白的一个)[通俗易懂]

    原码、反码、补码知识详细讲解(此作者是我找到的讲的最细最明白的一个)[通俗易懂]本篇文章讲解了计算机的原码,反码和补码.并且进行了深入探求了为何要使用反码和补码,以及更进一步的论证了为何可以用反码,补码的加法计算原码的减法.论证部分如有不对的地方请各位牛人帮忙指正!希望本文对大家学习计算机基础有所帮助!一.机器数和真值在学习原码,反码和补码之前,需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号…

    2022年5月10日
    49
  • 如何在Ubuntu 14.04 和14.10 上安装新的字体

    如何在Ubuntu 14.04 和14.10 上安装新的字体

    2022年3月2日
    40
  • 苹果手机识别图片文字方法「建议收藏」

    苹果手机识别图片文字方法「建议收藏」识别图片文字的问题相信很多的小伙伴都是经历过的,一般遇到识别图片文字的问题,相信很多人都选择了用电脑打字进行转换,其实还有比这简单一下的方法吗,比如手机可以直接把图片文字识别出来,一起来看看操作方法吧。操作方法:1.先将需要进行文字识别的图片保存在手机里,然后在应用市场里找到OCR文字识别。2.将其运行在文字识别的页面有图片识别和拍照识别,在此选择图片识别。 3.这时会…

    2022年4月30日
    229
  • unix查看资源使用情况_王的命令第六集资源

    unix查看资源使用情况_王的命令第六集资源系统资源主要是内存、磁盘、CPU三项,其中任一项资源用尽都会造成系统崩溃。逻辑CPU数=物理CPU数*每个物理CPU核数

    2022年8月1日
    3

发表回复

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

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