“数据库表的查询操作实践演练(实验三)”旨在帮助学习者深入了解SQL语言的查询操作,并通过实践加深对查询操作的理解和掌握。本次实验的主要内容涉及SELECT语句、WHERE子句、ORDER BY子句、GROUP BY子句、HAVING子句、LIKE运算符、IN运算符等方面
“数据库表的查询操作实践演练(实验三)”旨在帮助学习者深入了解SQL语言的查询操作,并通过实践加深对查询操作的理解和掌握。本次实验的主要内容涉及SELECT语句、WHERE子句、ORDER BY子句、GROUP BY子句、HAVING子句、LIKE运算符、IN运算符等方面,下面将详细讲解完整攻略。
一、实验准备
在进行实验前,需要完成以下准备工作:
- 安装MySQL数据库和客户端;
- 配置MySQL数据库的连接参数;
- 创建实验用的数据库和表格,并插入测试数据。
二、实验步骤
本次实验的步骤如下:
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运算符进行条件的匹配查询。相信通过这次实验的了解和掌握,将能在实际的数据库使用过程中有所帮助。
本文标题为:数据库表的查询操作实践演练(实验三)
- MySQL sql_mode的使用详解 2023-12-05
- MySQL时间类型和模式详情 2023-12-05
- Centos环境下Postgresql 安装配置及环境变量配置技巧 2023-07-21
- MyBatis中正则使用foreach拼接字符串 2023-12-05
- Redis 再牛逼,也得设置密码 2023-09-12
- MySQL中的用户创建与权限管理 2022-10-23
- python中pandas库的iloc函数用法解析 2023-07-28
- Oracle数据库表被锁如何查询和解锁详解 2023-07-24
- postgresql 中的时间处理小技巧(推荐) 2023-07-20
- 关于mongoose连接mongodb重复访问报错的解决办法 2023-07-24