MySQL学习记录——구 复合查询

文章目录

  • 1、基本查询
  • 2、多表查询
  • 3、自连接
  • 4、子查询
    • 1、多行子查询
    • 2、多列子查询
    • 3、from句中的子查询
  • 5、合并查询


1、基本查询

看一些例子,不关心具体内容,只看写法

//查询工资高于500或岗位为MANAGER的雇员, 同时还要满足他们的姓名首字母为大写的J
select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';
select * from emp where (sal>500 or job='MANAGER') and substring(ename, 1, 1)=='J';
//按照部门号升序而雇员的工资降序排序
select ename, sal, deptno from emp order by deptno asc, sal desc;
//年薪降序排序
select ename, sal, comm, sal*12+ifnull(comm, 0) 年薪 from rmp order by 年薪 desc;
//工资最高的员工的名字和工作岗位
select * from emp where sal=(select max(sal) from emp);
//工资高于平均工资的员工信息
select * from emp where sal > (select avg(sal) from emp);
//每个部门的平均和最高工资
select deptno, format(max(sal),2) 最高, format(avg(sal),2) 平均 from emp group by deptno;
//显示平均工资低于2000的部门号和它的平均工资
select deptno, avg(sal) 平均工资 from emp group by deptno having 平均工资 <= 2000;
//显示每个岗位的雇员总数和平均工资
select job, count(*) 人数, format(avg(sal),2) 平均工资 from emp group by job;

2、多表查询

从之前scott库中的emp和dept两个表来查询。

在这里插入图片描述

接下来要对两个表进行穷举组合,这也就是在做笛卡尔积。

//显示雇员名、雇员工资以及所在部门的名字
select ename,sal,dname from emp, dept where emp.deptno=dept.deptno;
//部门号为10的部门名, 员工名和工资
select ename, sal, dname, dept.deptno from emp, dept where emp.deptno=dept.deptno and emp.deptno=10;
//显示各个员工的姓名, 工资和工资级别
select ename, sal, grade, losal, hisal from emp, salgrade where sal between losal and hisal;

3、自连接

自己和自己做笛卡尔积

对emp表做笛卡尔积,暂命名为e1和e2

select * from emp e1, emp e2;
select e2.ename, e2.empno from emp e1, emp e2 where e1.ename='FORD' and e1.mgr=e2.empno;

4、子查询

子查询是指嵌套在其它sql语句中的select语句,也叫嵌套查询。多表问题的解决办法就是将多表转为单表。


1、多行子查询

//显示和SMITH同一部门的员工
select * from emp where deptno=(select deptno from emp where ename='SMITH');
//查询和10号部门的工作岗位相同的雇员的名字、岗位、工资、部门号, 但是不包含10自己的
select ename, job, sal, deptno from emp where job in (select distinct job from emp where deptno=10) and deptno <> 10;
//显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
select * from emp where sal > all (select distinct sal from emp where deptno=30);
//显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门)
select * from emp where sal > any(select distinct sal from emp where deptno=30);

2、多列子查询

//查询和SMITH的部门和岗位完全相同的所有雇员, 不含SMITH本人
select * from emp where (deptno, job) in (select deptno, job from emp where ename='SMITH') and ename <> 'SMITH';

查询出来的临时结构也是表结构,所以可以把它们as成一个表,然后对这个表再做操作。


3、from句中的子查询

