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';

结束。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java图形化界面编程——AWT概论 笔记

2.3 Container容器 2.3.1 Container继承体系 Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;Panel可以容纳其他组件&#xff0c;但不能独立存在&#xff0c;它必须内嵌其他容器中使用&#xff0c;默认使用FlowLayout管理其内部组件布局&#xff1b;S…

DOM事件练习1

DOM事件练习1 1. 演示效果 2. 分析思路 用 ul 创建四个 li 列表整个列表的背景是红色的&#xff0c;鼠标悬浮在列表上&#xff0c;一行的变为蓝色点击任意列表&#xff0c;整个列表的背景变为白色&#xff0c;被点击的列表变为粉色需要用到 js 的点击事onclick件和forEach循环…

【并发编程】ThreadPoolExecutor类

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程⛺️稳重求进&#xff0c;晒太阳 ThreadPoolExecutor 1) 线程池状态 ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态&#xff0c;低 29 位表示线程数量 状态名 高三位 …

网络安全威胁,如何解决缓冲区溢出攻击

目录 一、什么是网络安全 二、什么是缓冲区 三、缓冲区溢出 四、缓冲区溢出攻击的类型 一、什么是网络安全 网络安全&#xff08;Network Security&#xff09;指的是保护计算机网络及其相关设备、系统和数据免受未经授权访问、破坏、篡改、窃取或滥用的威胁和攻击。随着网…

【C语言必刷题】1.打印1~100之间的奇数

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

[职场] 应聘销售的简历怎么写 #职场发展#笔记

应聘销售的简历怎么写 应聘销售的简历怎么写1 基本信息 姓名&#xff1a;吴x 性别&#xff1a;女 毕业院校&#xff1a;徐州师范大学计算机科学院 学历&#xff1a;大专 联系电话&#xff1a;电子邮件&#xff1a; 工作经验&#xff1a;4年 求职意向 期望从事职业&#xff1a;销…

前端秘法基础式(HTML)(第二卷)

目录 一.表单标签 1.表单域 2.表单控件 2.1input标签 2.2label/select/textarea标签 2.3无语义标签 三.特殊字符 一.表单标签 用来完成与用户的交互,例如登录系统 1.表单域 <form>通过action属性,将用户填写的数据转交给服务器 2.表单控件 2.1input标签 type…

(03)Hive的相关概念——分区表、分桶表

目录 一、Hive分区表 1.1 分区表的概念 1.2 分区表的创建 1.3 分区表数据加载及查询 1.3.1 静态分区 1.3.2 动态分区 1.4 分区表的本质及使用 1.5 分区表的注意事项 1.6 多重分区表 二、Hive分桶表 2.1 分桶表的概念 2.2 分桶表的创建 2.3 分桶表的数据加载 2.4 …

UART通信中的奇偶校验

UART通信中的奇偶校验&#xff1a;提升数据传输可靠性的简单方法 在微控制器&#xff08;MCU&#xff09;和各种电子设备之间的数据通信领域&#xff0c;UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用异步收发传输器&#xff09;协议是一种广泛…

23款奔驰S400商务版没有后排电动座椅那改装一套跟选装有区别吗

改装的后排电动座椅通常提供以下功能&#xff1a; 电动调节&#xff1a;座椅可以通过按钮或控制面板进行前后调节&#xff0c;以适应乘客的腿部空间需求。 靠背角度调节&#xff1a;乘客可以通过电动调节功能来调整座椅的靠背角度&#xff0c;以获得更舒适的坐姿。 座椅倾斜调…

投资银行在网络安全生态中的作用

文章目录 一、投资银行的含义(一)并购买方。(二)并购卖方。(三)IPO辅助。(四)投资银行业务的另一方面是帮助这些交易融资。二、从投资银行角度看网络安全产业(一)行业的短期前景三、复杂的网络安全并购(一)行业知识对投资银行业务很重要(二)在网络安全领域,技术…

嵌入式C语言学习——基于Linux与GCC(二)

系列文章目录 一.C语言常用关键字及运算符操作 文章目录 系列文章目录内存四区指针指针概述指针 修饰符constvoliatiletypedef 指针运算符多级指针 数组数组空间字符空间及地址 结构体、共用体定义、字节对齐位域 内存分布图段错误分析 内存四区 C/C语言的内存四区&#xff…

MySQL 基础知识(六)之数据查询(一)

目录 1 基本查询 1.1 查询相关列 (select * / 列名) 1.2 别名 (as) 1.3 去重 (distinct) 1.4 对列中的数据进行运算 (、-、*、/) 2 条件查询 (where) 2.1 等值查询 () 2.2 非等值查询 (>、<、>、<、!、><) 2.3 逻辑判断 (and、or、not) 2.4 区间判…

Shell 学习笔记(一)-Shell脚本编程简介

一 什么是shell&#xff1f; shell是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内…

rocketMQ下载、安装及配置

topic主题 - 里边存在多个队列&#xff08;队列是真实存在的&#xff09; rocketMQ安装及配置 一、官网下载 windows和linux系统版本都一样。Binary 下载 下载 | RocketMQ (apache.org) 二、修改运行内存及broker.conf、配置环境变量 1、修改根目录->bin目录下runserve…

ubuntu22.04@laptop OpenCV Get Started: 010_blob_detection

ubuntu22.04laptop OpenCV Get Started: 010_blob_detection 1. 源由2. blob应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 重点分析3.1 Threshold3.2 Area3.3 Circularity3.4 Convexity3.5 Inertia Ratio 4. 总结5. 参考资料6. 补充 1. 源由 Blob是图像中的一组连接像素&#…

猫头虎分享已解决Bug || 代码部署失败(Code Deployment Failure):DeploymentError, FailedRelease

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

点云旋转处理

实现代码为&#xff1a; //以中心化点进行旋转double theta atan(maindirection.a);//计算的是弧度单位for (int i 0; i < origipts.size(); i){pcl::PointXYZ tempone;tempone.x aftercenerlizepts[i].x*cos(theta) aftercenerlizepts[i].y*sin(theta) center.x;temp…

SPFA最短路

文章目录 从Bellman-Ford开始核心思想模拟算法执行过程时间复杂度模板 spfaspfa优化的思想模板 从Bellman-Ford开始 对于所有边权都大于等于0的图&#xff0c;任意两个顶点之间的最短路&#xff0c;显然不会经过重复的顶点或者边。也就是说任意一条最短路经过的定点数不会超过…

动态内存管理:new和delete的底层探索

之前我们在C语言上是学过malloc和calloc还要realloc等函数来在堆上获取相应的内存&#xff0c;但是这些函数是存在缺陷的&#xff0c;今天引入对new和delete的学习&#xff0c;来了解new和delete的底层实现。 首先就是在C中我们为什么要对内存进行区域的分块&#xff1f; 答案…