数据库mysql-6-复合查询
2021/7/31 19:37:03
本文主要是介绍数据库mysql-6-复合查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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-6-复合查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南