首页 > 数据库 >Mysql表查询加强

Mysql表查询加强

时间:2023-05-25 12:04:27浏览次数:56  
标签:sal -- empno 查询 emp Mysql 加强 雇员 SELECT

1. mysql 表查询--加强  768

1.1 基本介绍

在前面我们讲过mysq|表的基本查询,但是都是对一张表进行的查询,这在实际的软件开发中,还远远的不够。下面我们讲解的过程中,将使用前面创建三张表(emp,dept,salgrade)为大家演示如何进行多表查询

1.2使用where子句  案例演示  768

?如何查找1992.1.1后入职的员工

如何使用like操作符

%:表示0到多个字符    _: 表示单个字符

?如何显示首字符为S的员姓名和工资

?如何显示第3 E个字符为大写O的所有员工的姓名和工资

如何显示没有上级的雇员的情况

查询表结构

代码在E:\java学习\初级\course157\db_

selectpro

#Mysql表查询加强  768
SELECT * FROM emp
SELECT * FROM dept
SELECT * FROM salgrade

-- 使用where子句
-- 	?如何查找1992.1.1后入职的员工
#说明,在Mysql中日期类型可以直接比较,需要注意格式
SELECT * FROM emp
	WHERE hiredate > '1992-01-01'
-- 如何使用like操作符(模糊查询)
-- 	%:表示0到多个任意字符   _:表示单个任意字符
-- 	?如何显示首字符为S的员姓名和工资
SELECT ename,sal FROM emp
	WHERE ename LIKE 'S%'
-- 	?如何显示第3 E个字符为大写O的所有员工的姓名和工资
SELECT ename,sal FROM emp
	WHERE ename LIKE '__O%'
-- 如何显示没有上级的雇员的情况
SELECT * FROM emp
	WHERE mgr IS NULL
-- 查询表结构
DESC emp
DESC dept
DESC salgrade

1.3 使用order by子句 案例演示  768

?如何按照工资的从低到高的顺序,显示雇员的信息

?按照部门号升序而雇员的工资降序排列,显示雇员信息

代码在E:\java学习\初级\course157\db_

selectpro

-- 使用order by子句  768
-- 	?如何按照工资的从低到高的顺序,显示雇员的信息
SELECT * FROM emp
	ORDER BY sal
-- 	?按照部门号升序而雇员的工资降序排列,显示雇员信息
SELECT * FROM emp
	ORDER BY deptno ASC,sal DESC

1.4 分页查询  769

1.按雇员的empno号升序取出,每页显示3条记录, 请分别显示第1页,第2页,第3页

2.基本语法: select ... limit start, rows表示从start+1行开始取,取出rows行,start从0开始计算

Mysql表查询加强_分组函数

按雇员的empno号降序取出,每页显示5条记录。 请分别显示第5页对应的sq|语句

代码在E:\java学习\初级\course157\db_

page

#分页查询  769
-- 1.按雇员的empno号升序取出,每页显示3条记录, 请分别显示第1页,第2页,第3页
-- 第一页
SELECT * FROM emp
	ORDER BY empno
	LIMIT 0,3
-- 第二页
SELECT * FROM emp
	ORDER BY empno
	LIMIT 3,3
-- 第三页
SELECT * FROM emp
	ORDER BY empno
	LIMIT 6,3
-- 第四页
SELECT * FROM emp
	ORDER BY empno
	LIMIT 9,3
-- 第五页
SELECT * FROM emp
	ORDER BY empno
	LIMIT 12,3
-- 推到一个公式
SELECT * FROM emp
	ORDER BY empno
	LIMIT 每页显示记录数 * (第几页-1) , 每页显示记录数
-- 按雇员的empno号降序取出,每页显示5条记录。 请分别显示第5页对应的sq|语句	
SELECT * FROM emp
	ORDER BY empno DESC
	LIMIT 20,5

1.5 使用分组函数和分组子句  770

(1)显示每种岗位的雇员总数、平均工资。

(2)显示雇员总数,以及获得补助的雇员数。

(3)显示管理者的总人数。

(4)显示雇员工资的最大差额。

代码在E:\java学习\初级\course157\db_

groupby2

#使用分组函数和分组子句  770
-- (1)显示每种岗位的雇员总数、平均工资。
SELECT COUNT(*),AVG(sal),job
	FROM emp
	GROUP BY job
-- (2)显示雇员总数,以及获得补助的雇员数。
-- 思路: 获得补助的雇员数 就是 comm 列为非 null, 就是 count(列),如果该列的值为 null, 是不会统计
-- , SQL 非常灵活,需要我们动脑筋.
SELECT COUNT(*),COUNT(comm)
	FROM emp
-- 扩展要求:统计没有获得补助的雇员数
#解释:我们是统计没补助的即为null的个数,单数count不统计null,所以我们利用if语句,
#将为null的值赋值为1,将部位空的值赋值为空null,这样count就可以统计为null的个数了
SELECT COUNT(*),COUNT(IF(comm IS NULL,1,NULL))
	FROM emp
#还可以这样写,利用总数减去得到补助的,就是没获得补助的
SELECT COUNT(*),COUNT(*)-COUNT(comm)
	FROM emp
