0032

학교

[자료] 실습을 위한 CREATE / INSERT 구문

1. Instructor 테이블

SQL
-- Create Instructor table
CREATE TABLE Instructor (
    ID INTEGER PRIMARY KEY,
    name VARCHAR(50),
    dept_name VARCHAR(50),
    salary DECIMAL(10,2)
);

-- Insert data into Instructor table
INSERT INTO Instructor VALUES
(10101, 'Srinivasan', 'Comp. Sci.', 65000.00),
(12121, 'Wu', 'Finance', 90000.00),
(15151, 'Mozart', 'Music', 40000.00),
(22222, 'Einstein', 'Physics', 95000.00),
(32343, 'El Said', 'History', 60000.00),
(33456, 'Gold', 'Physics', 87000.00),
(45565, 'Katz', 'Comp. Sci.', 75000.00),
(58583, 'Califieri', 'History', 62000.00),
(76543, 'Singh', 'Finance', 80000.00),
(76766, 'Crick', 'Biology', 72000.00),
(83821, 'Brandt', 'Comp. Sci.', 92000.00),
(98345, 'Kim', 'Elec. Eng.', 80000.00);

테이블명

컬럼명

설명

Instructor (교수 정보)

ID

교수의 고유 ID (기본 키)

name

교수 이름

dept_name

교수가 속한 학과 이름

salary

교수의 급여 (소수점 2자리까지 저장)

2. Teaches 테이블

SQL
-- Create Teaches table
CREATE TABLE Teaches (
    ID INTEGER,
    course_id VARCHAR(20),
    sec_id INTEGER,
    semester VARCHAR(10),
    year INTEGER,
    PRIMARY KEY (ID, course_id, sec_id, semester, year),
    FOREIGN KEY (ID) REFERENCES Instructor(ID)
);

-- Insert data into Teaches table
INSERT INTO Teaches VALUES
(76766, 'BIO-101', 1, 'Summer', 2017),
(76766, 'BIO-301', 1, 'Summer', 2018),
(10101, 'CS-101', 1, 'Fall', 2017),
(45565, 'CS-101', 1, 'Spring', 2018),
(83821, 'CS-190', 1, 'Spring', 2017),
(83821, 'CS-190', 2, 'Spring', 2017),
(10101, 'CS-315', 1, 'Spring', 2018),
(45565, 'CS-319', 1, 'Spring', 2018),
(83821, 'CS-319', 2, 'Spring', 2018),
(10101, 'CS-347', 1, 'Fall', 2017),
(98345, 'EE-181', 1, 'Spring', 2017),
(12121, 'FIN-201', 1, 'Spring', 2018),
(32343, 'HIS-351', 1, 'Spring', 2018),
(15151, 'MU-199', 1, 'Spring', 2018),
(22222, 'PHY-101', 1, 'Fall', 2017);

테이블명

컬럼명

설명

Teaches (교수의 강의 배정 정보)

ID

강의를 담당하는 교수의 ID (Instructor.ID를 참조)

course_id

담당하는 강의 ID

sec_id

강의 섹션 ID

semester

강의가 개설된 학기 (예: 'Fall', 'Spring')

year

강의가 개설된 연도

(기본 키)

ID, course_id, sec_id, semester, year의 조합이 기본 키

3. Course 테이블

SQL
-- Create Course table
CREATE TABLE Course (
    course_id VARCHAR(8) PRIMARY KEY,
    title VARCHAR(50),
    dept_name VARCHAR(20),
    credits INTEGER
);

-- Insert data into Course table
INSERT INTO Course VALUES
('BIO-101', 'Intro. to Biology', 'Biology', 4),
('BIO-301', 'Genetics', 'Biology', 4),
('BIO-399', 'Computational Biology', 'Biology', 3),
('CS-101', 'Intro. to Computer Science', 'Comp. Sci.', 4),
('CS-190', 'Game Design', 'Comp. Sci.', 4),
('CS-315', 'Robotics', 'Comp. Sci.', 3),
('CS-319', 'Image Processing', 'Comp. Sci.', 3),
('CS-347', 'Database System Concepts', 'Comp. Sci.', 3),
('EE-181', 'Intro. to Digital Systems', 'Elec. Eng.', 3),
('FIN-201', 'Investment Banking', 'Finance', 3),
('HIS-351', 'World History', 'History', 3),
('MU-199', 'Music Video Production', 'Music', 3),
('PHY-101', 'Physical Principles', 'Physics', 4);

