SQL Data Integrity Constraint Rule
Database데이터 무결성 제약 조건
테이블에 부적절한 데이터가 입력되는 것을 방지하기 위한 규칙.
테이블을 생성할 때 각 컬럼에 대해 정의한다.
- 무결성 : 데이터의 정확성을 유지한다.
- 제약 조건 : 부적절한 데이터가 저장되는 것을 방지한다.
NOT NULL | 컬럼에 NULL을 입력하지 못하도록 필수 입력 컬럼으로 지정한다. |
---|---|
UNIQUE | 테이블의 모든 행에 대해서 유일한 값을 갖도록 한다. |
PRIMARY KEY | 기본키. 테이블의 각 행을 식별하기 위한 조건. NULL과 중복을 허용하지 않는다. |
FOREIGN KEY | 외래키. 기본키를 참조한다. 참조되는 테이블의 칼럼값이 항상 존재해야 한다. |
CHECK | 주어진 조건이나 범위에 해당하는 데이터만 저장 가능하게 한다. |
테이블 생성시 제약 조건 생성
CREATE TABLE 테이블명(
-- 칼럼 레벨에서 정의
컬럼명 데이터타입(사이즈) CONSTRAINT 조건명 제약조건
-- 테이블 레벨에서 정의
CONSTRAINT 조건명 제약조건(컬럼);
);
CREATE TABLE 테이블명(
컬럼명 데이터타입(사이즈) NOT NULL,
컬럼명 데이터타입(사이즈) UNIQUE,
컬럼명 데이터타입(사이즈) PRIMARY KEY,
컬럼명 데이터타입(사이즈) REFERENCES 부모테이블(컬럼) [ON DELETE CASCADE],
컬럼명 데이터타입(사이즈) CHECK (조건)
);
- ON DELETE CASCADE
부모 테이블의 행(기본키)을 삭제하면 자동으로 자식 테이블의 종속 행(외래키)도 삭제된다.
제약 조건 추가
기존 컬럼에 제약 조건을 추가한다.
ALTER TABLE 테이블 ADD [CONSTRAINT 제약조건명] 제약조건(컬럼);
ALTER TABLE Childs ADD CONSTRAINT Child_FK FOREIGN KEY (ChildId) REFERENCES Parents(ParentId);
제약 조건 삭제
기존 컬럼의 제약 조건을 삭제한다.
기본키는 자신을 참조하고 있는 외래키가 없어야 삭제할 수 있다.
ALTER TABLE 테이블 DROP CONSTRAINT 제약조건명;
ALTER TABLE Parents DROP CONSTRAINT Parent_PK;
제약 조건 CASCADE 삭제
기본키를 참조하고 있는 외래키에 CASCADE 옵션인 ON DELETE CASCADE가 지정되어 있으면
외래키를 별도로 삭제할 필요 없이 기본키를 삭제할 수 있다.
ALTER TABLE 테이블 DROP 제약조건 CASCADE;
ALTER TABLE Parents DROP PRIMARY KEY CASCADE;
제약 조건 정보 가져오기
SELECT constraint_name, constraint_type, table_name
FROM SYS.user_constraints;