Mysql之查询-更加深层的查询

增强查询主要是对之前一些指令的补充

查询增强

主要针对单表查询的增强操作,也是上面一些细节的补充
在这里插入图片描述
在这里插入图片描述

-- 使用where语句
-- 查找1991.1.1后入职的员工
-- 主要是介绍在mysql中日期类型可以直接比较,需要注意格式
SELECT * FROM emp
	WHERE hiredate > '1991-01-01'
-- 如何使用like操作符
-- 	%:表示0-多个任意字符,李%就是 只要开头是李就算
--      _:表示单个字符,李_就是姓李的两个字的名字

-- 显示首字母为S的员工和工资
SELECT ename,sal FROM emp
	WHERE ename LIKE 'S%'
-- 显示第三个字符为大写O的所有员工的姓名和工资
SELECT ename,sal FROM emp
	WHERE ename LIKE '__O%'
-- 查询表结构
DESC emp

-- orderby
-- 按照工资从低到高顺序,显示雇员
SELECT * FROM emp
	ORDER BY sal
-- 先按照部门号升序,部门号同,按照工资降序
SELECT * FROM emp
	ORDER BY deptno, sal DESC;
-- 这样写的话就是先按部门号升序,然后部门内部按照薪水降序

1.日期可以直接比较2.LIKE 两个标记位 第一个%代表一个或多个任意字符,第二个_只能代表一个任意字符
ORDER BY 第一关键字 升序/降序,第二关键字 升序/降序
就能先第一关键字升序/降序完后,在相同组内进行第二该关键字的升序/降序

分页查询

比如说一个表有10w行记录肯定不能一下显出来,只能一行行显喽这就用到分页查询了
在这里插入图片描述

就是 LIMIT 数字1,数字2
数字1代表开始位置,真正的开始位置是数字1+1
0,3就是从1位置开始取三行
数字2就是取几行
可以认为是前开后闭(数字1,数字1+数字2)

-- 分页查询
-- 按empno升序取,每页三条记录,请分别显示第一页,第二页,第三页
-- 第一页
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	
# 公式的话上面有 LIMIT 每页显示记录数*(第几页-1),每页显示记录数

分组加强!

group by
在这里插入图片描述
直接上代码演示

# 演示增强分组
-- 显示每种岗位的雇员总数,平均工资
SELECT COUNT(*),FORMAT(AVG(sal),3),job  -- 保留三位小数用format
	FROM emp
	GROUP BY job
-- 显示雇员总数,以及获得补助的(comn为非null)雇员数
SELECT COUNT(*),COUNT(comn) -- 注意:count不会统计为null的
	FROM emp
-- 统计没有获得补助的
SELECT COUNT(IF (comn IS NULL,1,NULL)) FROM emp


-- 显示管理人员总数,管理人员编号可能相同,相同不算,mgr是编号
SELECT COUNT(DISTINCT mgr) -- distinct 约束条件查找的mgr不能相同,相同不计数
	FROM emp
-- 显示雇员工资最大差额
SELECT MAX(sal)-MIN(sal) 
		FROM emp

下面有个HAVING 可以对分组的结果进行过滤
相当于代替了WHERE
看下面演示小结的代码

在这里插入图片描述

小结

在这里插入图片描述
顺序不能颠倒,要不然会报错
在这里插入图片描述
注意的是
avg_sal可能是带小数点你想格式化
不能用format了,因为format函数返回类型是字符串,而having子句需要与1000整型比较大小,冲突了
所以可以使用字符串的STRCMP(AVG(sal),1000)>0作为having筛选条件

合并查询

在这里插入图片描述
在这里插入图片描述

两个关键字
union和union all连接两个SELECT语句,前面那个去重后面的不去重

SELECT * FROM emp WHERE sal>2500
UNION ALL 
SELECT *FROM emp WHERE job='MANAGER'

SELECT * FROM emp WHERE sal>2500
UNION 
SELECT *FROM emp WHERE job='MANAGER'

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁拒绝摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值