다음 SQL 문으로 오류 없이 생성된 ‘고객’과 ‘주문’ 테이블에 다음… | [7급 국가직 데이터베이스론] 26년 1회차 기출문제 상세 페이지
1[7급 국가직 데이터베이스론] 26년 1회차
다음 SQL 문으로 오류 없이 생성된 ‘고객’과 ‘주문’ 테이블에 다음과 같이 투플이 삽입되어 있을 때 성공적으로 수행되는 SQL 문은?고객CREATE TABLE 고객 (
고객번호 VARCHAR(2),
이름 VARCHAR(10),
추천고객 VARCHAR(2),
PRIMARY KEY(고객번호),
FOREIGN KEY(추천고객) REFERENCES 고객(고객번호)
ON DELETE CASCADE
);
CREATE TABLE 주문 (
주문번호 VARCHAR(2),
고객 VARCHAR(2),
제품 VARCHAR(10),
수량 INT,
PRIMARY KEY(주문번호),
FOREIGN KEY(고객) REFERENCES 고객(고객번호)
);
| 고객번호 | 이름 | 추천고객 |
|---|---|---|
| C1 | 김유신 | NULL |
| C2 | 홍길동 | C1 |
| C3 | 이순신 | C2 |
| C4 | 임꺽정 | C3 |
| C5 | 유관순 | C1 |
| 주문번호 | 고객 | 제품 | 수량 |
|---|---|---|---|
| O1 | C1 | HDD | 2 |
| O2 | C1 | SSD | 1 |
| O3 | C4 | USB | 5 |
1
INSERT INTO 주문 VALUES (“O4”, “C6”, “VGA”, 2);
2
DELETE FROM 고객 WHERE 고객번호 = “C3”;
3
DELETE FROM 고객 WHERE 고객번호 = “C5”;
4
UPDATE 고객 SET 고객번호=“C7” WHERE 고객번호=“C4”;
해설
추천고객이나 주문에서 참조되지 않는 C5를 삭제하는 문장만 제약 위반 없이 수행된다.
‘주문’의 외래키에는 참조 동작이 지정되지 않아 기본값(NO ACTION/RESTRICT)이 적용되므로, 주문에서 참조 중인 고객번호는 삭제·변경할 수 없다.
- C6의 주문 삽입은 ‘고객’에 C6이 없어 참조 무결성 위반으로 실패한다.
- C3 삭제는 ON DELETE CASCADE로 C3을 추천고객으로 둔 C4까지 삭제되어야 하는데, C4를 주문 O3가 참조하고 있어 실패한다.
- C4를 C7로 바꾸는 갱신은 주문 O3가 C4를 참조하고 ON UPDATE 동작이 없어 거부된다.
오류나 개정된 내용이 보이면 알려주세요