테이블명

컬럼명

설명

Course (강의 정보)

course_id

강의의 고유 ID (기본 키)

title

강의명

dept_name

강의가 속한 학과 이름

credits

강의의 학점 수

4. Takes 테이블

SQL
-- Create Takes table
CREATE TABLE Takes (
    ID VARCHAR(5),
    course_id VARCHAR(8),
    sec_id INTEGER,
    semester VARCHAR(6),
    year INTEGER,
    grade VARCHAR(2),
    PRIMARY KEY (ID, course_id, sec_id, semester, year),
    FOREIGN KEY (course_id) REFERENCES Course(course_id)
);

-- Insert data into Takes table
INSERT INTO Takes VALUES
('00128', 'CS-101', 1, 'Fall', 2017, 'A'),
('00128', 'CS-347', 1, 'Fall', 2017, 'A-'),
('12345', 'CS-101', 1, 'Fall', 2017, 'C'),
('12345', 'CS-190', 2, 'Spring', 2017, 'A'),
('12345', 'CS-315', 1, 'Spring', 2018, 'A'),
('12345', 'CS-347', 1, 'Fall', 2017, 'A'),
('19991', 'HIS-351', 1, 'Spring', 2018, 'B'),
('23121', 'FIN-201', 1, 'Spring', 2018, 'C+'),
('44553', 'PHY-101', 1, 'Fall', 2017, 'B-'),
('45678', 'CS-101', 1, 'Fall', 2017, 'F'),
('45678', 'CS-101', 1, 'Spring', 2018, 'B+'),
('45678', 'CS-319', 1, 'Spring', 2018, 'B'),
('54321', 'CS-101', 1, 'Fall', 2017, 'A-'),
('54321', 'CS-190', 2, 'Spring', 2017, 'B+'),
('55739', 'MU-199', 1, 'Spring', 2018, 'A-'),
('76543', 'CS-101', 1, 'Fall', 2017, 'A'),
('76543', 'CS-319', 2, 'Spring', 2018, 'A'),
('76653', 'EE-181', 1, 'Spring', 2017, 'C'),
('98765', 'CS-101', 1, 'Fall', 2017, 'C-'),
('98765', 'CS-315', 1, 'Spring', 2018, 'B'),
('98988', 'BIO-101', 1, 'Summer', 2017, 'A'),
('98988', 'BIO-301', 1, 'Summer', 2018, NULL);

테이블명

컬럼명

설명

Takes (학생의 수강 정보)

ID

수강하는 학생의 ID

course_id

학생이 수강하는 강의 ID (Course.course_id를 참조)

sec_id

수강하는 강의의 섹션 ID

semester

강의가 개설된 학기

year

강의가 개설된 연도

grade

학생이 해당 강의에서 받은 성적

(기본 키)

ID, course_id, sec_id, semester, year의 조합이 기본 키

5. Student table

SQL
-- Create Student table
CREATE TABLE Student (
    ID VARCHAR(5) PRIMARY KEY,
    name VARCHAR(20),
    dept_name VARCHAR(20),
    tot_cred INTEGER
);

-- Insert data into Student table
INSERT INTO Student VALUES
('00128', 'Zhang', 'Comp. Sci.', 102),
('12345', 'Shankar', 'Comp. Sci.', 32),
('19991', 'Brandt', 'History', 80),
('23121', 'Chavez', 'Finance', 110),
('44553', 'Peltier', 'Physics', 56),
('45678', 'Levy', 'Physics', 46),
('54321', 'Williams', 'Comp. Sci.', 54),
('55739', 'Sanchez', 'Music', 38),
('70557', 'Snow', 'Physics', 0),
('76543', 'Brown', 'Comp. Sci.', 58),
('76653', 'Aoi', 'Elec. Eng.', 60),
('98765', 'Bourikas', 'Elec. Eng.', 98),
('98988', 'Tanaka', 'Biology', 120);

테이블명

컬럼명

설명

Student (학생 정보)

ID

학생의 고유 ID (기본 키)

name

학생 이름

dept_name

학생이 속한 학과 이름

tot_cred

학생이 이수한 총 학점