はじめに
このプロジェクトでは、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 にインポートする方法を学びます。
- MySQL サービスを起動する:
sudo service mysql start
sudoコマンドを使用して MySQL にアクセスする:
sudo mysql
/home/labex/project/edusys.sqlからのデータを MySQL にインポートし、edusysデータベースに切り替える:
MariaDB [None]> SOURCE /home/labex/project/edusys.sql;
getCourses ストアド プロシージャを作成する
このステップでは、credits フィールドの値が 3 より大きい course テーブルからコースを取得する getCourses という名前のストアド プロシージャを作成します。
getCourses.sqlファイルを開きます。getCourses.sqlファイルに以下のコードを追加します。
-- Creating the getCourses stored procedure
DELIMITER //
CREATE PROCEDURE getCourses()
BEGIN
-- Retrieve courses from the course table where the credits field is greater than 3
SELECT course_id, title, dept_name, credits
FROM course
WHERE credits > 3;
END //
DELIMITER ;
- ファイルを保存して終了します。
getCourses ストアド プロシージャをテストする
このステップでは、getCourses ストアド プロシージャが期待通りに機能していることを確認するためにテストします。
- MySQL で
getCourses.sqlスクリプトを実行します。
MariaDB [edusys]> SOURCE /home/labex/project/getCourses.sql;
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 でさらに多くの実験を行って練習してください。
