Dico

SQL Data Integrity Constraint Rule

  • 민갤

데이터 무결성 제약 조건

테이블에 부적절한 데이터가 입력되는 것을 방지하기 위한 규칙.

테이블을 생성할 때 각 컬럼에 대해 정의한다.

  • 무결성 : 데이터의 정확성을 유지한다.
  • 제약 조건 : 부적절한 데이터가 저장되는 것을 방지한다.

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;