제약조건은 데이터베이스의 무결성(Integrity)을 보장하기 위해 컬럼이나 테이블에 설정하는 규칙입니다. SQLD 시험에서는 각 제약조건의 정확한 기능과 특징, 특히 PRIMARY KEY와 UNIQUE의 차이를 명확히 구분하는 문제가 자주 출제됩니다.
| 제약조건 | 설명 | 시험 포인트 |
|---|---|---|
PRIMARY KEY | 테이블의 기본키 지정. | NOT NULL + UNIQUE의 특징을 가짐. 테이블당 하나만 지정 가능. |
FOREIGN KEY | 참조 무결성을 보장. | 다른 테이블의 PRIMARY KEY 또는 UNIQUE 컬럼만 참조 가능. |
NOT NULL | 해당 컬럼에 NULL 값 삽입 불가. | 가장 기본적인 제약조건. |
UNIQUE | 해당 컬럼에 중복 값 삽입 불가. | NULL은 허용합니다. (이 점이 PK와 가장 큰 차이) |
CHECK | 특정 조건을 만족하는 값만 허용. | 조건식이 TRUE일 때만 입력 허용. FALSE나 NULL은 입력 불가. |
DEFAULT | 값을 지정하지 않았을 때 기본값 설정. | NULL 값을 명시적으로 삽입하면 DEFAULT는 적용되지 않음. |
NOT NULL, UNIQUE, PRIMARY KEY, CHECK 등 대부분의 제약조건이 가능합니다.user_id INT PRIMARY KEYPRIMARY KEY나 FOREIGN KEY를 지정할 때 유용합니다.PRIMARY KEY (user_id)PK vs UNIQUE:PRIMARY KEY는 NULL과 중복 모두 불가합니다. (유일성과 Not Null 보장)UNIQUE는 중복은 불가하지만, NULL은 허용합니다. (NULL은 유일한 값으로 간주하지 않음)FOREIGN KEY:PRIMARY KEY 또는 UNIQUE 제약조건이 설정되어 있어야 합니다.DEFAULT:INSERT 시 컬럼을 생략하면 기본값이 적용되지만, NULL을 명시적으로 넣으면 기본값이 적용되지 않고 NULL이 들어갑니다.1. 다음 중 PRIMARY KEY 제약조건에 대한 설명으로 옳은 것은?
A. NULL 값을 허용한다.
B. 한 테이블에 여러 개 지정할 수 있다.
C. NOT NULL과 UNIQUE의 특징을 모두 가진다.
D. 다른 테이블의 FOREIGN KEY로 참조될 수 없다.
2. INSERT INTO T (col1, col2) VALUES (1, NULL); 쿼리 실행 시 col2에 기본값으로 설정된 DEFAULT 값이 삽입되지 않는 이유는?
A. DEFAULT는 NULL을 허용하지 않기 때문이다.
B. NULL 값을 명시적으로 입력했기 때문이다.
C. DEFAULT는 테이블 수준에서만 적용되기 때문이다.
D. NULL 값은 기본값으로 대체될 수 없기 때문이다.
3. 다음 중 테이블에 FOREIGN KEY 제약조건을 설정할 때 참조할 수 없는 컬럼은?
A. PRIMARY KEY가 설정된 컬럼
B. UNIQUE가 설정된 컬럼
C. NOT NULL이 설정된 컬럼
D. PRIMARY KEY와 UNIQUE가 모두 설정된 컬럼
PRIMARY KEY는 NOT NULL과 UNIQUE의 특징을 모두 가지며, 다른 테이블에서 FOREIGN KEY로 참조될 수 있습니다.DEFAULT는 값을 생략했을 때만 적용됩니다. NULL을 명시적으로 입력하면, 기본값으로 대체되지 않고 NULL 그대로 삽입됩니다.FOREIGN KEY는 참조 무결성을 위해 반드시 부모 테이블의 PRIMARY KEY 또는 UNIQUE KEY를 참조해야 합니다. NOT NULL만으로는 유일성이 보장되지 않아 참조할 수 없습니다.