广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中的多表联合查询功能怎么使用
  • 256
分享到

MySQL中的多表联合查询功能怎么使用

2023-07-05 02:07:39 256人浏览 薄情痞子
摘要

本篇内容介绍了“MySQL中的多表联合查询功能怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.介绍多表查询就是同时查询两个或两个以

本篇内容介绍了“MySQL中的多表联合查询功能怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一.介绍

多表查询就是同时查询两个或两个以上的表,因为有的时候用户在查看数据的时候,需要显示的数据来自多张表.多表查询有以下分类:

  • 交叉连接查询[产生笛卡尔积,了解]

  • 内连接查询(使用的关键字inner join -- inner可以省略)

  • 外连接查询(使用的关键字outer join -louter可以省略)

  • 子查询

  • 表自关联

数据准备

-- 创建部门表create table if not exists dept3(  deptno varchar(20) primary key ,  -- 部门号  name varchar(20) -- 部门名字);-- 创建员工表create table if not exists emp3(  eid varchar(20) primary key , -- 员工编号  ename varchar(20), -- 员工名字  age int,  -- 员工年龄  dept_id varchar(20)  -- 员工所属部门);-- 给dept3表添加数据insert into dept3 values('1001','研发部');insert into dept3 values('1002','销售部');insert into dept3 values('1003','财务部');insert into dept3 values('1004','人事部');-- 给emp3表添加数据insert into emp3 values('1','乔峰',20, '1001');insert into emp3 values('2','段誉',21, '1001');insert into emp3 values('3','虚竹',23, '1001');insert into emp3 values('4','阿紫',18, '1001');insert into emp3 values('5','扫地僧',85, '1002');insert into emp3 values('6','李秋水',33, '1002');insert into emp3 values('7','鸠摩智',50, '1002'); insert into emp3 values('8','天山童姥',60, '1003');insert into emp3 values('9','慕容博',58, '1003');insert into emp3 values('10','丁春秋',71, '1005');

交叉连接查询

  • 交叉连接查询返回被连接的两个表所有数据行的笛卡尔积

  • 笛卡尔积可以理解为一张表的每一行去和另外一张表的任意一行进行匹配

  • 假如A表有m行数据,B表有n行数据,则返回m*n行数据

  • 笛卡尔积会产生很多冗余的数据,后期的其他查询可以在该集合的基础上进行条件筛选

格式

MySQL中的多表联合查询功能怎么使用

实现

MySQL中的多表联合查询功能怎么使用

结果

MySQL中的多表联合查询功能怎么使用

MySQL中的多表联合查询功能怎么使用

 内连接查询

内连接查询求多张表的交集

MySQL中的多表联合查询功能怎么使用

 格式

MySQL中的多表联合查询功能怎么使用

操作

MySQL中的多表联合查询功能怎么使用

 inner可以省略

操作

MySQL中的多表联合查询功能怎么使用

-- 查询研发部门的所属员工-- 隐式内连接select * from emp3 e ,dept3 d where e.dept_id =d.deptno and name ='研发部';-- 显式内连接select * from dept3 d join emp3 e on d.deptno =e.dept_id and name ='研发部'; -- 查询研发部和销售部的所属员工select * from dept3 a join emp3 b on a.deptno = b.dept_id and (name = '研发部' or name = '销售部') ; select * from dept3 a join emp3 b on a.deptno = b.dept_id and name in('研发部' ,'销售部') ;  -- 查询每个部门的员工数,并升序排序 select a.name,a.deptno,count(1) from dept3 a    join emp3 b on a.deptno = b.dept_id group by   a.deptno,name;  -- 查询人数大于等于3的部门,并按照人数降序排序 select  a.deptno,  a.name,  count(1) as total_cntfrom dept3 ajoin emp3 b on a.deptno = b.dept_idgroup by   a.deptno,a.namehaving   total_cnt >= 3order by   total_cnt desc;

