제약 조건 (CONSTRAINT)

2024. 6. 5. 19:00SQL

제약 조건 (CONSTRAINTS)
    - 사용자가 원하는 조건의 데이터만 유지하기 위해 특정 컬럼에 설정하는 제약
    - 데이터 무결성 보장을 목적으로 함
        입력 데이터에 문제가 없는지 자동으로 검사하는 목적
        데이터 수정 / 삭제 가능 여부 검사 등을 목적으로 함
        -> 제약조건을 위배하는 DML 구문은 수행할 수 없음
        
    종류
    PRIMARY KEY, NOT NULL, UNIQUE, CHECK, FOREIGN KEY
    
    확인
    -- USER_CONSTRAINTS : 사용자가 작성한 제약 조건을 확인하는 딕셔너리 뷰
    
    OWNER : 유저 아이디
    CONSTRAINTS_NAME : 제약 조건 이름
    CONSTRAINTS_TYPE : 제약 조건 유형
    C : CHECK
    P : PRIMARY KEY
    U : UNIQUE
    R : FOREIGN KEY
    V : VIEW
    O : 읽기 전용 뷰
    TABLE NAME : 제약 조건이 적용된 테이블 이름

 

NOT NULL
    해당 컬럼에 반드시 값이 존재해야하는 경우 사용
    삽입 / 수정시 NULL 값을 허용하지 않도록 컬럼 레벨에서 제한

 

UNIQUE
    - 컬럼에 입력 값에 대해 중복을 제한하는 제약 조건
    - 컬럼 레벨에서 설정 가능, 테이블 레벨에서 설정 가능
    - 단, UNIQUE 제약 조건이 설정된 컬럼에 NULL 값 한 번 삽입 가능
    - 유니크 컬럼이 여러개면 각 컬럼마다 NULL이 들어가도 됨

 

PRIMARY KEY(기본키)
    - 테이블에서 한 행의 정보를 찾기 위해 사용할 컬럼을 의미
    - 테이블에 대한 식별자(IDENTIFIER) 역할을 함
    - NOT NULL + UNIQUE의 의미
    - 한 테이블 당 한 개만 설정 가능
    - 컬럼 레벨, 테이블 레벨 둘 다 설정 가능
    - 한 개 컬럼에 설정할 수 있고, 여러개의 컬럼을 묶어서 설정할 수 있음

 

 

UNIQUE / PK 차이점
    
    UNIQUE : NULL 값이 한 개는 허용되나 두 개 이상 안됨
    
    PRIMARY KEY : NULL 값 불가능, 중복 불가능

 

FOREIGN KEY(외부키)
    - 참조된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있음
    - 삭제하는 데 있어 에러가 자주 발생

    - CASCADE : 부모키 삭제시 참조하는 자식의 행도 모두 삭제
    - 삭제는 아니고 메뉴들을 NULL 값으로 변경하고 싶다면 NULL 적용

 

 

'SQL' 카테고리의 다른 글

SEQUENCE  (0) 2024.06.07
DDL(ALTER) +DROP  (0) 2024.06.07
DDL(CREATE)  (0) 2024.06.05
조건문  (0) 2024.06.05
트랜잭션  (0) 2024.06.05