경기도 인공지능 개발 과정/SQL

SQL 활용

agingcurve 2022. 4. 22. 15:59
반응형

# 과목번호, 이름, 강의실, 개설학과, 시수 열로 구성된 과목2 테이블을 생성하시오
# 과목번호를 기본키로 설정하시오
CREATE TABLE 과목2(
과목번호 CHAR(4) NOT NULL PRIMARY KEY,
이름 VARCHAR(20) NOT NULL,
강의실 CHAR(4) NOT NULL,
개설학과 VARCHAR(20) NOT NULL,
시수 INT NOT NULL
);

SELECT * FROM 과목2;

# 학생2 테이블 생성하시오
CREATE TABLE 학생2
(학번 CHAR(4) NOT NULL,
이름 VARCHAR(20) NOT NULL,
주소 VARCHAR(50) DEFAULT "미정",
학년 INT NOT NULL,
나이 INT NULL,
성별 CHAR(1) NOT NULL,
휴대폰번호 CHAR(13) NULL,
소속학과 VARCHAR(20) NULL,
primary key (학번),
UNIQUE (휴대폰번호));


# 테이블 구조 확인
DESC 학생2;

# 수강2 테이블 생성
CREATE TABLE 수강2
(학번 CHAR(6) NOT NULL,
과목번호 CHAR(4) NOT NULL,
신청날짜 DATE NOT NULL,
중간성적 INT NULL DEFAULT 0,
기말성적 INT NULL DEFAULT 0,
평가학점 CHAR(1) NULL,
PRIMARY KEY (학번, 과목번호),
FOREIGN KEY (학번) REFERENCES 학생2 (학번),
FOREIGN KEY (과목번호) REFERENCES 과목2 (과목번호));


# 무결성 제약 조건의 동작 확인
# "과목2" 테이블의 행 입력
DESC 과목2;
#강의실 열의 문자형 유형에 불일치함
INSERT INTO 과목2(과목번호, 이름, 강의실, 개설학과)
VALUES ("c111", "database", A-123, "산업공학");
#시수 열이 NULL을 허용하지 않음
INSERT INTO 과목2(과목번호, 이름, 강의실, 개설학과)
VALUES ("c111", "database", "A-123", "산업공학");
# 정상수행
INSERT INTO 과목2(과목번호, 이름, 강의실, 개설학과, 시수)
VALUES ("c111", "database", "A-123", "산업공학", 3);

# "학생2" 테이블의 행 입력

DESC 학생2;
#정상수행
INSERT INTO 학생2(학번, 이름, 학년, 나이, 성별, 휴대폰번호, 소속학과)
VALUES ("s111", "박태환", 4, NULL, "남", "010-1111-1111","산업공학");
#UNIQUE 제약조건 오류("휴대폰번호" 열 값이 중복됨)
INSERT INTO 학생2(학번, 이름, 학년, 나이, 성별, 휴대폰번호, 소속학과)
vALUES("s222", "박태환", 2, NULL, "남", "010-1111-1111","산업공학");
#정상수행
INSERT INTO 학생2(학번, 이름, 학년, 나이, 성별, 휴대폰번호, 소속학과)
VALUES("s222","박태환", 2, NULL, "남", "010-2222-2222","산업공학");

# "수강2" 테이블 행 입력
desc 수강2;
#정상수행
INSERT INTO 수강2(학번, 과목번호, 신청날짜)
VALUES ("s111","c111","2019-12-31");
#외래키 제약 조건 오류(입력 과목번호 값이 "과목" 테이블에 존재하지 않음
INSERT INTO 수강2(학번, 과목번호, 신청날짜, 중간성적, 기말성적, 평가학점)
VALUES ("s111","c222","2019-12-31",93,98,"A");
# 기본키 제약 조건 오류 (기본키 "학번"과 "과목번호" 열의 조합이 중복 값이 존재함
INSERT INTO 수강2(학번, 과목번호, 신청날짜, 중간성적, 기말성적, 평가학점)
VALUES ("s222","c111","2019-12-31",93,98,"A");


INSERT INTO 과목2 SELECT * FROM 과목;
INSERT INTO 학생2 SELECT * FROM 학생;
INSERT INTO 수강2 SELECT * FROM 수강;

# 학생2 테이블에 새로운"등록날짜"열을 추가하시오
ALTER TABLE 학생2
ADD 등록날짜 DATETIME NOT NULL DEFAULT "2019-12-30";

SELECT * FROM 학생2;

# 학생2 테이블의 "등록날짜"열을 삭제하시오
ALTER TABLE 학생2
DROP COLUMN 등록날짜;

SELECT * FROM 학생2;

# 학생2 테이블의 "이름"열을 새로운 "학생이름"열로 변경 하려면 ALTER명령문 실행
ALTER TABLE 학생2 CHANGE 이름 학생이름 VARCHAR(20);

# 테이블 이름의 변경
ALTER TABLE 학생2 RENAME TO 재학생2;

# 과목2 테이블 삭제(삭제불가) -> 수강2 자식 테이블 존재하기 때문
DROP TABLE 과목2;

# 수강2 제거하고 과목2 제거
DROP TABLE 수강2;
DROP TABLE 과목2;

'경기도 인공지능 개발 과정 > SQL' 카테고리의 다른 글

[SQL] 데이터 그룹  (0) 2022.08.12
SQL SQLite 사용  (0) 2022.04.29
SQL Mongo DB 활용  (0) 2022.04.28
SQL 기초  (0) 2022.04.22
SQL mysql 실습 셋팅  (0) 2022.04.20