外连接

外连接分为左外连接(left outer join)、右外连接(right outer join),满外连接(full outer join)。注意: oracle里面有full join,可是在mysql对full join支持的不好。我们可以使用unjion来达到目的。

 格式

左外连接: left outer join
        select* from A left outer join B on条件;
右外连接: right outer join
        select* from A right outer join B on条件;
满外连接: full outer join
        select * from A full outer join B on 条件;

MySQL中的多表联合查询功能怎么使用

 操作

MySQL中的多表联合查询功能怎么使用

 直接用fulljion会报错

-- 外连接查询-- 查询哪些部门有员工,哪些部门没有员工select * from dept3 left outer join emp3 on dept3.deptno = emp3.dept_id;-- 查询员工有对应的部门,哪些没有select * from dept3 right outer join emp3 on dept3.deptno = emp3.dept_id;-- 使用uNIOn关键字实现左外连接和右外连接的并集select * from dept3 left outer join emp3 on dept3. deptno = emp3.dept_idunionselect * from dept3 right outer join emp3 on dept3.deptno = emp3.dept_id;

子查询

介绍

子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,通俗一点就是包含select嵌套的查询。

特点

子查询可以返回的数据类型一共分为四种:

单行单列:返回的是一个具体列的内容,可以理解为一个单值数据;单行多列:返回一行数据中多个列的内容;多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围;多行多列:查询返回的结果是一张临时表

操作

-- 查询年龄最大的员工信息,显示信息包含员工号、员工名字,员工年龄select * from emp3 where age=(select max(age) from emp3 ); select eid,ename ,age from emp3 where age = (select max (age) from emp3);-- 查询年研发部和销售部的员工信息,包含员工号、员工名字select  * from emp3 where emp3.dept_id in (select deptno from dept3 d where d.name='研发部' or d.name='销售部'); select eid,ename , t.name from emp3 where dept_id in (select deptno, name from dept3where name ='研发部'or name ='销售部');-- 查询研发部20岁以下的员工信息,包括员工号、员工名字,部门名字 -- 方式一:关联查询select * from dept3 d join emp3 e on d.deptno =e.dept_id and (d.name='研发部' and e.age<20); -- 方式二:子查询select eid,age ,ename , name from (select * from dept3 where name = '研发部')t1 , (select * from emp3 where age <20) t2 where  t1.deptno =t2.dept_id ; select eid,age ,ename , name from (select * from dept3 where name = '研发部')t1 join  (select * from emp3 where age <20) t2 on t1.deptno =t2.dept_id ;

子查询关键字

在子查询中,有一些常用的逻辑关键字,这些关键字可以给我们提供更丰富的查询功能,主要关键字如下:

1.ALL关键字
2.ANY关键字
3.SOME关键字
4.IN关键字
5.EXISTS关键字

all关键字

格式

MySQL中的多表联合查询功能怎么使用

特点

  • ALL:与子查询返回的所有值比较为true则返回true

  • ALL可以与=、>、>=、<、<=、<>结合是来使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的其中的所有数据。

  • ALL表示指定列中的值必须要大于子查询集的每一个值,即必须要大于子查询集的最大值;如果是小于号即小于子查询集的最小值。同理可以推出其它的比较运算符的情况。

操作

MySQL中的多表联合查询功能怎么使用

any关键字和some关键字

格式

MySQL中的多表联合查询功能怎么使用

特点

  • ANY:与子查询返回的任何值比较为true则返回true

  • ANY可以与=、>、>=、<、<=、<>结合是来使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的其中的任何一个数据。

  • 表示制定列中的值要大于子查询中的任意一个值,即必须要大于子查询集中的最小值。同理可以推出其它的比较运算符的情况。

  • SOME和ANY的作用一样,SOME可以理解为ANY的别名

操作

MySQL中的多表联合查询功能怎么使用

in关键字

格式

