介绍
在本项目中,你将学习如何在 MySQL 中创建和使用数据库视图。数据库视图是虚拟表,它提供了对基础数据的定制化视角,使你能够向用户隐藏某些数据处理过程,并简化数据访问。
👀 预览
MariaDB [edusys]> SELECT * FROM comp_spring_2018_taylor;
+-----------+-------------+
| course_id | room_number |
+-----------+-------------+
| CS-319 | 3128 |
+-----------+-------------+
1 row in set (0.00 sec)
🎯 任务
在本项目中,你将学习:
- 如何启动 MySQL 服务器并导入数据库
- 如何定义一个视图,该视图显示在特定学期、地点和系所提供的所有主课程的房间号
- 如何定义一个视图,该视图过滤前一个视图的结果,只包括位于特定建筑物中的课程
🏆 成果
完成本项目后,你将能够:
- 理解数据库视图的概念和好处
- 创建自定义视图以简化数据访问并隐藏不必要的复杂性
- 应用你对 SQL 查询的知识,在实际场景中定义和使用视图
启动 MySQL 并导入数据库
在这一步中,你将学习如何启动 MySQL 服务器并导入edusys.sql数据库。
- 使用以下命令启动 MySQL 服务器:
sudo service mysql start
- 使用以下命令访问 MySQL 命令行界面:
sudo mysql
- 使用以下命令导入
edusys.sql数据库:
source /home/labex/project/edusys.sql;
这将把edusys数据库导入到你的 MySQL 服务器中。
定义 comp_spring_2018 视图
在这一步中,你将学习如何定义 comp_spring_2018 视图。
- 在
~/project目录中创建comp_spring_2018_taylor.sql文件。 - 使用以下 SQL 查询向该文件中添加代码以创建
comp_spring_2018视图:
CREATE VIEW comp_spring_2018 AS
SELECT course.course_id, building, room_number
FROM section, course
WHERE course.course_id = section.course_id AND semester = 'Spring' AND year = 2018 AND dept_name = 'Comp. Sci.';
此视图将显示 2018 年春季学期由“计算机科学”系提供的所有课程的 course_id、building 和 room_number。
定义 comp_spring_2018_taylor 视图
在这一步中,你将学习如何定义 comp_spring_2018_taylor 视图。
- 打开
comp_spring_2018_taylor.sql文件。 - 在上一步添加的代码之后,使用以下 SQL 查询创建
comp_spring_2018_taylor视图:
CREATE VIEW comp_spring_2018_taylor AS
SELECT course_id, room_number
FROM comp_spring_2018
WHERE building = 'Taylor';
此视图将显示 2018 年春季学期由“计算机科学”系提供且位于“泰勒”楼的所有课程的 课程ID 和 房间号。
验证解决方案
要验证解决方案,你可以运行以下 SQL 查询:
source /home/labex/project/comp_spring_2018_taylor.sql;
SELECT * FROM comp_spring_2018_taylor;
这应该会显示以下输出:
+-----------+-------------+
| course_id | room_number |
+-----------+-------------+
| CS-319 | 3128 |
+-----------+-------------+
1 row in set (0.00 sec)
恭喜!你已成功完成该项目。
总结
恭喜!你已完成此项目。你可以在 LabEx 中练习更多实验以提升你的技能。
