• mysql—查询加强练习


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

    • 使用where子句:

      • 如何查询1992.1.1后入职的员工。
      SELECT * FROM emp WHERE hiredate > '1992-01-01';
      
      • 1
    • 使用like操作符:%:表示0到多个字符 _ : 表示单个字符。

      • 如何显示首字符为S的员工姓名和工资。
      SELECT ename ,sal FROM emp WHERE ename LIKE 'S%';
      
      • 1
      • 如何显示第三个字符为O的所有员工的姓名和工资。
      SELECT ename ,sal FROM emp WHERE ename LIKE '__O%';
      
      • 1
    • 如何显示没有上级的雇员的情况。

    SELECT * FROM emp WHERE mgr IS NULL;
    
    • 1
    • 查询表结构。
    DESC emp;
    
    • 1
    • 使用order by 子句:

      • 如何按照工资的从低到高的顺序,显示雇员的信息。
      SELECT * FROM emp ORDER BY sal;
      
      • 1
      • 按照部门号升序而雇员的工资降序排列,显示雇员信息。
      SELECT * FROM emp ORDER BY deptno ASC,sal DESC;
      
      • 1
    • 分页查询

    基本语法:select ... limit start,rows  表示从start+1 行开始取,取出rows行,start 从0开始计算。
    公式:select * from emp order by empno limit 每页显示记录数 * (第几页-1) , 每页显示记录数;
    
    • 1
    • 2
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    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;
    
    • 1
    • 2
    • 3
    • 增强group by 的使用:

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

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

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

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

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

  • 相关阅读:
    spider 网页爬虫中的 AWS 实例数据获取问题及解决方案
    SpringBoot面试题(100+)
    Android学习笔记 1.2.5 Gradle插件和java、application等插件 && 1.2.6 依赖管理
    离子液体1-丁基-3-甲基咪唑六氟磷酸盐(BMI)改性氧化石墨烯(GO)文献摘要
    gici-open示例数据运行(ground_truth坐标的转换)
    基于OSAL 实现UART、LED、ADC等基础示例 4
    稀疏数组举例详解(Java形式表示)
    hot100----字串
    python模式设计之责任链模式
    “深入理解事件处理器、表单综合案例和组件通信“
  • 原文地址:https://blog.csdn.net/lidong777777/article/details/126555520