MySQL中的多表联合查询功能怎么使用

 特点

  • IN关键字,用于判断某个记录的值,是否在指定的集合中

  • 在IN关键字前边加上not可以将条件反过来

操作

MySQL中的多表联合查询功能怎么使用

exists关键字

格式

MySQL中的多表联合查询功能怎么使用

特点

  • 该子查询如果“有数据结果”(至少返回一行数据),则该EXISTS()的结果为“true"”,外层查询执行

  • 该子查询如果“没有数据结果”(没有任何数据返回),则该EXISTS()的结果为“false",外层查询不执行

  • EXISTS后面的子查询不返回任何实际数据,只返回真或假,当返回真时 where条件成立

  • 注意,EXISTS关键字,比IN关键字的运算效率高,因此,在实际开发中,特别是大数据量时,推荐使用EXISTS关键字

操作

MySQL中的多表联合查询功能怎么使用

 自关联查询

概念

Mysql有时在信息查询时需要进行对表自身进行关联查询,即一张表自己和自己关联,一张表当成多张表来用。注意自关联时表必须给表起别名。

格式

MySQL中的多表联合查询功能怎么使用

操作

数据准备

-- 创建表,并建立自关联约束create table t_sanguo (    eid int primary key ,    ename varchar (20) ,    manager_id int,    foreign key (manager_id) references t_sanguo (eid) -- 添加自关联约束);--添加数据insert into t_sanguo values (1,'刘协',NULL) ,                             (2,'刘备',1),                             (3,'关羽',2),                            (4,'张飞',2),                             (5,'曹操',1),                            (6,'许褚',5),                             (7,'典韦',5),                             (8,'孙权',1) ,                             (9,'周瑜',8),                            (10,'鲁肃',8) ;
-- 进行关联查询-- 1.查询每个三国人物及他的上级信息,如:关羽刘备select * from t_sanguo ts ,t_sanguo ts2 where ts .manager_id  =ts2.eid  ;select ts.ename ,ts2.ename  from t_sanguo ts ,t_sanguo ts2 where ts .manager_id  =ts2.eid  ;-- 2.查询所有人物及上级(刘协(没有上级)也输出)select a.ename,b.ename from t_sanguo a left join t_sanguo b on a.manager_id = b.eid;-- 3.查询所有人物、上级,上上级比如:张飞刘备刘协selecta.ename,b.ename,c.enamefrom t_sanguo aleft join t_sanguo b on a.manager_id = b.eidleft join t_sanguo c on b.manager_id = c.eid;

mysql中的多表联合查询功能怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中的多表联合查询功能怎么使用

