Mysql之高级查询

一、函数&分组查询

1、函数

Mysql已经定义好的,可以实现一定功能的代码块

日期函数、数字函数、字符函数、聚合函数

聚合函数:聚合函数对整体进行运算,通常返回的结果只有一个

min() max() avg() count() sum()

二、SQL关联查询

1、什么叫关联查询

关联查询又叫做连接查询,常见的连接查询可分为:内连接、外连接、自连接

#查询员工编号(empno)为7788的员工姓名(ename)和所在部门的名称(dname)

三、SQL子查询

嵌套查询,将一个查询结果当做另一个查询的条件或结果集。子查询最接近思考方式,最自然的查询。

分类:单行子查询,多行子查询

单行子查询:子查询的返回结果只有一条记录

多行子查询:子查询的返回结果有多条记录

-- emp员工表

-- 查看10号部门最小工资

-- 1:找出10号部门的所有人的薪资

select min(sal) from emp where deptno=10;

-- 查看20号部门最高工资

select max(sal) from emp where deptno=20;

-- 查看30号部门的平均工资

select avg(sal) from emp where deptno=30;

-- 统计奖金列不是null值的员工人数

select count(comm) from emp; #4个 count() 统计的字段的非空值的数量

-- 统计2月份入职的所有员工的薪资总和

-- 1:2月份入职的所有员工

select empno,month(hiredate) 月份 from emp; #month('1991-10-15') 获取日期月份 year('1991-10-15') 获取日期年份 day('1991-10-15') 获取日期号

select * from emp where month(hiredate)=2;

-- 2:薪资总和

select sum(sal) from emp where month(hiredate)=2;

-- 分组函数 group by ...having

#求每个部门的平均工资

-- 1:按照部门的编号分组

select deptno,avg(sal) from emp group by deptno;

#注意:分组之后,select 后面并不是所有的字段都可以接的

-- 分组:把重复的值去掉,只会保留一个

-- select ename -->多个值

select * from emp where deptno=30; --多个值

#查询平均工资大于2000的部门的编号和平均工资

select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

-- where:条件筛选,where后面不可以接聚合函数,where单独使用使用

select * from emp where max(sal)>3000; #Invalid use of group function

-- having:条件筛选,having 后面可以接聚合函数,having搭配group by使用

--内连接

-- 没有主从表之分,只会将两个表中相等的值列出在结果集中

#查询员工编号(empno)为7788的员工姓名(ename)和所在部门的名称(dname)

empno=7788 ename =scott -->emp表

empno=7788 deptno=20 -->emp表 dname=RESEARCH -->dept

select ename,dname from emp inner join dept on emp.deptno=dept.deptno and empno=7788;

--左外连接

-- 主表、从表 left join 前面的是主表,后面的是从表,会遍历主表中的每一个条记录,

#查询所有部门的名称(dname)和该部门对应的员工姓名(ename)

select * from dept left join emp on dept.deptno=emp.deptno;

#查询所有员工的名称(dname)和员工所所在部门的名称(dname)

select * from emp left join dept on dept.deptno=emp.deptno;

--右外连接

-- 主表、从表 right join 前面的是从表,后面的是主表,会遍历主表中的每一个条记录,

#查询所有部门的名称(dname)和该部门对应的员工姓名(ename)

select dname,ename from emp right join dept on dept.deptno=emp.deptno;

#自连接

#查询所有员工和他上级领导的姓名

select * from emp;

select e.ename 员工,p.ename 上级领导 from emp e left join emp p on e.mgr=p.empno;

-- 子查询

-- 单行子查询

-- 案例:#查询和scott在同一部门的所有员工信息

select * from emp where deptno=(select deptno from emp where ename='SCOTT');

-- 1:scott所在部门编号

select deptno from emp where ename='SCOTT';

-- 2:找到员工和scott部门编号一致的

select * from emp where deptno=(select deptno from emp where ename='SCOTT');

-- 多行子查询

#查询薪水和20号部门员工相等的不在20号部门员工的信息

select * from emp where sal in (select sal from emp where deptno=20) and deptno!=20;

-- 1:20号部门每个员工的薪水

select sal from emp where deptno=20;

-- 2:找到薪水一样,但是不在20部门的员工

select * from emp where sal in (select sal from emp where deptno=20) and deptno!=20;

四:练习

1.大于20号部门的平均工资的20号部门的员工信息

select * from emp where sal>(select avg(sal) from emp where deptno=20) and deptno=20

2.查询大于所在部门平均工资的员工信息

select * from emp a inner join (select deptno,avg(sal) avgsal from emp group by deptno) b on a.deptno=b.deptno and a.sal>b.avgsal

