제약

유석현(SeokHyun Yu)·2022년 8월 15일
0

SQL

목록 보기
27/45
post-thumbnail

서론

테이블에는 '제약'을 설정함으로써 저장될 데이터를 제한할 수 있다.

예를 들어 NOT NULL 제약은 NULL 값이 저장되지 않도록 제한한다.

NOT NULL 제약 외에도 기본키(Primary Key) 제약이나 외부참조 제약 등이 있다.

이 제약은 데이터베이스 설계에도 영향을 주는 중요한 개념이다.

특히 기본키 제약은 RDBMS에서 반드시 언급되는 사항이므로 추가나 삭제 방법을 확실하게 알아두어야 한다.


1.테이블 작성시 제약 정의

제약은 테이블에 설정하는 것이다.

CREATE TABLE로 테이블을 작성할 때 제약을 같이 정의한다.

물론 ALTER TABLE로 제약을 지정하거나 변경할 수 있다.

다음은 테이블에 NOT NULL 제약과 UNIQUE 제약을 설정하는 예제이다.

CREATE TABLE sample_table (
	a INTEGER NOT NULL,
    b INTEGER NOT NULL UNIQUE,
    c VARCHAR(30)
);

a 열에는 NOT NULL 제약이 걸려있다.

b 열에는 NOT NULL 제약과 UNIQUE 제약이 함께 걸려있다.

c 열에는 아무 제약도 지정되어 있지 않다.

이처럼 열에 대해 정의하는 제약을 '열 제약'이라고 부른다.

한편 복수의 열에 제약을 설정하는 경우는 '테이블 제약'이라 부른다.

CREATE TABLE sample_table (
	id INTEGER NOT NULL,
    sub_id INTEGER NOT NULL,
    name VARCHAR(30),
    PRIMARY KEY(id)
);

제약에는 이름을 붙일 수 있다.

제약에 이름을 붙이면 나중에 관리하기가 쉬워지므로 가능한 한 이름을 붙이도록 하자.

제약 이름은 CONSTRAINT 키워드를 사용해서 지정한다.

CREATE TABLE sample_table (
	id INTEGER NOT NULL,
    sub_id INTEGER NOT NULL,
    name VARCHAR(30),
   	CONSTRAINT pkey PRIMARY KEY(id)
);

2. 제약 추가

테이블을 생성할 때 제약을 정의하지 못했더라도 ALTER TABLE 명령을 이용해 언제든지 제약을 추가할 수 있다.

먼저 열 제약을 추가하는 경우 MODIFY 구를 사용하며 제약이 추가되는 열에 제약을 위반하는 데이터가 있는지 먼저 검사한다.

예를 들어, 어떤 열에 NULL 값이 존재한다면 다음과 같은 ALTER TABLE 명령은 에러가 발생한다.

ALTER TABLE sample_table MODIFY col VARCHAR(30) NOT NULL;

테이블 제약은 ALTER TABLE의 ADD 하부명령으로 추가할 수 있다.

다음은 테이블에 기본키 제약을 추가하는 예제이다.

참고로 기본키는 테이블에 하나만 설정할 수 있기 때문에 이미 기본키가 설정되어 있는 테이블에 추가로 기본키를 작성할 수는 없다.

ALTER TABLE sample_table ADD CONSTRAINT pkey PRIMARY KEY(col);

3. 제약 삭제

테이블 제약은 나중에 삭제할 수도 있다.

열 제약의 경우, 제약을 추가할 때와 동일하게 열 정의를 변경하면 된다.

다음은 앞서 추가한 col 열의 NOT NULL 제약을 삭제하는 ALTER TABLE의 예이다.

ALTER TABLE sample_table MODIFY col VARCHAR(30);

한편 테이블 제약은 ALTER TABLE의 DROP 하부명령으로 삭제할 수 있다.

삭제할 때는 제약명을 지정한다.

ALTER TABLE sample_table DROP CONSTRAINT pkey;

단, 기본키는 테이블당 하나만 설정할 수 있기 때문에 굳이 제약명을 지정하지 않고도 삭제할 수 있다.

ALTER TABLE sample_table DROP PRIMARY KEY;

4. 기본키

데이터베이스에는 열쇠를 뜻하는 '키(key)'라는 단어가 자주 등장한다.

'검색키'와 같이 '~~키'의 형태로 쓰이는 경우가 많다.

이때 검색키는 검색할 때의 키워드라고 생각하면 이해하기 쉽다.

즉, 대량의 데이터에서 원하는 데이터를 찾아낼 때 키가 되는 요소를 지정해 검색하는 것이다.

기본키는 테이블의 한 행을 특정할 수 있는 검색키이다.

기본키 제약이 설정된 테이블에서는 복수의 행이 일치하는 데이터를 작성할 수 없다.

간단히 말하면, 기본키로 설정된 열이 중복하는 데이터 값을 가지면 제약에 위반된다.

행이 유일성을 필요로 한다는 의미에서 '유일성 제약'이라 불리는 경우도 있다.

profile
Backend Engineer

0개의 댓글