MYSQL学习与实验(三)——数据查询实验

发布于 2020-12-04  389 次阅读


3 数据查询实验

3.1单表查询

3.1.1Select 语句,SQL核心,语法格式如下:

SELECT [ALL | DISTINCT | DISTINCTROW ][HIGH_PRIORITY]… 
列名表达式 …
[FROM  table_reference ... ]        /*FROM子句*/
[WHERE 条件]                   /*WHERE子句*/
[GROUP BY {列名| 表达式 | position} [ASC | DESC], ... [WITH ROLLUP]]         /*GROUP BY子句*/    [HAVING 条件]               /*HAVING 子句*/
[ORDER BY {列名 | 表达式 | position} [ASC | DESC] , ...]        /*ORDER BY子句*/
[LIMIT {[offset,] row_count|row_count OFFSET offset}]; /*LIMIT子句*/

SQL关键字的执行顺序:

from xx join xx on ------where ------ 定义别名- ------ group by(group by 中不能用聚合函数) ------having(having 可以使用聚合函数 & 别名) ------select distinct-----order by --limit

3.1.2查询所有employee的数据

在这里插入图片描述

3.1.3通过where条件查询

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

3.1.4通过where多条件查询

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

3.1.5聚合函数

在这里插入图片描述
3.1.5.1统计所有行数
在这里插入图片描述
在这里插入图片描述
3.1.5.2查找所有员工中工作时间最长的年数:
在这里插入图片描述
3.1.5.3查找所有员工中工作时间最短的年数:
在这里插入图片描述
3.1.5.4统计所有员工工作年长总和
在这里插入图片描述
1.3.1.5.5统计员工的平均工作年长
在这里插入图片描述

3.1.6分组统计查询

使用 GROUP BY 关键字的语法格式如下:

GROUP BY  <字段名>

其中,“字段名”表示需要分组的字段名称,多个字段时用逗号隔开。

3.1.6.1按照workYear分组查询

在这里插入图片描述
GROUP BY单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录。

3.1.6.2按照workYear分组并统计每组的记录数
在这里插入图片描述
3.1.6.3GROUP BY 关键字可以和 GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。
在这里插入图片描述

3.1.7ORDER BY 关键字主要用来将查询结果中的数据按照一定的顺序进行排序。

*其语法格式如下:*

ORDER BY <字段名> [ASC|DESC]
语法说明如下。

字段名:表示需要排序的字段名称,多个字段时用逗号隔开。

ASC|DESC:ASC表示字段按升序排序;DESC表示字段按降序排序。其中ASC为默认值。

使用 ORDER BY 关键字应该注意以下几个方面:

ORDER BY 关键字后可以跟子查询。

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

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

3.1.7.1单个字段通过workYear升序排序
在这里插入图片描述
3.1.7.2单个字段通过workYear降序排序
在这里插入图片描述
3.1.7.3首先通过workYear升序排序,然后通过departmentID升序
在这里插入图片描述
3.1.7.4LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。

LIMIT 关键字有 3 种使用方式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使用。

LIMIT 关键字可以指定查询结果从哪条记录开始显示,显示多少条记录。

LIMIT 指定初始位置的基本语法格式如下:

LIMIT 初始位置,记录数

其中,“初始位置”表示从哪条记录开始显示;“记录数”表示显示记录的条数。第一条记录的位置是 0,第二条记录的位置是 1。后面的记录依次类推。

注意:LIMIT 后的两个参数必须都是正整数。

显示查询数据中的前5条数据

在这里插入图片描述

从第3个位置开始显示5条数据
在这里插入图片描述
从第3个位置开始显示5条数据

在这里插入图片描述

3.2多表查询

3.2.1全连接查询 employee和department

在这里插入图片描述

3.2.2全连接条件查询

在这里插入图片描述

3.2.3内连接使用 INNER JOIN 关键字连接两张表,并使用 ON 子句来设置连接条件。

如果没有连接条件,INNER JOIN 和 CROSS JOIN 在语法上是等同的,两者可以互换。

内连接的语法格式如下:

SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]

语法说明如下。

字段名:需要查询的字段名称。

<表1><表2>:需要内连接的表名。

INNER JOIN :内连接中可以省略 INNER 关键字,只用关键字 JOIN。

ON 子句:用来设置内连接的连接条件。

INNER JOIN 也可以使用 WHERE 子句指定连接条件,但是 INNER JOIN … ON 语法是官方的标准写法,而且 WHERE 子句在某些时候会影响查询的性能。多个表内连接时,在 FROM 后连续使用 INNER JOIN 或 JOIN 即可。内连接可以查询两个或两个以上的表。

3.2.3.1使用 inner join
在这里插入图片描述
3.2.3.3使用inner join on 查询
在这里插入图片描述

3.2.4查询每个雇员的情况及其薪水情况

在这里插入图片描述

3.2.5使用内连接查询名字为“刘明”的员工所在部门

在这里插入图片描述

3.2.6查找财务部收入在2000元以上的雇员姓名和薪水详情

在这里插入图片描述

3.2.7查询财务部雇员的最高和最低实际收入

在这里插入图片描述

3.2.8查询employee中男性和女性的人数

在这里插入图片描述

3.2.9查找员工数超过2人的部门名称和员工数量

在这里插入图片描述

3.2.10将employee表中的员工号码由大到小排列

在这里插入图片描述

3.3详细的实验资料以及指导PPT请访问笔者GitHub地址:https://github.com/LJF2402901363/database_experiment.git


繁华落尽,雪花漫天飞舞。