//显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
select ename, emp.deptno from emp, (select deptno, avg(sal) myavg from emp group by deptno) tmp where emp.deptno=tmp.deptno and emp.sal > tmp.myavg;select * from dept, (select ename, emp.deptno from emp, (select deptno, avg(sal) myavg from emp group by deptno) tmp where emp.deptno=tmp.deptno and emp.sal > tmp.myavg) t1;select * from dept, (select ename, emp.deptno from emp, (select deptno, avg(sal) myavg from emp group by deptno) tmp where emp.deptno=tmp.deptno and emp.sal > tmp.myavg) t1 where t1.deptno=dept.deptno;select t1.ename, dept.loc, t1.deptno from dept, (select ename, emp.deptno from emp, (select deptno, avg(sal) myavg from emp group by deptno) tmp where emp.deptno=tmp.deptno and emp.sal > tmp.myavg) t1 where t1.deptno=dept.deptno;
//查找每个部门工资最高的人的姓名、工资、部门、最高工资
select deptno, max(sal) from emp group by deptno;select * from emp t1, (select deptno, max(sal) from emp group by deptno) t2 where t1.deptno = t2.deptno;select ename, sal, t1.deptno, mymax from emp t1, (select deptno, max(sal) mymax from emp group by deptno) t2 where t1.deptno = t2.deptno and t1.sal=t2.mymax;
//显示每个部门的信息(部门名、编号、地址)和人员数量
select deptno, count(*) dept_num from emp group by deptno;select * from dept t1, (select deptno, count(*) dept_num from emp group by deptno) t2;select * from dept t1, (select deptno, count(*) dept_num from emp group by deptno) t2 where t1.deptno=t2.deptno;select t1.dname, t1.loc, t2.dept_num, t1.deptno from dept t1, (select deptno, count(*) dept_num from emp group by deptno) t2 where t1.deptno=t2.deptno;

5、合并查询

多个select结果合并。

union得到两个结果集的并集,并去掉重复行;union all则不去重。

//将工资大于2500或职位是MANAGER的人找出来
select * from emp where sal > 2500 union all select * from emp where job='MANAGER';

结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/683240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker的常见命令以及命令别名

常见命令 命令说明docker pull拉取镜像docker push推送镜像到DockerRegistrydocker images查看本地镜像docker rmi删除本地镜像docker run创建并允许容器docker stop停止指定容器docker start启动指定容器docker restart重新启动容器docker rm删除指定容器docker ps查看容器do…

ClickHouse--04--数据库引擎、Log 系列表引擎、 Special 系列表引擎

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.数据库引擎1.1 Ordinary 默认数据库引擎1.2 MySQL 数据库引擎MySQL 引擎语法字段类型的映射 2.ClickHouse 表引擎3.Log 系列表引擎几种 Log 表引擎的共性是&#…

opencv通道分离与合并

