存储过程游标数据库检索

SQLSQLBeginner
立即练习

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

简介

在本项目中,你将学习如何使用游标从 section 表中输出学期为春季的课程信息。你将创建一个存储过程来检索课程详细信息,然后执行该过程以显示结果。

🎯 任务

在本项目中,你将学习:

  • 如何启动 MySQL 服务器并导入数据库
  • 如何使用游标创建存储过程
  • 如何执行存储过程以从数据库中检索数据

🏆 成果

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

  • 理解如何使用游标从数据库中检索数据
  • 创建一个存储过程来封装数据库操作
  • 执行存储过程以显示所需数据

启动 MySQL 并导入数据库

在这一步中,你将学习如何启动 MySQL 服务器并将 edusys.sql 数据库导入到 MySQL 中。

  1. 启动 MySQL 服务器:

    sudo /etc/init.d/mysql start
  2. 登录到 MySQL 终端:

    mysql -uroot
  3. 导入 edusys.sql 数据库:

    SOURCE ~/project/edusys.sql

创建存储过程

在这一步中,你将学习如何创建一个存储过程,用于从 section 表中检索学期为春季的课程信息。

  1. /home/labex/project 目录下创建一个名为 getSection.sql 的新文件。

  2. getSection.sql 文件中,将分隔符定义为 //

    DELIMITER //
  3. 创建 getSectionProcude() 存储过程:

    CREATE PROCEDURE getSectionProcude()
    BEGIN
        SELECT course_id, year, room_number
        FROM section
        WHERE semester = 'Spring';
    END //
  4. 将分隔符重置回默认值:

    DELIMITER ;

执行存储过程

在这一步中,你将学习如何执行 getSectionProcude() 存储过程来检索课程信息。

  1. 在 MySQL 提示符下,运行以下命令来执行 subquery.sql 脚本:

    SOURCE ~/project/getSection.sql
  2. 执行存储过程:

    CALL getSectionProcude();

    这将输出学期为春季的课程信息。

    MariaDB [edusys]> CALL getSectionProcude();
    +-----------+------+-------------+
    | course_id | year | room_number |
    +-----------+------+-------------+
    | CS-101    | 2018 | 101         |
    | FIN-201   | 2018 | 101         |
    | MU-199    | 2018 | 101         |
    | HIS-351   | 2018 | 514         |
    | CS-190    | 2017 | 3128        |
    | CS-190    | 2017 | 3128        |
    | CS-319    | 2018 | 3128        |
    | EE-181    | 2017 | 3128        |
    | CS-319    | 2018 | 100         |
    | CS-315    | 2018 | 120         |
    +-----------+------+-------------+
    10 rows in set (0.001 sec)
✨ 查看解决方案并练习

总结

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