3.查询工资大于20号部门员工工资的所有员工信息

select * from emp where sal>(select max(sal) from emp where deptno=20)

4.薪水大于2000的员工所在部门的信息

select dept.* from dept left join emp on dept.deptno=emp.deptno and emp.sal>2000

mysql查询高于平均_Mysql之高级查询相关推荐

  1. mysql查询显示技巧_MYSQL SQL高级查询技巧

    1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. ...

  2. mysql 多表查询计算平均_MYSQL多表查询

    一. 课堂练习以及知识点 表的加法 含义:将两个表按行合并在一起,用union将两个表中的结果合并在一起 案例 select 课程号,课程名称 from course union select 课程号 ...

  3. MySQL列数不确定查询_MySQL的高级查询

    高级查询: 1.连接查询      指把2张表或者多张表之间做一个连接,所有数据放在一个表里显示.适用于有外键关系的2张表或多张表.如果没有加外键关系,但是这2张表有联系,也可以加连接查询. sele ...

  4. mysql数据库查询游戏_MySQL数据库高级查询和多表查询

    MySQL多表查询 添加练习表 -- 用户表(user) CREATE TABLE `user`( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户id( ...

  5. mysql子查询字符串位置_MySql基础-子查询

    一.子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中. 子查询用()括起来 子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询. 子查询可以包含普通select可以包括的任 ...

  6. mysql数据库查询语句过程_mysql(一) SQL查询语句执行过程

    mysql基础架构 示意图 首先 mysql  大概分为 server层 和 存储引擎层 两个部分, 引擎的架构模式是插件形式的,mysql支持多种引擎如 InnoDB.MyISAM.Memory 等 ...

  7. mysql慢日志查询的阈值_mysql慢日志查询

    慢日志查询作用 慢日志查询的主要功能就是,记录sql语句中超过设定的时间阈值的查询语句.例如,一条查询sql语句,我们设置的阈值为1s,当这条查询语句的执行时间超过了1s,则将被写入到慢查询配置的日志 ...

  8. mysql 查询可以编辑器_mysql编辑器选择查询和python程序选择查询结果的区别

    我正在执行从python程序到MySQL 5.2.39数据库的select查询.但是mysql编辑器select query和python程序select query的结果略有不同.数据库名是worl ...

  9. MYSQL之数据库设计范式和高级查询

    文章目录 1 数据库设计范式 范式一 范式二 范式三 反范式 高级查询 基础查询 条件查询 范围查询 判空查询 模糊查询 分页查询 查询后排序 聚合查询 分组查询 1 数据库设计范式 为了建立冗余较小 ...

最新文章

  1. Spring 自动化装配Bean
  2. linux中使用yum安装主程序包,linux使用yum对程序包管理相关知识
  3. errorEruda解决移动端真机调试,bug收集问题
  4. 什么时候用转发什么时候用重定向_验孕棒什么时候用最准确
  5. DBUtils、连接池
  6. 怎么用cmd关闭系统弹窗_SD卡受损怎么修复?教你一招三步搞定
  7. CF938E Max History
  8. MySQL笔记-删除session,删除阻塞任务
  9. 学习笔记 十一 : iscsi
  10. python爬虫视频课程推荐_Python 爬虫实战案例(推荐小白研究)
  11. 搜索留痕技术工具-免费搜索留痕外链工具发布
  12. 【2023】上海交通大学计算机考研信息汇总
  13. 大数据监控大屏系统,有这些demo就足够了!
  14. 咱用AppDesigner开发复现了一款我国古老的桌游 —【升官图】
  15. svg模糊_SVG的运动模糊效果
  16. SpringCloud学习笔记7——初级篇之服务降级
  17. MSI B450迫击炮装机常见问题解决方法
  18. 关于APIC的一些概念
  19. Ubuntu18.04LTS系统编译Android所需安装的一些插件内容
  20. 云数据库精华问答 | 什么是云数据库?

热门文章

  1. 【Popover 弹出框】在vue中,ElmentUI下Popover 弹出框组件 “ 自定义样式修改不了 ” 的解决方法
  2. 纯CSS手风琴图片层叠hover展开
  3. 搜索客户端传参监控,request日志监控
  4. [Java Web]会话跟踪技术
  5. Makefile脚本启动VCS+Verdi
  6. 材料员考试建筑八大员考试材料员港口工程建筑钢材的检验方法
  7. System Center 2012 R2实例3—SCOM之SharePoint全方位监视6—宕机监视
  8. autojs开发的火云与共享API脚本源代码免费分享
  9. 利用openoffice转成image
  10. QT操作Sqlite数据库修改字段名称和删除字段