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


相关推荐

  • aop实现原理面试_aop ioc 面试怎么回答

    aop实现原理面试_aop ioc 面试怎么回答作用——用于处理系统中分布的各个模块的横切关注点(如:事务管理、日志、缓存等),是使用动态代理实现,在内存中临时为增强某个方法生成一个AOP对象,该对象含有目标对象的所有方法,在特定的切入点做了增强处理,并回调原来的方法。P:咋眼一看,不能直接理解很正常。动态代理的实现——主要分两种方式实现1、JDK动态代理原理说明——JDK动态管理通过反射接收被代理的类,该代理的类必须实现接口,核心是InvocationHandler和Proxy类。2、Cglib动态代理原理说明——Cglib通过.

    2022年9月2日
  • OpenCV基础——IplImage中的widthStep

    OpenCV基础——IplImage中的widthStepIplImage有两个属性容易导致错误:width和widthStep前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空着。也就是一个宽3高3的图像的…

    2022年6月11日
  • 手机APP软件性能测试工具及流程介绍[通俗易懂]

    性能测试(上)性能测试的分类和流程什么是性能测试?性能测试概念:性能测试主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试性能测试工具:JmeterLoadrunner性能工具的组成:脚本生成器压力生成器结果分析器压力控制器性能工具工作原理:软件性能测…

    2022年4月11日
  • JSONArray转换成List<T>

    JSONArray转换成List<T>常用的方法:1.首先有一个JSONArray对象,比如是jsonArrayJSONObjectjsonObject1=newJSONObject();JSONObject1.put(“username”,”zhangsan”);JSONObjectjsonObject2=newJSONObject();JSONObject2.put(“username”,”lisi”);JSONArrayjsonArray=newJSONArray();jsonArray.add(j

    2022年6月23日
  • handlersocket php,handlersocket安装配置

    handlersocket php,handlersocket安装配置一、安装handlersocket下载地址:https://nodeload.github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/tarball/mastertarxfahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-88-gefd9972.tar.gzcdahiguti-HandlerSocket-…

    2022年8月24日
  • laravel 预加载特定的列

    laravel 预加载特定的列

    2021年11月9日

发表回复

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

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