mysql—查询加强练习

本次博客带领大家加强查询语句的使用。

  • 使用where子句:

    • 如何查询1992.1.1后入职的员工。
    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 start,rows  表示从start+1 行开始取,取出rows行,start 从0开始计算。
公式:select * from emp order by empno limit 每页显示记录数 * (第几页-1) , 每页显示记录数;
  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;
  1. 按雇员的empno号降序取出,每页显示5条记录,请分别显示 第3页,第5页。
SELECT * FROM emp ORDER BY empno DESC LIMIT 10,5;

SELECT * FROM emp ORDER BY empno DESC LIMIT 20,5;
  • 增强group by 的使用:

    1. 显示每种岗位的雇员总数、平均工资。
    SELECT COUNT(*), AVG(sal),job FROM emp GROUP BY job;
    
    1. 显示雇员总数,以及获得补助的雇员数。
    SELECT COUNT(*),COUNT(comm) FROM emp;
    

    扩展:统计没有获得补助的雇员数。

    SELECT COUNT(*),COUNT(IF(comm IS NULL,1,NULL)) FROM emp;
    
    SELECT COUNT(*),COUNT(*) - COUNT(comm) FROM emp;
    
    1. 显示管理者的总人数。
    SELECT COUNT(DISTINCT mgr) FROM emp;
    
    1. 显示雇员工资的最大差额。
    SELECT MAX(sal)-MIN(sal) FROM emp;
    
  • 数据分组的总结:

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值