학생 성적 관리 시스템

SQLBeginner
지금 연습하기

소개

이 프로젝트에서는 MySQL 을 사용하여 학생 정보 관리 시스템을 만드는 방법을 배우게 됩니다. 이 시스템은 student_infostudent_score 두 개의 테이블을 포함하며, 이들 간에는 외래 키 관계가 있습니다.

👀 미리보기

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 문을 사용하여 데이터베이스와 테이블을 만드는 방법
  • 두 테이블 간에 외래 키 관계를 설정하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 관계형 데이터베이스의 개념과 테이블을 생성하고 관리하는 방법을 이해합니다.
  • 관련 테이블 간의 데이터 무결성을 보장하기 위해 외래 키 제약 조건을 구현합니다.
  • 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 문은 지정된 문자 집합 (character set) 및 정렬 방식 (collation) 으로 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 두 개의 열 (column) 을 가진 student_info 테이블을 생성합니다. Id 열은 기본 키 (primary key) 로 설정되고 자동 증가 (auto-increment) 로 설정됩니다.

✨ 솔루션 확인 및 연습

student_score 테이블 생성 및 외래 키 관계 설정

이 단계에서는 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 문은 Id, score, Sid 세 개의 열 (column) 을 가진 student_score 테이블을 생성합니다.

    PRIMARY KEY (Id) 문은 Id 열을 student_score 테이블의 기본 키 (primary key) 로 설정합니다.

    FOREIGN KEY (Sid) REFERENCES student_info(Id) 문은 student_score 테이블의 Sid 열과 student_info 테이블의 Id 열 사이에 외래 키 관계를 설정합니다. 이는 student_score 테이블의 Sid 열에 있는 값은 student_info 테이블의 Id 열에 있는 값과 일치해야 함을 의미합니다.

  2. MySQL 프롬프트에서 다음 명령을 실행하여 studentSys.sql 스크립트를 실행합니다:

SOURCE ~/project/studentSys.sql

이 단계를 완료하면 studentSys 데이터베이스, student_info 테이블 및 student_score 테이블을 생성하고 두 테이블 간의 외래 키 관계를 설정한 것입니다.

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 에서 더 많은 랩 (lab) 을 연습하여 실력을 향상시킬 수 있습니다.