소개
이 프로젝트에서는 MySQL 을 사용하여 학생 정보 관리 시스템을 만드는 방법을 배우게 됩니다. 이 시스템은 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)
🎯 과제
이 프로젝트에서는 다음을 배우게 됩니다:
- MySQL 서버를 시작하고 MySQL 터미널에 로그인하는 방법
- SQL 문을 사용하여 데이터베이스와 테이블을 만드는 방법
- 두 테이블 간에 외래 키 관계를 설정하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- 관계형 데이터베이스의 개념과 테이블을 생성하고 관리하는 방법을 이해합니다.
- 관련 테이블 간의 데이터 무결성을 보장하기 위해 외래 키 제약 조건을 구현합니다.
- SQL 지식을 적용하여 간단한 학생 정보 관리 시스템을 구축합니다.
MySQL 시작 및 데이터베이스 생성
이 단계에서는 MySQL 서버를 시작하고 studentSys 데이터베이스를 만드는 방법을 배우게 됩니다.
MySQL 서버 시작:
sudo /etc/init.d/mysql startMySQL 터미널에 로그인:
mysql -uroot/home/labex/project디렉토리에studentSys.sql이라는 새 파일을 생성합니다.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 테이블을 만드는 방법을 배우게 됩니다.
studentSys.sql파일에서studentSys데이터베이스를 사용합니다:USE studentSys;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문은Id와name두 개의 열 (column) 을 가진student_info테이블을 생성합니다.Id열은 기본 키 (primary key) 로 설정되고 자동 증가 (auto-increment) 로 설정됩니다.
student_score 테이블 생성 및 외래 키 관계 설정
이 단계에서는 student_score 테이블을 생성하고 student_score 테이블과 student_info 테이블 간의 외래 키 (foreign key) 관계를 설정하는 방법을 배우게 됩니다.
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열에 있는 값과 일치해야 함을 의미합니다.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) 을 연습하여 실력을 향상시킬 수 있습니다.
