개발자 랩실/데이터베이스
postgreSQL 제약조건
sina.dev
2022. 1. 19. 22:42
728x90
목차
테이블에 제약조건을 정의하는 이유
- 테이블이나 속성에 부적절한 데이터가 들어오는 것을 사전에 차단하도록 규칙을 정하기 위해서다.
- 컬럼에 대한 속성을 정의하는 것이며, 데이터 무결성을 보장하기 위한 용도로 사용된다.
- 제약조건은 컬럼의 속성처럼 사용하지만, 엄연히 데이터베이스의 객체이므로 고유의 이름을 지정해주어야 한다.
- 사용자가 지정하지 않는 경우 ORACLE이 자동으로 부여한다.
제약조건 종류
Check Constraints
Not-Null Constraints
Unique Constraints
Primary Keys
Foreign Keys
Check Constraints
컬럼의 값을 어떤 특정 범위로 제한할 수 있다.
CREATE TABLE test (
a1 NUMBER(10)
CONSTRAINT test_check CHECK (a1 BETWEEN 10 AND 100)
);
Not-Null Constraints
컬럼의 필수 필드화 시킬 때 사용한다.
CREATE TABLE test (
a1 VARCHAR(10) NOT NULL
, a2 VARCHAR(100)
);
Unique Constraints
데이터의 유일성을 보장(중복되는 데이터가 존재할 수 없다)되고, 자동으로 인덱스가 생선된다.
CREATE TABLE test(
a1 VARCHAR(10) UNIQUE
, a2 VARCHAR(15) UNIQUE NOT NULL
, a3 VARCHAR(5) CONSTRAINT a3_unique UNIQUE(a3)
);
Default(컬럼 기본값) Constraints
데이터를 입력하지 않아도 지정된 값이 기본으로 입력된다.
CREATE TABLE test(
a1 Integer DEFAULT 0 NOT NULL
);
Primary Key Constraints
기본키는 Unique와 Not null의 결합과 같다.
기본키는 그 데이터 행을 대표하는 컬럼으로서의 역할을 수행하여 다른 테이블에서 외래키들이 참조할 수 있는 키로서의 자격을 가지고 있다. 이를 참조 무결성이라 한다.
Unique 조건과 마찬가지로 기본키를 정의하면 자동으로 인덱스를 생성하여, 그 이름은 기본 키 제약 조건의 이름과 같다.
Index : 검색 키로서 검색 속도를 향상 시킨다. (Unique, Primary Key 생성시 자동적으로 생긴다.)
CREATE TABLE test (
a1 VARCHAR(20)
, a2 INT
, a3 VARCHAR(100)
CONSTRAINT pk_test PRIMARY KEY(a1, a2)
);
Foreign Key Constraints
기본키를 참조하는 컬럼 또는 컬럼들의 집합이다.
외래키를 가지는 컬럼의 데이터 형은 외래키가 참조하는 기본키의 컬럼과 데이터형과 일치해야 한다. 이를 어기면 참조 무결성 제약에 의해 테이블을 생성할 수 없다.
외래키에 의해 참조되고 있는 기본 키는 삭제할 수 없다.
on delete casecade 연산자와 함께 정의된 외래키의 데이터는 그 기본키가 삭제될 때 같이 삭제된다.
CREATE TABLE test1(
a1 VARCHAR(5) PRIMARY KEY
);
CREATE TABLE test2(
a2 VARCHAR(10)
, a3 VARCHAR(5)
CONSTRAINT fk_test2 FOREIGN KEY(a3) REFERENCES test1(a1)
);