void QuickDemo::channels_demo(Mat & image) {std::vector<Mat>mv;//通道分离合并split(image,mv);//原图 指针(Mat)imshow("蓝色", mv[0]);imshow("绿色", mv[1]);imshow("红色", mv[2]); } split(image,mv);//原图 指针(Mat) 这里…

学习笔记20:牛客周赛32

D 统计子节点中1的个数即可&#xff08;类似树形dp&#xff1f;&#xff09; #include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<queue> #include<vector> #include<set> #include<map>u…

Rust 数据结构与算法:5栈:用栈实现前缀、中缀、后缀表达式

3、前缀、中缀和后缀表达式 计算机是从左到右处理数据的,类似(A + (B * C))这样的完全括号表达式,计算机如何跳到内部括号计算乘法,然后跳到外部括号计算加法呢? 一种直观的方法是将运算符移到操作数外,分离运算符和操作数。计算时先取运算符再取操作数,计算结果则作为…

HTML5+CSS3+JS小实例:锥形渐变彩虹按钮

实例:锥形渐变彩虹按钮 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /…

maven创建webapp+Freemarker组件的实现

下载安装配置maven Maven官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供Maven最新版正式版官方版绿色版下载,Maven安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装https://www.123pan.com/s/9QRqVv-TcUY.html链接为3.6.2-3.6.3的版本 下载解…

LLVM的中间表示

概括 选择编译器IR的决策很重要&#xff0c;它决定了优化过程将拥有多少信息来使代码运行得更快。 一方面非常高层级的IR允许优化器轻松地提取原始源代码的相关信息。 另一方面&#xff0c;低层的IR更加贴近目标机器&#xff0c;这样编译器更容易为特定的硬件生成相应的代码…

RH850从0搭建Autosar开发环境【2X】- Davinci Configurator之XCP模块配置详解(上)

XCP模块配置详解 - 上 一、XCP模块配置项处理1.1 Tx Pdu配置项二、XCP模块其他配置项2.1 参数XcpMainFunctionPeriod2.2 参数XcpOnCanEnabled2.3 容器XcpOnCan总结从本节开始先专注与配置项错误处理以及构建Autosar Rh850的最小系统搭建。 XCP模块在汽车电子各控制器中处于十分…

【Java记】数据类型与变量

一、数据类型 在Java中数据类型主要分为两类&#xff1a;基本数据类型和引用数据类型。基本数据类型有四类八种&#xff1a; 四类&#xff1a;整型、浮点型、字符型以及布尔型八种&#xff1a; 数据类型 关键字 内存占用 范围 字节型 byte 1 字节 -128~ 127 短整型 …

高程 | 数组、指针与字符串(c++)

文章目录 &#x1f4da;数组&#x1f407;数组的概念&#x1f407;数组的声明与使用&#x1f407;数组的存储与初始化&#x1f407;数组作为函数参数&#x1f407;对象数组 &#x1f4da;指针&#x1f407;内存空间的访问方式&#x1f407;指针变量的声明&#x1f407;指针运算…

蓝桥杯嵌入式第10届真题(完成) STM32G431

蓝桥杯嵌入式第10届真题(完成) STM32G431 题目 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body********************************…

【C语言】指针练习篇(下),深入理解指针---指针练习题【图文讲解,详细解答】

欢迎来CILMY23的博客喔&#xff0c;本期系列为【C语言】指针练习篇&#xff08;下&#xff09;&#xff0c;深入理解指针---指针练习题【图文讲解,详细解答】&#xff0c;图文讲解指针练习题&#xff0c;带大家更深刻理解指针的应用&#xff0c;感谢观看&#xff0c;支持的可以…

文件操作详解

文章目录 目录1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭 4. 文件的顺序读写5. 通讯录的改造6. 文件的随机读写6.1 fseek6.2 ftell6.3 rewind 7. 文本文件和二进制文件8. 文件读取结束的判定9. 文…

『运维备忘录』之 Lsof 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

Excel模板2:进度条甘特图

Excel模板2&#xff1a;进度条甘特图 ‍ 今天复刻B站up【名字叫麦兜的狗狗】的甘特图&#xff1a;还在买Excel模板吗&#xff1f;自己做漂亮简洁的甘特图吧&#xff01;_哔哩哔哩_bilibili 阿里网盘永久分享&#xff1a;https://www.alipan.com/s/cXhq1PNJfdm 当前效果&…

《剑指offer》--字符串左旋【超详细建议收藏】

字符串左旋的三种方法 1. 一个一个字符挪2. 库函数---strcpy和strncat3. 三段逆置法 1. 一个一个字符挪 代码实现如下&#xff1a; #include <stdio.h> #include <string.h>void Left_Reverse(char* str,int k) {int len strlen(str);//6int time 0;time k % …

react【六】 React-Router 路由

文章目录 1、Router1.1 路由1.2 认识React-Router1.3 Link和NavLink1.4 Navigate1.5 Not Found页面配置1.6 路由的嵌套1.7 手动路由的跳转1.7.1 在函数式组件中使用hook1.7.2 在类组件中封装高阶组件 1.8 动态路由传递参数1.9 路由的配置文件以及懒加载 1、Router 1.1 路由 1.…

【C语言】常见字符串函数的功能与模拟实现

目录 1.strlen() 模拟实现strlen() 2.strcpy() 模拟实现strcpy() 3.strcat() 模拟实现strcat() 4.strcmp() 模拟实现strcmp() 5.strncpy() 模拟实现strncpy() 6.strncat() 模拟实现strncat() 7.strncmp() 模拟实现strncmp() 8.strstr() 模拟实现strstr() 9.str…

几个经典金融理论

完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 一、预期效用理论 预期效用理论是描述人们在做出决策时如何考虑风险和不确定性的一种理论。该理论最初由经济学家冯诺伊曼&#xff08;John von Neumann&#xff09;和奥斯卡摩根斯坦恩&#xff08;Oskar…