제약조건(CONSTRAINT) 정리

TJK·2025년 8월 22일

제약조건 (CONSTRAINT) 정리

제약조건은 데이터베이스의 무결성(Integrity)을 보장하기 위해 컬럼이나 테이블에 설정하는 규칙입니다. SQLD 시험에서는 각 제약조건의 정확한 기능과 특징, 특히 PRIMARY KEYUNIQUE의 차이를 명확히 구분하는 문제가 자주 출제됩니다.


1. 주요 제약조건 (★★★★★)

제약조건설명시험 포인트
PRIMARY KEY테이블의 기본키 지정.NOT NULL + UNIQUE의 특징을 가짐. 테이블당 하나만 지정 가능.
FOREIGN KEY참조 무결성을 보장.다른 테이블의 PRIMARY KEY 또는 UNIQUE 컬럼만 참조 가능.
NOT NULL해당 컬럼에 NULL 값 삽입 불가.가장 기본적인 제약조건.
UNIQUE해당 컬럼에 중복 값 삽입 불가.NULL은 허용합니다. (이 점이 PK와 가장 큰 차이)
CHECK특정 조건을 만족하는 값만 허용.조건식이 TRUE일 때만 입력 허용. FALSENULL은 입력 불가.
DEFAULT값을 지정하지 않았을 때 기본값 설정.NULL 값을 명시적으로 삽입하면 DEFAULT는 적용되지 않음.

2. 제약조건 선언 방식

1. 컬럼 수준 (Column-level)

  • 컬럼을 정의하는 줄에 함께 선언합니다.
  • NOT NULL, UNIQUE, PRIMARY KEY, CHECK 등 대부분의 제약조건이 가능합니다.
  • 예: user_id INT PRIMARY KEY

2. 테이블 수준 (Table-level)

  • 테이블의 모든 컬럼 정의가 끝난 후 마지막에 별도로 선언합니다.
  • 여러 컬럼을 묶어서 PRIMARY KEYFOREIGN KEY를 지정할 때 유용합니다.
  • 예: PRIMARY KEY (user_id)

3. SQLD 시험 핵심 포인트

  • PK vs UNIQUE:
    • PRIMARY KEYNULL과 중복 모두 불가합니다. (유일성과 Not Null 보장)
    • UNIQUE중복은 불가하지만, NULL은 허용합니다. (NULL은 유일한 값으로 간주하지 않음)
  • FOREIGN KEY:
    • 참조하는 테이블의 컬럼은 반드시 PRIMARY KEY 또는 UNIQUE 제약조건이 설정되어 있어야 합니다.
  • DEFAULT:
    • INSERT 시 컬럼을 생략하면 기본값이 적용되지만, NULL을 명시적으로 넣으면 기본값이 적용되지 않고 NULL이 들어갑니다.

4. 최종 암기 팁

  • "PK는 NN+UK 세트 메뉴!"
  • "NULL은 UNIQUE만 OK, PK는 NO!"
  • "FK는 PK/UK만 바라본다!"
  • "DEFAULT는 생략 시만 적용!"

실전 기출 문제 스타일

1. 다음 중 PRIMARY KEY 제약조건에 대한 설명으로 옳은 것은?
A. NULL 값을 허용한다.
B. 한 테이블에 여러 개 지정할 수 있다.
C. NOT NULLUNIQUE의 특징을 모두 가진다.
D. 다른 테이블의 FOREIGN KEY로 참조될 수 없다.

2. INSERT INTO T (col1, col2) VALUES (1, NULL); 쿼리 실행 시 col2에 기본값으로 설정된 DEFAULT 값이 삽입되지 않는 이유는?
A. DEFAULTNULL을 허용하지 않기 때문이다.
B. NULL 값을 명시적으로 입력했기 때문이다.
C. DEFAULT는 테이블 수준에서만 적용되기 때문이다.
D. NULL 값은 기본값으로 대체될 수 없기 때문이다.

3. 다음 중 테이블에 FOREIGN KEY 제약조건을 설정할 때 참조할 수 없는 컬럼은?
A. PRIMARY KEY가 설정된 컬럼
B. UNIQUE가 설정된 컬럼
C. NOT NULL이 설정된 컬럼
D. PRIMARY KEYUNIQUE가 모두 설정된 컬럼


정답 및 해설

  • 문제 1 정답: C
    • 해설: A와 B는 틀린 설명입니다. PRIMARY KEYNOT NULLUNIQUE의 특징을 모두 가지며, 다른 테이블에서 FOREIGN KEY로 참조될 수 있습니다.
  • 문제 2 정답: B
    • 해설: DEFAULT는 값을 생략했을 때만 적용됩니다. NULL을 명시적으로 입력하면, 기본값으로 대체되지 않고 NULL 그대로 삽입됩니다.
  • 문제 3 정답: C
    • 해설: FOREIGN KEY는 참조 무결성을 위해 반드시 부모 테이블의 PRIMARY KEY 또는 UNIQUE KEY를 참조해야 합니다. NOT NULL만으로는 유일성이 보장되지 않아 참조할 수 없습니다.
profile
Hello world!

0개의 댓글