学生成績管理システム

SQLBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、MySQL を使用して学生情報管理システムを作成する方法を学びます。このシステムには student_infostudent_score の 2 つのテーブルが含まれ、それらの間に外部キー(Foreign Key)関係があります。

👀 プレビュー

MySQL [studentSys]> DESC student_info;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| Id    | int         | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.002 sec)

MySQL [studentSys]> DESC student_score;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| Id    | int        | NO   | PRI | NULL    |       |
| score | varchar(4) | YES  |     | NULL    |       |
| Sid   | int        | YES  | MUL | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.001 sec)

🎯 タスク

このプロジェクトでは、以下を学びます。

  • MySQL サーバーを起動し、MySQL ターミナルにログインする方法
  • SQL 文を使用してデータベースとテーブルを作成する方法
  • 2 つのテーブル間に外部キー(Foreign Key)関係を確立する方法

🏆 成果

このプロジェクトを完了した後、以下ができるようになります。

  • リレーショナルデータベースの概念を理解し、テーブルを作成および管理する方法を習得する
  • 関連するテーブル間のデータ整合性を保証するために、外部キー(Foreign Key)制約を実装する
  • SQL の知識を応用して、簡単な学生情報管理システムを構築する

MySQL を起動してデータベースを作成する

このステップでは、MySQL サーバーを起動し、studentSys データベースを作成する方法を学びます。

  1. MySQL サーバーを起動します。

    sudo /etc/init.d/mysql start
    
  2. MySQL ターミナルにログインします。

    mysql -uroot
    
  3. /home/labex/project ディレクトリに studentSys.sql という名前の新しいファイルを作成します。

  4. studentSys.sql ファイルで、studentSys データベースを作成します。

    DROP DATABASE IF EXISTS studentSys;
    CREATE DATABASE IF NOT EXISTS studentSys CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    

    DROP DATABASE IF EXISTS 文は、studentSys データベースが既に存在するかどうかを確認し、存在する場合は削除します。その後、CREATE DATABASE IF NOT EXISTS 文は指定された文字セットと照合順序で studentSys データベースを作成します。

student_info テーブルを作成する

このステップでは、student_info テーブルを作成する方法を学びます。

  1. studentSys.sql ファイルで、studentSys データベースを使用します。

    USE studentSys;
    
  2. student_info テーブルを作成します。

    DROP TABLE IF EXISTS student_info;
    CREATE TABLE student_info (
        Id INT NOT NULL AUTO_INCREMENT,
        name VARCHAR(10),
        PRIMARY KEY (Id)
    );
    

    DROP TABLE IF EXISTS 文は、student_info テーブルが既に存在するかどうかを確認し、存在する場合は削除します。その後、CREATE TABLE 文は Idname の 2 つの列を持つ student_info テーブルを作成します。Id 列は主キー(Primary Key)として設定され、自動インクリメントに設定されています。

student_score テーブルを作成し、外部キー(Foreign Key)関係を確立する

このステップでは、student_score テーブルを作成し、student_score テーブルと student_info テーブルの間に外部キー(Foreign Key)関係を確立する方法を学びます。

  1. studentSys.sql ファイルで、student_score テーブルを作成します。

    DROP TABLE IF EXISTS student_score;
    CREATE TABLE student_score (
        Id INT NOT NULL,
        score VARCHAR(4),
        Sid INT,
        PRIMARY KEY (Id),
        FOREIGN KEY (Sid) REFERENCES student_info(Id)
    );
    

    DROP TABLE IF EXISTS 文は、student_score テーブルが既に存在するかどうかを確認し、存在する場合は削除します。その後、CREATE TABLE 文は IdscoreSid の 3 つの列を持つ student_score テーブルを作成します。

    PRIMARY KEY (Id) 文は、Id 列を student_score テーブルの主キー(Primary Key)として設定します。

    FOREIGN KEY (Sid) REFERENCES student_info(Id) 文は、student_score テーブルの Sid 列と student_info テーブルの Id 列の間に外部キー(Foreign Key)関係を確立します。これは、student_score テーブルの Sid 列の値が student_info テーブルの Id 列の値と一致しなければならないことを意味します。

  2. MySQL プロンプトで、以下のコマンドを実行して studentSys.sql スクリプトを実行します。

SOURCE ~/project/studentSys.sql

これらのステップを完了すると、studentSys データベース、student_info テーブル、student_score テーブルを作成し、2 つのテーブル間に外部キー(Foreign Key)関係を確立しました。

MySQL [studentSys]> DESC student_info;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| Id    | int         | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.002 sec)

MySQL [studentSys]> DESC student_score;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| Id    | int        | NO   | PRI | NULL    |       |
| score | varchar(4) | YES  |     | NULL    |       |
| Sid   | int        | YES  | MUL | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.001 sec)

まとめ

おめでとうございます!このプロジェクトを完了しました。LabEx でさらに多くの実験を行い、スキルを向上させることができます。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習