ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库mysql-6-复合查询

2021-07-31 19:30:45  阅读:209  来源: 互联网

标签:多表 工资 数据库 查询 部门 mysql eg select


1.多表查询

本质上是数据分布在不同的数据表中,在查询的时候,需要在不同的表中进行查询,但是我们只想写一个sql,所以就产生了多表查询;  

一个sql语句当中,where后面的约束条件依赖一个select语句的查询结果;

注意:多表查询时,要注意查询的列是属于哪一个表当中的,如果多个表当中存在相同名称的字段,则需要指定该字段属于哪一个表,否则mysql的服务端层,在解析sql语句的时候,是没有办法进行区分的,就会报错。

eg:显示雇员名、雇员工资以及所在部门的名字,需要多表查询

 eg:显示雇员编号、雇员名、雇员工资以及所在部门的地址,需要多表查询

eg:显示部门号为20的部门名,员工名和工资

eg:显示各个员工的姓名,工资,及工资级别

2.自连接

自连接是指在同一张表连接查询

eg:显示员工ADAMS的上级领导的编号和姓名

使用子查询:

使用多表查询(自查询) 

3.子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询

(1)单行子查询

外层select,内层select;内层查询的内容是单行单列的

eg:显示FORD同一部门的员工

 eg:显示JONES同一工作的员工

(2)多行子查询

本质上指的是内层的select查询出来的结果是单列多行的

  • in关键字:外层select的约束条件只要满足内层select查询出来的任意一个结果

eg:查询和30号部门的工作相同的雇员的名字,岗位,工资,部门号,但是不包含30自己的

  • all关键字:全部

eg:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

  • any关键字:任意

eg:显示工资比部门10的任意员工的工资高的员工的姓名、工资和部门号

(3)多列子查询

本质上是单行多列的数据,本质上内层的select搜索了多列的数据

eg:查询和KING的部门和岗位完全相同的所有雇员,不含SMITH本人

 4.在from子句中使用子查询

子查询的语句在from子句中出现,是把子查询当做一个临时表来使用

eg:显示低于自己部门平均工资的员工的姓名、部门、工资、平均工资

eg: 查找每个部门工资最低的人的姓名、工资、部门、最低工资

 5.合并查询

为了合并多个select的执行结果,可以使用集合操作符union、union all

(1)union 

该操作符用于取得两个结果集的并集,其会自动去掉结果集中的重复行

(2)union all

该操作符用于取得两个结果集的并集,但其不会去掉结果集中的重复行

(3)例子:查询工资大于2000或职位是MANAGER的人

标签:多表,工资,数据库,查询,部门,mysql,eg,select
来源: https://blog.csdn.net/weixin_43807876/article/details/119144169

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有