Post

OracleSQL 핵심정리6 - 데이터 무결성을 위한 제약조건

데이터 무결성

  • 데이터 무결성 : 데이터베이스에 저장된 데이터의 정확성과 일관성을 유지하는 것

무결성 제약조건의 개념과 종류

  • 데이터 무결성 제약조건 : 테이블에 부적절한 자료가 입력된는 것을 방지하기 위해서 테이블 생성시 각 컬럼에 대해서 정의하는 규칙
  • 제약조건 종류 : NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK

제약조건 확인

  • USER_CONSTRAINTS 데이터 딕셔너리를 사용해 제약조건 관련 정보를 확인
  • USER_CONSTRAINTS가 제공하는 주요 컬럼으로 OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEARCH_CONDITION, R_CONSTRAINT_NAME 등이 있음
  • CONSTRAINT_TYPE - P: PRIMARY KEY, R: FOREIGN KEY, U: UNIQUE, C: CHECK, NOT NULL
  • USER_CONS_COLUMNS 데이터 딕셔너리를 사용하면 컬럼의 제약조건을 확인할 수 있음
  • CONSTRAINT 테이블명_컬럼명_제약조건유형 : 컬럼 생성시 제약조건 명을 넣어줄 때 사용

CHECK & DEFAULT 제약조건

  • CHECK - 입력되는 값을 체크하여 설정된 값 이외의 값이 들어오면 오류메시지와 함께 명령이 수행되지 못하도록
    • CHECK(컬럼명 조건) 형태로 사용
  • DEFAULT - 아무런 값을 입력하지 않았을 때, 디폴트 값이 입력되도록 하는 제약조건
    • DEFAULT 디폴트값 형태로 사용

제약조건 변경

  • ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] 제약조건 타입 (컬럼명) - 제약조건 추가
  • NOT NULL 제약조건은 ADD 대신 MODIFY 사용해야 함
  • ALTER TABLE 테이블명 DROP 제약조건명 - 제약조건명을 입력하여 제약조건 제거

제약조건의 비활성화

  • 제약조건 사용을 잠시 보류할 수 있는 방법으로 비활성화를 제공
  • 원하는 작업을 한 후에 다시 활성화 상태로 만들어 줘야 함
  • 부모테이블을 참조할 경우 자식테이블만 비활성화 가능
  • DISABLE CONSTRAINT : 제약조건 일시 비활성화
  • ENABLE CONSTRAINT : 비활성화된 제약조건을 다시 활성화함
  • ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건명;
  • ALTER TABLE 테이블명 ENABLE CONSTRAINT 제약조건명;

CASCADE

  • CASCADE : 부모테이블의 제약조건을 비활성화하면서 자식테이블 제약조건까지 함께 비활성화
  • CASCADE는 비활성화 뿐만 아니라 제약조건 삭제에도 활용
  • ALTER TABLE 테이블명 DISABLE 제약조건타입 CASCADE
This post is licensed under CC BY 4.0 by the author.