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
은 허용합니다.