CREATE TABLE 개념 정리

TJK·2025년 8월 22일
0

CREATE TABLE 개념 정리

CREATE TABLE은 데이터베이스의 기본 객체인 테이블을 만드는 DDL(Data Definition Language) 명령어입니다. SQLD 시험에서는 테이블과 컬럼의 명명 규칙, 그리고 제약조건에 대한 문제가 자주 출제됩니다.


1. CREATE TABLE 기본 문법

핵심 개념 (★★★★★)

  • CREATE TABLE 테이블명 (컬럼명 데이터타입 [제약조건], ...);
  • CREATE TABLE은 DDL 명령어로, 실행 시 **자동으로 COMMIT**됩니다. 따라서 ROLLBACK으로 되돌릴 수 없습니다.

2. 테이블 및 컬럼 이름 규칙 (시험 단골)

핵심 개념 (★★★★★)

이름은 명확한 규칙을 따르며, 규칙 위반 시 오류가 발생합니다.

  • 첫 글자: 문자(A-Z, a-z) 또는 **언더바(_)**로 시작해야 합니다. 숫자로 시작할 수 없습니다.
  • 허용 문자: 영문자, 숫자, 언더바(_), 달러($), 샵(#)만 사용 가능합니다.
  • 길이: Oracle 기준 30byte를 초과할 수 없습니다.
  • 예약어: SELECT, FROM, TABLE과 같은 SQL 예약어는 사용 불가합니다. (단, 큰따옴표로 묶으면 사용 가능하지만 권장되지 않습니다)
  • 대소문자: 기본적으로 구분하지 않습니다. (USER = user). 단, 큰따옴표("USER")로 묶으면 대소문자를 구분합니다.

3. 주요 제약조건 (Constraints)

핵심 개념 (★★★★★)

테이블에 저장될 데이터의 **무결성(Integrity)**을 보장하기 위한 규칙입니다.

제약조건의미시험 핵심 포인트
NOT NULL해당 컬럼에 NULL 값 입력 불가반드시 값이 입력되어야 함
UNIQUE중복 값 입력 불가, NULL은 허용NULL은 유일 값으로 간주되지 않음
PRIMARY KEYNOT NULL + UNIQUE테이블당 오직 한 개만 지정 가능
FOREIGN KEY다른 테이블의 PRIMARY KEY 참조참조 무결성 보장
CHECK특정 조건(값의 범위 등)만 허용CHECK (age > 0)와 같이 조건 지정
DEFAULT값을 입력하지 않으면 기본값 자동 저장날짜, 시간 등 SYSDATE로 많이 사용

4. SQLD 시험 스킬 & 암기 포인트

  • **CREATE TABLE**은 DDL이므로 ROLLBACK이 불가능하다.
  • PRIMARY KEYNOT NULLUNIQUE를 합친 개념이다.
  • UNIQUE 제약조건은 NULL 값을 허용한다. (가장 자주 나오는 함정)
  • 테이블명 규칙: 숫자로 시작 ❌, 특수문자는 _, $, #만 허용.

실전 기출 문제 스타일

1. 다음 중 올바른 테이블명은? (Oracle 기준)
123User
User-Info
_User
SELECT

2. 아래 제약조건에 대한 설명 중 틀린 것은?
PRIMARY KEYNOT NULLUNIQUE를 동시에 만족한다.
UNIQUENULL 값을 허용한다.
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 시험에서 자주 나오는 함정: 다음 중 UNIQUEPRIMARY KEY의 차이를 올바르게 설명한 것은?
① 둘 다 NULL 불가, 중복 불가이다.
PRIMARY KEYNULL 허용, UNIQUE는 허용하지 않는다.
PRIMARY KEYNOT NULL + UNIQUE이고, UNIQUENULL을 허용한다.
④ 두 제약조건은 완전히 동일하다.


정답 및 해설

  • 문제 1 정답: ③
    • 해설: ① 테이블명은 숫자로 시작할 수 없습니다. ② - 특수문자는 허용되지 않습니다. ④ SELECT는 예약어이므로 사용할 수 없습니다. _로 시작하는 이름은 허용됩니다.
  • 문제 2 정답: ②
    • 해설: UNIQUE 제약조건은 중복을 허용하지 않지만, NULL 값은 허용합니다. 이는 SQLD 시험에서 자주 출제되는 함정입니다.
  • 문제 3 정답: ②
    • 해설: DEFAULT SYSDATE는 값을 입력하지 않을 경우 현재 날짜를 자동으로 저장하라는 의미입니다. ① PRIMARY KEY는 중복을 허용하지 않습니다. ③ amountCHECK (amount > 0) 제약조건에 따라 0을 입력할 수 없습니다. ④ CREATE TABLE은 DDL이므로 ROLLBACK이 불가능합니다.
  • 문제 4 정답: ③
    • 해설: PRIMARY KEYNOT NULLUNIQUE의 속성을 모두 가집니다. 반면, UNIQUE는 중복만 방지하고 NULL은 허용합니다.
profile
Hello world!

0개의 댓글