创建用于检索课程数据的存储过程

SQLSQLBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本项目中,你将学习如何在MySQL中创建一个存储过程,以检索学分大于3的课程。本项目将帮助你理解在数据库管理系统中使用存储过程的基础知识。

👀 预览

MariaDB [edusys]> CALL getCourses();
+-----------+----------------------------+------------+---------+
| course_id | title                      | dept_name  | credits |
+-----------+----------------------------+------------+---------+
| BIO-101   | Intro. to Biology          | Biology    |       4 |
| BIO-301   | Genetics                   | Biology    |       4 |
| CS-101    | Intro. to Computer Science | Comp. Sci. |       4 |
| CS-190    | Game Design                | Comp. Sci. |       4 |
| PHY-101   | Physical Principles        | Physics    |       4 |
+-----------+----------------------------+------------+---------+
5 rows in set (0.000 sec)

🎯 任务

在本项目中,你将学习:

  • 如何使用sudo命令无密码访问MySQL
  • 如何将数据导入MySQL数据库
  • 如何创建一个存储过程以从表中检索特定数据
  • 如何测试存储过程以确保其按预期工作

🏆 成果

完成本项目后,你将能够:

  • 理解在数据库中使用存储过程的目的和好处
  • 创建自己的存储过程以执行特定的数据检索任务
  • 对存储过程进行故障排除和测试,以确保它们正常运行
  • 将本项目中获得的知识应用于构建更复杂的数据库驱动应用程序

访问MySQL并导入数据库

在本步骤中,你将学习如何使用sudo命令无密码访问MySQL,并将/home/labex/project/edusys.sql中的数据导入MySQL。

  1. 启动MySQL服务:
sudo service mysql start
  1. 使用sudo命令访问MySQL:
sudo mysql
  1. /home/labex/project/edusys.sql中的数据导入MySQL并切换到edusys数据库:
MariaDB [None]> SOURCE /home/labex/project/edusys.sql;

创建 getCourses 存储过程

在本步骤中,你将创建一个名为 getCourses 的存储过程,该存储过程从 course 表中检索 credits 字段值大于 3 的课程。

  1. 打开 getCourses.sql 文件。
  2. 将以下代码添加到 getCourses.sql 文件中:
-- 创建 getCourses 存储过程
DELIMITER //

CREATE PROCEDURE getCourses()
BEGIN
-- 从 course 表中检索 credits 字段大于 3 的课程
SELECT course_id, title, dept_name, credits
FROM course
WHERE credits > 3;
END //

DELIMITER ;
  1. 保存并关闭文件。

测试 getCourses 存储过程

在本步骤中,你将测试 getCourses 存储过程,以确保它按预期工作。

  1. 在MySQL中运行 getCourses.sql 脚本:
MariaDB [edusys]> SOURCE /home/labex/project/getCourses.sql;
  1. 调用 getCourses 存储过程:
MariaDB [edusys]> CALL getCourses();
+-----------+----------------------------+------------+---------+
| course_id | title                      | dept_name  | credits |
+-----------+----------------------------+------------+---------+
| BIO-101   | Intro. to Biology          | Biology    |       4 |
| BIO-301   | Genetics                   | Biology    |       4 |
| CS-101    | Intro. to Computer Science | Comp. Sci. |       4 |
| CS-190    | Game Design                | Comp. Sci. |       4 |
| PHY-101   | Physical Principles        | Physics    |       4 |
+-----------+----------------------------+------------+---------+
5 rows in set (0.000 sec)

输出显示 getCourses 存储过程按预期工作,检索出了所有学分大于3的课程。

✨ 查看解决方案并练习

总结

恭喜你!你已经完成了这个项目。你可以在LabEx中练习更多实验来提升你的技能。