- 제약조건
- 테이블에 제약조건을 설정하여 데이터 무결성을 유지할 수 있다.
- CREATE 문으로 테이블 생성할 때나 ALTER 문으로 테이블 구조 변경시 지정 가능
- 제약조건은 고유한 이름을 붙여서 식별할 수 있다.
- 한 컬럼의 여러 개의 제약조건 설정 가능
- 형식
-
CREATE TABLE 테이블명 ( 컬럼1 데이터타입 제약조건, 컬럼2 데이터타입, 제약조건(컬럼2) );
- 컬럼의 데이터타입 바로 다음에 기술 또는
- 컬럼의 정의를 끝낸 후 제약조건을 별도로 지정으로 가능
-
- 제약조건 종류
- PRIMARY KEY
- 기본키 설정
- 기본키는 테이블 당 한개만 가능
- 기본키는 NOT NULL과 유일한 값 (UNIQUE)을 가져야 한다.
- 기본키 생성시 자동으로 인덱스 생성
- NOT NULL
- UNIQUE
- 유일한 값을 넣어야 한다.
- 자동 인덱스 생성
- CHECK
- 설정된 조건에 맞는 값만 넣어야 한다.
- 조건으로는 특정 값이나 범위, 특정 패턴의 숫자나 문자 설정 가능
- DEFAULT
- 값을 넣지 않으면 지정한 값이 자동으로 들어간다.
- FOREIGN KEY
- 외래키 설정
- 한 테이블의 외래키는 참조하는 테이블의 기본키이거나 NULL이어야 하고, 데이터 타입과 크기가 동일해야 한다.
- PRIMARY KEY
- 제약조건의 추가/삭제/지정
- 추가
- ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건(컬럼명이나 조건);
- 예시
-
ALTER TABLE 평점관리 ADD CONSTRAINT q08_8 FOREIGN KEY (영화번호) REFERENCES 영화(영화번호) ON DELETE CASCADE;
-
- 삭제
- ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;
- 제약조건명의 지정 (고유 이름)
- 컬럼 레벨
- 컬럼명 데이터타입 [CONSTRAINT 제약조건명] 제약조건
- 테이블 레벨
- [CONSTRAINT 제약조건명] 제약조건
- 컬럼 레벨
- 추가
- 외래키 제약조건의 옵션
- CASCADE
- ON DELETE CASCADE
- 부모 레코드 삭제 시 자식 레코드도 연쇄적으로 삭제
- ON UPDATE CASCADE
- 부모 레코드의 기본키 수정시 자식 레코드의 외래키 값도 연쇄적으로 수정
- ON DELETE CASCADE
- SET NULL
- ON DELETE
- 부모 레코드 삭제시 자식 레코드의 외래키 값이 NULL로 변경
- ON UPDATE
- 부모 레코드의 기본키 수정시 자식 레코드의 외래키 값이 NULL로 변경
- ON DELETE
- SET DEFAULT
- ON DELETE
- 부모 레코드 삭제시 자식 레코드의 외래키 값이 기본값으로 변경
- ON UPDATE
- 부모 레코드의 기본키 수정시 자식 레코드의 외래키값이 기본값으로 변경
- ON DELETE
- NO ACTION (기본값)
- ON DELETE
- 자식 레코드가 있으면 부모 레코드를 삭제할 수 없다.
- ON UPDATE
- 자식 레코드가 있으면 부모 레코드의 기본키 값을 수정할 수 없다.
- ON DELETE
- CASCADE
'SQL' 카테고리의 다른 글
[SQL] 데이터 모델링 (0) | 2024.03.23 |
---|---|
[SQL] 윈도우 함수 (0) | 2024.03.23 |
[SQL] DDL (CREATE, ALTER, DROP) (0) | 2024.03.23 |
[SQL] DML (INSERT, UPDATE, DELETE) (0) | 2024.03.22 |
[SQL] 데이터 타입 (0) | 2024.03.22 |