day02 MYSQL的查询操作详解

本节内容所用的测试表

有需要的,可以点击这里下载,test.sql
主要包含ename名字,job职务,hiredate入职时间,sal薪资等字段
在这里插入图片描述

基础查询

查询某个字段

SELECT 字段名 FROM 表名;
  • 在emp表中查询ename字段数据
    在这里插入图片描述
  • 查询多个表中的字段内容:ename job mgr信息
    在这里插入图片描述

查询全部字段

SELECT * FROM 表名;

查询全部字段信息:
在这里插入图片描述

修改名称

SELECT 字段名 AS '修改后的名字' FROM emp;

利用AS 加上一个新的名字来实现改名
在这里插入图片描述

AS可以省略,直接在后面指定新的名字,注意一定别忘了 ’ ’ 号

数学运算

SELECT 字段(进行算数运算) FROM emp;
  • 薪资实现乘法
    在这里插入图片描述
  • 薪资实现除法(除以10)
    在这里插入图片描述

小结

  • 显示表中的工人名字,薪资,职务,并且改名:

在这里插入图片描述

条件查询

使用WHERE进行条件的查询

可以用作条件的运算符:

关系运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意成立一个)
NOT 或 !非,不是
其他功能
BETWEEN…AND…在某个范围之间(含最小、最大值)
IN(…)在in之后的列表中的值,多选一
LIKE模糊匹配(_匹配单个字符,%匹配任意个字符)
IS [NOT] NULL是 NULL

注意其他中的运算符。

关系及逻辑运算符

SELECT * FROM 表名 WHERE 字段名 关系 数值
  • 查询所有sal薪资小于2000的数据信息
    在这里插入图片描述
  • 逻辑运算 && 实现 job名称为指定名称并且sal小于2000,此处也可以使用 AND,
    在这里插入图片描述

其他运算符

  • BETWEEN AND实现在指定范围查找sal 在1500 到 2000的范围内的合适的数据
    在这里插入图片描述
  • IN获取括号之后的特定的值 :800 和1500
  • LIKE进行模糊搜索:用四个_ 实现查询四个字的名称
    在这里插入图片描述

小结

查询所有名称的最后一个字母为S的人的姓名和薪资
使用%进行指定字母的查询;LIKE模糊查询

在这里插入图片描述

聚合查询

统计函数

函数名作用
MAX(column)返回某列的最低值(没有则返回NULL)
MIN(column)返回某列的最高值(没有则返回NULL)
COUNT(column)返回某列的行数(不包括 NULL 值)
COUNT(*)返回被选列行数(包括NULL)
SUM(column)求和
AVG(column)求平均值

统计数量

SELECT COUNT(查询名) FROM emp
  • 统计整个表的行数:
    在这里插入图片描述
  • 统计特定信息的行数:具有sal的行数:

计算函数

  • MAX函数:输出最大的sal的信息
  • MIN函数:与MAX函数相似
  • SUM函数求和:输出sal之和
    在这里插入图片描述
  • AVG函数:求平均值

小结

计算所有job等于SALESMAN的员工的薪资之和,并改名

在这里插入图片描述

分组查询

SELECT 字段名 FROM 表名 GROUP BY 分组字段 (可选:)HAVING[分组后条件]

GROUP BY

  • 查询职务,职务只出现一次(会有重复的情况,GROUP BY将其分组为只出现一次)
    在这里插入图片描述
  • 统计每个岗位的人数
    在这里插入图片描述
  • 分别统计每个岗位的最小最大工资
    在这里插入图片描述
  • 显示不同职务薪资小于1500的人数 并且此人数要大于2
    在这里插入图片描述

注意事项

  • 如果没有group by语句,则SELECT中只允许出现统计函数,不能出现其他字段:

出错:SELECT ename,MAX(sal) FROM emp; --> 出现了ename

  • 如果有group by语句,则SELECT中只允许出现GROUP BY中出现的字段

出错:SELECT sal FROM emp GROUP BY job; —>sal不对应job

小结

显示非销售人员(salesman)工作名称以及从事同一工作的员工的月工资的总和,并且要满足从事同一工作的员工的月工资合计大于5000

  1. 首先统计职务不为销售:
    在这里插入图片描述
  2. 统计职务不为销售的各个职位的员工的工资之和,并且显示工资大于5000
    在这里插入图片描述

排序查询

语法

SELECT 字段名 FROM 表名 ... ORDER BY 排序字段名 [ASC|DESC],[排序字段名 [ASC|DESC]];

语法说明:

  • 排序字段名:表示需要排序的字段名称,多个字段时用逗号隔开。
  • ASC|DESC:ASC表示字段按升序排序;DESC表示字段按降序排序。其中ASC为默认值。

特点

  • ORDER BY子句一般放到查询语句的最后面,LIMIT字句除外。

  • 当排序的字段中存在空值时,ORDER BY 会将该空值作为最小值来对待。

  • ORDER BY 指定多个字段进行排序时,MySQL 会按照字段的顺序从左到右依次进行排序。

  • 注意:在对多个字段进行排序时,排序的第一个字段必须有相同的值,才会对第二个字段进行排序。如果第一个字段数据中所有的值都是唯一的,MySQL 将不再对第二个字段进行排序。

示例

  • 根据姓名对员工进行排序(升序)
    在这里插入图片描述
  • 查询入职时间大于1981年6月6日的员工信息,并按照入职时间升序排列
    在这里插入图片描述
  • 根据工作职位,进行升序排列,职位相同的情况下,再根据入职时间降序排列
    在这里插入图片描述

小结

按工作职位进行分组,查看每个工作职位的人数,工作职位按升序排列
在这里插入图片描述

分页查询

语法

SELECT 字段名 FROM 表名 LIMIT 起始索引,查询记录数;

特点

  • 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数;
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为LIMIT 10。

示例

  • 查询第一页员工数据,每页展示10条记录
    在这里插入图片描述
  • 查询第二页: (2-1)*10:公式
    在这里插入图片描述
  • 查询工资大于1500的员工数据,按工资升序排列,并分页,每页展示5条数据:第二页则LIMIT 5,5.
    在这里插入图片描述

本节完整测试代码

点这里进入

posted @ 2022-09-02 21:58  hugeYlh  阅读(13)  评论(0编辑  收藏  举报  来源