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


相关推荐

  • 关于void (visit)(const ElemType &)的理解[通俗易懂]

    关于void (visit)(const ElemType &)的理解[通俗易懂]*关于void(visit)(constElemType&)的理解visit是一个函数指针,指向一个具体的函数,我们在具体使用visit时通过调用它(visit)的函数来调用它(visit)指向的函数,这个函数的形参列表为(constElemType&),看代码:template<classElemType>SeqList<ElemType&g…

    2022年5月12日
    35
  • Objective-C之父Brad J. Cox去世,他推动了今天苹果的软件生态[通俗易懂]

    Objective-C之父Brad J. Cox去世,他推动了今天苹果的软件生态[通俗易懂]本文转载自机器之心近日,讣告网站Legacy.com发布消息:Objective-C之父BradJ.Cox博士于2021年1月2日在自己的家中逝世,享年77岁。如果你是苹果生态的一位开发者,那你对Objective-C一定不会陌生。这门语言成就了苹果强大的软件生态,也因为苹果硬件的畅销而一路高歌猛进,挺进各大编程语言排行榜的前几名。作为一位计算机科学家,BradCox的主要成就是和TomLove一起创建了Objective–C。此外,他还以在软件工

    2022年5月29日
    40
  • 整人病毒vbs大全!

    整人病毒vbs大全!新建一个记事本把代码复制进去重名名为vbs格式的就可以了解除这个vbs脚本的办法就简单了只要关掉任务管理器里Wscript.exe这个进程就好了1、你打开好友的聊天对话框,然后记下在你QQ里好

    2022年7月3日
    22
  • linux查看日志方法

    linux查看日志方法linux日志查看tail、head、cat、tac、sed、less、echo1、命令格式:tail[必要参数][选择参数][文件]-f循环读取-q不显示处理信息-v显示详细的处理信息-c<数目>显示的字节数-n<行数>显示行数-q,–quiet,–silent从不输出给出文件名的首部-s,–sleep-interval=S与-f合用,表示在每次反复的间隔休眠S秒tail-n…

    2022年6月23日
    32
  • Linux-清除root管理员密码

    Linux-清除root管理员密码

    2021年8月7日
    64
  • 蓝牙开发心得体会

    蓝牙开发心得体会一、关于布局适配建议1、不要使用绝对布局2、尽量使用match_parent而不是fill_parent。3、能够使用权重的地方尽量使用权重(android:layout_weight)4、如果是纯色背景,尽量使用android的shape自定义。5、如果需要在特定分辨率下适配,可以在res目录上新建layout-HxW.xml的文件夹。比如要适配10

    2022年6月20日
    28

发表回复

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

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