-- (3)显示管理者的总人数。
SELECT COUNT(DISTINCT mgr)#DISTINCT是去重的,因为管理者有重复的
	FROM emp
-- (4)显示雇员工资的最大差额。
SELECT MAX(sal)-MIN(sal)
	FROM emp

SELECT * FROM emp

1.5.1 数据分组的总结  771

如果select语句同时包含有group by ,having,limit,order by那么他们的顺序是group by , having , order by,limit

Mysql表查询加强_分组函数_02

1.5.2 应用案例:  771

请统计各个部门的平均工资,并且是大于1000的,并且按照平均工资从高到低排序,取出前两行记录.

代码在E:\java学习\初级\course157\db_

groupby2

-- 请统计各个部门的平均工资,并且是大于1000的,  771
-- 并且按照平均工资从高到低排序,取出前两行记录.
SELECT AVG(sal) AS avg_sal,deptno
	FROM emp
	GROUP BY deptno 
	HAVING avg_sal > 1000
	ORDER BY avg_sal DESC
	LIMIT 0,2

标签:sal,--,empno,查询,emp,Mysql,加强,雇员,SELECT
From: https://blog.51cto.com/u_15784725/6346308

相关文章

  • MySQL Binlog 权限
    Checkbinlogstatus--https://github.com/alibaba/canal/wiki/AdminGuideshowvariableslike'log_bin';showvariableslike'binlog_format';MySQLBinlog权限需要三个权限SELECT,REPLICATIONSLAVE,REPLICATIONCLIENTGRANTSELECT,REPLICATIO......
  • 在Linux中优雅的安装MYSQL
        Mysql-8.0.27安装包位置:https://pan.baidu.com/s/1DFfDlnmCh3qVaj091qcpNA    提取码:vmny首先我们需要准备一个Linux环境,和一个MySql的安装包(本次采用的mysql安装包版本为:8.0.27)把文件放在linux下的/usr/local目录下对文件进行解压      ......
  • mysql删除表数据,释放空间
    1.当RDS磁盘报警的时候,不能降配时候,需要删除部分日志表,释放空间。TRUNCATE 只能删除整个表或者整个分区的数据,不能删除部分行。如果需要删除部分行,应该使用DELETE命令。使用DELETE后,空间还不能释放,执行OPTIMIZETABLEtablename;释放空间......
  • mysql统计函数
    1. 合计/统计函数  7581.1 count  7581.1.1 练习统计一个班级共有多少学生?统计数学成绩大于90的学生有多少个?统计总分大于250的人数有多少?count(*)和count(列)的区别-- 解释 :count(*) 返回满足条件的记录的行数-- count(列): 统计满足条件的某列有多少个,但是会排除......
  • Elasticsearch之join关联查询及使用场景 | 京东云技术团队
    在Elasticsearch这样的分布式系统中执行类似SQL的join连接是代价是比较大的,然而,Elasticsearch却给我们提供了基于水平扩展的两种连接形式。这句话摘自Elasticsearch官网,从“然而”来看,说明某些场景某些情况下我们还是可以使用的一、join总述1、关系类比在关系型数据库中,以MySQL为......
  • mysql数学和日期和加密函数
    1. 数学相关函数  762rand()返回一个随机浮点值v,范围在0到1之间(即其范围为0≤v≤1.0)。若已指定一个整数参数N.则它被用作种子值,用来产生重复序列。1.1 练习代码在E:\java学习\初级\course156\db_math#演示数学相关函数762--ABS(num)绝对值SELECTABS(-10)FROMDUAL;#......
  • MySQL8中binlog过期参数
    binlog_expire_logs_seconds设置二进制日志过期时间(以秒为单位)。二进制日志文件过期后,可以被自动删除。可能的删除发生在启动时和刷新二进制日志(flushlogs、或日志容量超过max_binlog_size的设置)时。默认的二进制日志过期时间为2592000秒,即30天(30*24*60*60秒)。如果binlo......
  • 【MySQL】【锁】MySQL 中的锁
    1  前言我们这节来看看MySQL中的锁,采用Q&A的形式,看起来会比较轻松。2 锁的分类在MySQL里,根据加锁的范围,可以分为全局锁、表级锁和行锁三类。3  全局锁3.1  全局锁是怎么用的?要使用全局锁,则要执行这条命令:flushtableswithreadlock执行后,整个数据库就处......
  • mysql 多个count(*)结果展示在一行
    1select2count(DISTINCTqid,IF(question_type='单选题',TRUE,NULL))as单选题总数,3count(DISTINCTqid,IF(question_type='多选题',TRUE,NULL))as多选题总数,4count(DISTINCTqid,IF(question_type='判断题',TRUE,NULL))as判断题总......
  • 【MySQL用法】mysql日期时间函数总结(附带mysql官网介绍)
    MySQL提供了大量丰富的函数,在MySQL的使用中经常会用到各种函数,本文记录的是常见的MySQL的日期与时间函数,主要用于处理日期和时间值。MySQL获得当前日期+时间函数获得当前日期+时间(date+time)函数:now(),SYSDATE();SELECTnow(),SYSDATE();sysdate()日期时间函数跟now()类似,区......