本文链接: https://www.lsjlt.com/news/349044.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中的多表联合查询功能怎么使用
    本篇内容介绍了“MySQL中的多表联合查询功能怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.介绍多表查询就是同时查询两个或两个以...
    99+
    2023-07-05
  • MySQL中的多表联合查询功能操作
    目录一.介绍数据准备交叉连接查询 内连接查询外连接子查询特点子查询关键字all关键字any关键字和some关键字in关键字exists关键字 自关联查询总结 一.介绍 多表查询就是同时查询两个或两个以...
    99+
    2023-02-01
    mysql多表联合查询 mysql多表查询 mysql联合查询
  • ThinkPHP多表联合查询怎么用
    这篇文章主要介绍ThinkPHP多表联合查询怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!thinkphp是什么thinkphp属于一种免费的开发框架,能够用于开发前端网页,最早thinkphp是为了简化开发而...
    99+
    2023-06-14
  • MySQL中怎么实现多表查询功能
    今天就跟大家聊聊有关MySQL中怎么实现多表查询功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、查看第一个表 mytable 的内容:   m...
    99+
    2022-10-18
  • MySQL中的聚合查询和联合查询怎么实现
    这篇文章主要介绍“MySQL中的聚合查询和联合查询怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL中的聚合查询和联合查询怎么实现”文章能帮助大家解决问题。一、聚合查询(行与行之间的计...
    99+
    2023-07-05
  • SpringBoot中怎么整合MyBatisPlus Join使用联表查询
    这篇文章主要介绍了SpringBoot中怎么整合MyBatisPlus Join使用联表查询的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot中怎么整合MyBatisPlus Join使用联表查...
    99+
    2023-07-05
  • mysql联合查询中and和or的使用
    这篇文章主要讲解了“mysql联合查询中and和or的使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql联合查询中and和or的使用”吧! 需求...
    99+
    2022-10-18
  • ThinkPHP的查询关联功能怎么用
    本文小编为大家详细介绍“ThinkPHP的查询关联功能怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“ThinkPHP的查询关联功能怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一. 模型关联1.1一...
    99+
    2023-07-06
  • MyBatis多表操作查询功能怎么用
    小编给大家分享一下MyBatis多表操作查询功能怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一对一查询用户表和订单表的关系为,一个用户多个订单,一个订单只从属一个用户一对一查询的需求:查询一个订单,与此同时查询出该...
    99+
    2023-06-25
  • 利用SpringBoot怎么实现一个多表联查功能
    这篇文章给大家介绍利用SpringBoot怎么实现一个多表联查功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体方法如下:public interface FieldValueDao extends JpaRepo...
    99+
    2023-05-31
    springboot bo
  • SQL Server中怎么实现多表连接查询功能
    SQL Server中怎么实现多表连接查询功能 ,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体代码如下所示:-- ...
    99+
    2022-10-18
  • SpringBoot中整合MyBatis-Plus-Join使用联表查询的实现
    目录1、mybatis-plus2、mybatis-plus-join3、引入依赖4、mybatis配置信息5、建库建表6、代码自动生成7、联表查询1、mybatis-plus 相信...
    99+
    2023-03-03
    MyBatis-Plus-Join 联表查询 MyBatis-Plus Join查询
  • 怎么在mybatisplus 中使用SQL拦截器实现关联查询功能
    本篇文章为大家展示了怎么在mybatisplus 中使用SQL拦截器实现关联查询功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。环境信息jdk: 1.8springboot: 2.3.4.RELE...
    99+
    2023-06-15
  • 使用Oracle怎么创建多表查询中间表
    这篇文章将为大家详细讲解有关使用Oracle怎么创建多表查询中间表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。ORACLE 多表查询中间表的创建表与表之间关系的分类:  ...
    99+
    2023-06-06
  • 怎么在Mysql中利用update实现多表联合更新
    今天就跟大家聊聊有关怎么在Mysql中利用update实现多表联合更新,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 执行 UPDATE stu...
    99+
    2022-10-18
  • 怎么在java中使用mongodb实现多表联查
    这期内容当中小编将会给大家带来有关怎么在java中使用mongodb实现多表联查,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。多表联查的查询语句:此处使用的为mongodb的robo3t可视化工具,先说下...
    99+
    2023-06-14
  • 怎么使用AOP+反射实现自定义Mybatis多表关联查询
    这篇“怎么使用AOP+反射实现自定义Mybatis多表关联查询”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用AOP+...
    99+
    2023-06-30
  • mybatis-plus在Mapper类中使用@select标签进行多表联合动态条件查询
    单表动态条件查询 1)单字段作为参数 直接用@param设置的值作为注入就好了 @Select("select * from ppms_person_message wher ...
    99+
    2023-10-20
    mybatis java mysql
  • JPA怎么使用nativequery多表关联查询返回自定义实体类
    这篇文章主要介绍了JPA怎么使用nativequery多表关联查询返回自定义实体类,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JPA nativequery多表关联查询返回...
    99+
    2023-06-25
  • 怎么合理的使用MySQL索引结构和查询
    这篇文章主要讲解了“怎么合理的使用MySQL索引结构和查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么合理的使用MySQL索引结构和查询”吧!一、高性...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作