【MySQL】子查询、合并查询、表的连接

news/2024/10/3 14:18:39 标签: mysql, 数据库

目录

一、子查询

1、单行子查询

显示SMITH同一部门的员工信息

2、多行子查询

in关键字

查询和10号部门的工作岗位相同的雇员的名字、岗位、工资、部门号,但是筛选出的雇员的部门不能有10号部门

all关键字 

查询工资比30号部门中所有雇员工资高的雇员的姓名、工资、部门号

any关键字

显示工资比30部门中任意雇员工资高的雇员的姓名、工资、部门号,可以包含部门号是30的雇员

3、多列子查询

查询和SMITH的部门和岗位完全相同的雇员的信息,不含SMITH本人

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

显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资

查找每个部门工资最高的雇员的姓名、工资、部门、最高工资

二、合并查询

union

将工资大于2500或职位是MANAGER的雇员找出来

union all

三、表的连接

内连接

显示SMIATH的名字和部门名称

外连接

左外连接

查询所有学生的成绩,如果这个学生没有成绩,也要将这个学生的个人信息显示出来

 右外连接

对stu表和exam表联合查询,把所有成绩都显示出来,即使这个成绩没有匹配的学生也要显示出来

显示部门名称和这些部门的雇员信息,同时列出没有雇员的部门

一、子查询

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

1、单行子查询

返回一行记录的子查询

显示SMITH同一部门的员工信息

select * from emp where (select deptno from emp where ename<=>'SMITH');

2、多行子查询

返回多行记录的子查询

in关键字

查询和10号部门的工作岗位相同的雇员的名字、岗位、工资、部门号,但是筛选出的雇员的部门不能有10号部门
select ename,job,sal,deptno from emp where job in(select distinct job from emp where deptno=10) and deptno<>10;

all关键字 

查询工资比30号部门中所有雇员工资高的雇员的姓名、工资、部门号
select ename,sal,deptno from emp where sal > all(select sal from emp where deptno=30);

//或者是使用聚合函数
select ename,sal,deptno from emp where sal > (select max(sal) from emp);

any关键字

显示工资比30部门中任意雇员工资高的雇员的姓名、工资、部门号,可以包含部门号是30的雇员
select ename,sal,deptno from emp where sal > any(select sal from emp where deptno<=> 30);

3、多列子查询

查询和SMITH的部门和岗位完全相同的雇员的信息,不含SMITH本人

select * from emp where (deptno,job) = (select deptno,job where ename='SMITH') and ename<>'SMITH';

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

子查询出现的两种场景:1.在where后出现充当筛选筛选条件。2.在from后出现充当临时表(一般是笛卡尔积)。

显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资

select ename,detpno,sal,a_s from emp,(select avg(sal) a_s,deptno dt from emp group by deptno) tmp where emp.sal>tmp.a_s and emp.deptno=tmp.dt;

查找每个部门工资最高的雇员的姓名、工资、部门、最高工资

select ename,sal,emp.deptno,m_s form emp,(select deptno,max(sal) m_s from emp group by deptno) tmp where emp.deptno=tmp.deptno AND sal = m_s;

二、合并查询

在实际应用中为了合并多个select的结果,可以使用集合操作符union、union all

union

该操作符用于取得两个select结果的并集。当使用该操作符时,自动去掉结果集中的重复行。

将工资大于2500或职位是MANAGER的雇员找出来
select ename,sal,job from emp where sal>2500 union select ename,sal,job from emp where job='MANAGER';

union all

该操作符用于取得两个select结果的并集。当使用该操作符时,不会自动去掉结果集中的重复行。

三、表的连接

表的连接分为内连接和外连接

内连接

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询

//基本格式:
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
显示SMIATH的名字和部门名称
//之前的写法:
select ename,dname from emp,dept where emp.deptno=dept.deptno and ename='SMITH';

//使用标准的内连接写法:
select ename,dname form emp inner join dept on emp.deptno=dept.deptno and ename='SMITH';

外连接

左外连接

如果联合查询,左侧的表完全显示我们就说是左外连接

//语法:
select 字段名 form 表1 left join 表2 on 连接条件

 建两张表:

查询所有学生的成绩,如果这个学生没有成绩,也要将这个学生的个人信息显示出来

 右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接

对stu表和exam表联合查询,把所有成绩都显示出来,即使这个成绩没有匹配的学生也要显示出来

显示部门名称和这些部门的雇员信息,同时列出没有雇员的部门
//使用左外连接:
select d.dname,e.* from  dept d left join emp e on d.deptno=e.deptno;


http://www.niftyadmin.cn/n/5688510.html

相关文章

MFC工控项目实例二十一型号选择界面删除参数按钮禁用切换

承接专栏《MFC工控项目实例二十手动测试界面模拟量输入实时显示》 对于禁止使用的删除、参数按钮&#xff0c;在选中列表控件选项时切换为能够使用。 1、在TypDlg.h文件中添加代码 #include "ShadeButtonST.h" #include "BtnST.h" class CTypDlg : publi…

【洛谷】AT_abc373_c [ABC373D] Hidden Weights 的题解

【洛谷】AT_abc373_c [ABC373D] Hidden Weights 的题解 洛谷传送门 AT传送门 题解 本地WA&#xff0c;提交AC&#xff0c;奇迹 AT&#xff0c;奇迹评测机 题目大意&#xff1a; 给定 n n n 个点&#xff0c; m m m 条有向边&#xff0c;每条有向边从 u i u_i ui​ 指向…

激光切割机适用材质有哪些

激光切割机是一种利用激光束对各种材料进行高精度、高速度切割的机器设备。其适用材质广泛&#xff0c;包括但不限于以下两大类&#xff1a; 一、金属材料 不锈钢&#xff1a;激光切割机较容易切割不锈钢薄板&#xff0c;使用高功率YAG激光切割系统&#xff0c;切割不锈钢板的…

rabbitMq------客户端模块

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言消费者模块信道管理模块管理的字段提供的接口 信道内存管理连接管理类 前言 在RabbitMQ中&#xff0c;提供服务的是信道&#xff0c;因此在客⼾端的实现中&…

数据结构--包装类简单认识泛型

目录 1 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱&#xff0c;自动装箱和自动拆箱 2 什么是泛型 3 引出泛型 3.1 语法 4 泛型类的使用 4.1 语法 4.2 示例 5 泛型的上界 5.1 语法 5.2 示例 5.3 复杂示例 8 泛型方法 8.1 定义语法 8.2 示例 总结 1 …

C语言_内存函数

内存函数是 C 标准库中的一组函数&#xff0c;用于管理和操作内存。使用时需要包含头文件<string.h>。 1. memcpy的使用和模拟实现 函数形式如下&#xff1a; void* memcpy(void* destination, const void* source, size_tnum);函数解析和注意事项&#xff1a; memcp…

二、创建drf纯净项目

1)创建项目 django-admin startproject api2&#xff09;创建app django-admin startproject api_app3)修改settings.py注释掉一些没用的配置 INSTALLED_APPS [# django.contrib.admin,# django.contrib.auth,# django.contrib.contenttypes,# django.contrib.sessions,# d…

VScode 自定义代码配色方案

vscode是一款高度自定义配置的编辑器, 我们来看看如何使用它自定义配色吧 首先自定义代码配色是什么呢? 看看我的代码界面 简而言之, 就是给你的代码的不同语义(类名, 函数名, 关键字, 变量)等设置不同的颜色, 使得代码的可读性变强. 其实很多主题已经给出了定制好的配色方案…