ストアド プロシージャ カーソルによるデータベースの取得

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 プロンプトで、以下のコマンドを実行してサブクエリ.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でさらに多くの実験を行って練習してください。