沃梦达 / IT编程 / 数据库 / 正文

数据库表的查询操作实践演练(实验三)

“数据库表的查询操作实践演练(实验三)”旨在帮助学习者深入了解SQL语言的查询操作,并通过实践加深对查询操作的理解和掌握。本次实验的主要内容涉及SELECT语句、WHERE子句、ORDER BY子句、GROUP BY子句、HAVING子句、LIKE运算符、IN运算符等方面

“数据库表的查询操作实践演练(实验三)”旨在帮助学习者深入了解SQL语言的查询操作,并通过实践加深对查询操作的理解和掌握。本次实验的主要内容涉及SELECT语句、WHERE子句、ORDER BY子句、GROUP BY子句、HAVING子句、LIKE运算符、IN运算符等方面,下面将详细讲解完整攻略。

一、实验准备

在进行实验前,需要完成以下准备工作:

  1. 安装MySQL数据库和客户端;
  2. 配置MySQL数据库的连接参数;
  3. 创建实验用的数据库和表格,并插入测试数据。

二、实验步骤

本次实验的步骤如下:

1. 实验任务一:基础查询

通过基础的SELECT语句,查询表中的全部数据或指定字段的数据,可以使用以下语法:

SELECT column1, column2, ... FROM table_name;

示例1:查询表employee的全部数据

SELECT * FROM employee;

这条语句将返回表employee的全部数据,其中“*”代表SELECT语句要返回的全部列。

示例2:查询表employee的部分数据

SELECT emp_no, first_name, last_name FROM employee;

这条语句将返回表employee的指定列(emp_no, first_name, last_name)的数据。

2. 实验任务二:条件查询

通过WHERE子句可以实现带有条件限制的查询,常用的条件关系包括“=、<、>、<=、>=、<>、LIKE、IN/NOT IN”等。示例代码如下:

SELECT column1, column2, ... FROM table_name WHERE condition;

示例1:查询具有指定性别的employee信息

SELECT * FROM employee WHERE gender = 'F';

这条语句将返回表employee中性别为“F”的所有记录。

示例2:查询具有指定年份出生的employee信息

SELECT * FROM employee WHERE birth_date LIKE '1961%';

这条语句将返回表employee中出生年份以“1961”开头的所有记录。

3. 实验任务三:排序查询

通过在SELECT语句中使用ORDER BY子句,可以将查询结果按照指定的列进行排序,默认为升序排序。示例代码如下:

SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... [ASC/DESC];

示例1:查询具有指定职位的employee信息并按从高到低的顺序排序

SELECT * FROM employee WHERE title = 'Senior Staff' ORDER BY salary DESC;

这条语句将返回表employee中职位为“Senior Staff”的所有记录,并按照salary从高到低的顺序排序。

4. 实验任务四:分组查询

通过GROUP BY子句可以将查询结果按照指定的列进行分组,并可以对分组后的每组结果进行聚合。示例代码如下:

SELECT column1, column2, ... FROM table_name GROUP BY column1, column2, ...;

示例1:查询具有指定职位的employee的平均薪资

SELECT title, AVG(salary) FROM employee WHERE title LIKE '%Engineer%' GROUP BY title;

这条语句将返回表employee中职位包含“Engineer”的所有记录,按照职位进行分组,并计算每个职位的平均薪资。

5. 实验任务五:筛选分组

由于GROUP BY将结果集分组,有的时候需要在分组条件上进行进一步的筛选和过滤。这时就需要使用HAVING子句,示例代码如下:

SELECT column1, column2, ... FROM table_name GROUP BY column1, column2, ... HAVING condition;

示例1:查询具有指定职位的employee中,平均薪资大于某一值的记录

SELECT title, AVG(salary) FROM employee WHERE title LIKE '%Engineer%' GROUP BY title HAVING AVG(salary) > 70000;

这条语句将返回表employee中职位包含“Engineer”的所有记录,按照职位进行分组,并筛选出平均薪资大于70000的记录。

6. 实验任务六:IN和NOT IN运算符

IN和NOT IN运算符用于查询属于或不属于指定值集合的记录,示例代码如下:

SELECT column1, column2, ... FROM table_name WHERE column1 IN (value1, value2, ...);

示例1:查询employee中属于指定部门的记录

SELECT * FROM employee WHERE dept_no IN ('d002', 'd003', 'd004');

这条语句将返回表employee中属于d002、d003或d004部门的所有记录。

示例2:查询employee中不属于指定职位的记录

SELECT * FROM employee WHERE title NOT IN ('Engineer', 'Senior Engineer', 'Assistant Engineer');

这条语句将返回表employee中不属于“Engineer”、“Senior Engineer”和“Assistant Engineer”职位的所有记录。

7. 实验任务七:LIKE运算符

LIKE运算符用于模糊匹配查询,常用的匹配符号包括“%”和“”,其中“%”表示任意多个字符,“”表示单个字符。示例代码如下:

SELECT column1, column2, ... FROM table_name WHERE column1 LIKE pattern;

示例1:查询employee中名字以指定字符开头的记录

SELECT * FROM employee WHERE first_name LIKE 'Mich%';

这条语句将返回表employee中名字以“Mich”开头的所有记录。

示例2:查询employee中名字包含指定字符的记录

SELECT * FROM employee WHERE first_name LIKE '%sie%';

这条语句将返回表employee中名字中包含“sie”的所有记录。

三、实验总结

通过本次实验,我们学习了SQL语言中的查询操作,并通过实践演练加深了对查询语句的理解和运用。其中,我们学习了使用SELECT语句进行基础查询,通过WHERE子句实现查询条件的限制。接着,我们学习了ORDER BY子句进行结果排序和GROUP BY子句进行结果分组和聚合的操作,并介绍了HAVING子句通过分组条件的筛选和过滤。最后,我们学习了使用IN和NOT IN运算符和LIKE运算符进行条件的匹配查询。相信通过这次实验的了解和掌握,将能在实际的数据库使用过程中有所帮助。

本文标题为:数据库表的查询操作实践演练(实验三)