SQLD › 🤖 [예시문제] (2026-08-15)

5. [예시문제] 다음 중 사원(EMPLOYEES) 테이블을 생성하는 DDL 문으로 올바른 것은? (단, 사원번호는 기본키, 부서번호는 DEPARTMENTS 테이블의 부서번호를 참조하는 외래키, 사원명은 NULL을 허용하지 않음)

  1. CREATE TABLE EMPLOYEES ( 사원번호 NUMBER PRIMARY KEY, 사원명 VARCHAR2(50) NOT NULL, 부서번호 NUMBER, CONSTRAINT FK_DEPT FOREIGN KEY (부서번호) REFERENCES DEPARTMENTS(부서번호) );
  2. CREATE TABLE EMPLOYEES ( 사원번호 NUMBER PRIMARY KEY, 사원명 VARCHAR2(50) NULL, 부서번호 NUMBER, FOREIGN KEY (부서번호) REFERENCES DEPARTMENTS(부서번호) );
  3. CREATE TABLE EMPLOYEES ( 사원번호 NUMBER, 사원명 VARCHAR2(50) NOT NULL, 부서번호 NUMBER FOREIGN KEY REFERENCES DEPARTMENTS(부서번호), CONSTRAINT PK_EMP PRIMARY KEY (사원번호) );
  4. CREATE TABLE EMPLOYEES ( 사원번호 PRIMARY KEY NUMBER, 사원명 VARCHAR2(50) NOT NULL, 부서번호 NUMBER, FOREIGN KEY (부서번호) REFERENCES DEPARTMENTS );

정답: 1번

1번 보기는 사원번호를 PRIMARY KEY로, 사원명을 NOT NULL로, 부서번호를 DEPARTMENTS 테이블의 부서번호를 참조하는 FOREIGN KEY로 올바르게 정의하고 있습니다. 2번 보기는 사원명에 NULL을 허용하여 요구사항을 만족하지 못합니다. 3번 보기는 '부서번호 NUMBER FOREIGN KEY REFERENCES DEPARTMENTS(부서번호)' 구문은 단일 컬럼 제약조건으로 사용할 수 있지만, PRIMARY KEY를 컬럼 레벨로 지정한 후 테이블 레벨로 다시 지정하는 것은 중복이며, 구문이 다소 어색합니다. 또한 PRIMARY KEY 선언 위치가 잘못되었습니다. 4번 보기는 '사원번호 PRIMARY KEY NUMBER'와 같이 데이터 타입과 제약조건 키워드의 순서가 바뀌었으며, FOREIGN KEY 참조 대상 테이블 뒤에 컬럼명 '(부서번호)'가 빠져있습니다. 따라서 가장 정확하고 표준적인 DDL 문은 1번입니다.