CREATE TABLE은 데이터베이스의 기본 객체인 테이블을 만드는 DDL(Data Definition Language) 명령어입니다. SQLD 시험에서는 테이블과 컬럼의 명명 규칙, 그리고 제약조건에 대한 문제가 자주 출제됩니다.
CREATE TABLE 테이블명 (컬럼명 데이터타입 [제약조건], ...);CREATE TABLE은 DDL 명령어로, 실행 시 **자동으로 COMMIT**됩니다. 따라서 ROLLBACK으로 되돌릴 수 없습니다.이름은 명확한 규칙을 따르며, 규칙 위반 시 오류가 발생합니다.
A-Z, a-z) 또는 **언더바(_)**로 시작해야 합니다. 숫자로 시작할 수 없습니다._), 달러($), 샵(#)만 사용 가능합니다.SELECT, FROM, TABLE과 같은 SQL 예약어는 사용 불가합니다. (단, 큰따옴표로 묶으면 사용 가능하지만 권장되지 않습니다)USER = user). 단, 큰따옴표("USER")로 묶으면 대소문자를 구분합니다.테이블에 저장될 데이터의 **무결성(Integrity)**을 보장하기 위한 규칙입니다.
| 제약조건 | 의미 | 시험 핵심 포인트 |
|---|---|---|
NOT NULL | 해당 컬럼에 NULL 값 입력 불가 | 반드시 값이 입력되어야 함 |
UNIQUE | 중복 값 입력 불가, NULL은 허용 | NULL은 유일 값으로 간주되지 않음 |
PRIMARY KEY | NOT NULL + UNIQUE | 테이블당 오직 한 개만 지정 가능 |
FOREIGN KEY | 다른 테이블의 PRIMARY KEY 참조 | 참조 무결성 보장 |
CHECK | 특정 조건(값의 범위 등)만 허용 | CHECK (age > 0)와 같이 조건 지정 |
DEFAULT | 값을 입력하지 않으면 기본값 자동 저장 | 날짜, 시간 등 SYSDATE로 많이 사용 |
CREATE TABLE**은 DDL이므로 ROLLBACK이 불가능하다.PRIMARY KEY는 NOT NULL과 UNIQUE를 합친 개념이다.UNIQUE 제약조건은 NULL 값을 허용한다. (가장 자주 나오는 함정)_, $, #만 허용.1. 다음 중 올바른 테이블명은? (Oracle 기준)
① 123User
② User-Info
③ _User
④ SELECT
2. 아래 제약조건에 대한 설명 중 틀린 것은?
① PRIMARY KEY는 NOT NULL과 UNIQUE를 동시에 만족한다.
② UNIQUE는 NULL 값을 허용한다.
③ FOREIGN KEY는 다른 테이블의 PRIMARY KEY를 참조한다.
④ CHECK는 특정 조건만 허용한다.
3. 다음 CREATE TABLE 실행 후 가능한 설명으로 옳은 것은?
CREATE TABLE Orders (
order_id NUMBER PRIMARY KEY,
order_date DATE DEFAULT SYSDATE,
amount NUMBER CHECK (amount > 0)
);
① order_id는 중복될 수 있다.
② order_date는 값을 입력하지 않으면 오늘 날짜가 저장된다.
③ amount 컬럼에는 0도 입력 가능하다.
④ CREATE TABLE 실행 후 ROLLBACK이 가능하다.
4. SQLD 시험에서 자주 나오는 함정: 다음 중 UNIQUE와 PRIMARY KEY의 차이를 올바르게 설명한 것은?
① 둘 다 NULL 불가, 중복 불가이다.
② PRIMARY KEY는 NULL 허용, UNIQUE는 허용하지 않는다.
③ PRIMARY KEY는 NOT NULL + UNIQUE이고, UNIQUE는 NULL을 허용한다.
④ 두 제약조건은 완전히 동일하다.
- 특수문자는 허용되지 않습니다. ④ SELECT는 예약어이므로 사용할 수 없습니다. _로 시작하는 이름은 허용됩니다.UNIQUE 제약조건은 중복을 허용하지 않지만, NULL 값은 허용합니다. 이는 SQLD 시험에서 자주 출제되는 함정입니다.DEFAULT SYSDATE는 값을 입력하지 않을 경우 현재 날짜를 자동으로 저장하라는 의미입니다. ① PRIMARY KEY는 중복을 허용하지 않습니다. ③ amount는 CHECK (amount > 0) 제약조건에 따라 0을 입력할 수 없습니다. ④ CREATE TABLE은 DDL이므로 ROLLBACK이 불가능합니다.PRIMARY KEY는 NOT NULL과 UNIQUE의 속성을 모두 가집니다. 반면, UNIQUE는 중복만 방지하고 NULL은 허용합니다.