Java学习笔记 --- MySQL-表查询加强

一、MySQL表查询-加强

1、使用 where 子句

2、使用 like 操作符

      %:表示0到多个任意字符

      _ :表示单个任意字符

3、使用 order by 子句

# 查询加强
-- 使用 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%';

-- 如何显示第三个字符为大写 O 的所有员工的姓名和工资
SELECT ename, sal FROM emp
	WHERE ename LIKE '__O%';

-- 如何显示没有上级的雇员的情况
SELECT * FROM emp
	WHERE mgr IS NULL;

-- 查询表结构
DESC emp;

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

分页查询

基本语法:SELECT ..... LIMIT STARTROWS

表示从 start+1 行开始取,取出 rows 行,start 是从0开始计算

推导一个公式

SELECT * FROM 表名

        ORDER BY 列名

        LIMIT  每页显示记录数 * (第几页 - 1 ),每页显示记录数

# 分页查询
-- 按雇员的 id 号升序取出, 每页显示 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 每页显示记录数 * (第几页-1) , 每页显示记录数
	
# 按雇员的 empno 号降序取出,每页显示5条记录,请分别显示第三页,第五页对应的sql语句
-- 第三页
SELECT * FROM emp
	ORDER BY empno DESC
	LIMIT 10, 5;
	
-- 第五页
SELECT * FROM emp
	ORDER BY empno DESC
	LIMIT 20, 5;

使用分组函数和分组子句 group by

# 增强 group by 的使用

-- (1) 显示每种岗位的雇员总数、平均工资。
SELECT COUNT(*), job, AVG(sal) FROM emp
	GROUP BY job;
	
-- (2) 显示雇员总数,以及获得补助的雇员数。
-- 思路: 获得补助的雇员数 就是 comm 列为非 null, 就是 count(列),如果该列的值为 null, 是
-- 不会统计 , SQL 非常灵活,需要我们动脑筋
SELECT COUNT(*), COUNT(comm) FROM emp;
-- 扩展要求:统计没有获得补助的雇员数
SELECT COUNT(*), COUNT(IF (comm IS NULL, 1, NULL)) FROM emp;

SELECT COUNT(*), COUNT(*) - COUNT(comm) FROM emp;

-- (3) 显示管理者的总人数。小技巧:尝试写->修改->尝试[正确的]
SELECT COUNT(DISTINCT mgr) FROM emp;

-- (4) 显示雇员工资的最大差额。
-- 思路: max(sal) - min(sal)
SELECT MAX(sal) - MIN(sal) FROM emp;

数据分组的总结

        如果select语句同

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值