[오라클] 테이블 생성/변경시 제약조건(Constraint)
테이블을 생성/변경할 때 제약조건을 설정할 수가 있으며, 제약조건이란 테이블의 해당칼럼에 올바른 데이터만 입력받고 잘못된 데이터는 들어오지 못하도록 정하는 규칙이다.
- 제약조건은 테이블 Level 및 컬럼 Level 에서 규칙을 적용한다.
- 제약조건은 종속성이 존재할 경우 게시물 삭제를 방지한다.
- 테이블에서 행이 삽입, 갱신, 삭제될 때마다 테이블에서 규칙을 적용한다.
- 테이블 생성과 동시에 지정할 수도 있고, 테이블 생성 후에 추가할 수도 있다.
- 제약조건은 user_constraints 데이터 딕셔너리에서 검색할 수 있다.
제약조건의 종류
조건 이름 |
의 미 |
NOT NULL |
조건이 설정된 칼럼에는 NULL 값이 입력되지 못한다 - 컬럼 Level 에서만 지정 가능 |
Primary Key |
테이블당 1개만 설정 가능하며, 보통 자동으로 인덱스를 부여한다. NOT NULL + Unique 의 의미 중간 레코드(행)을 삭제해도 신규로 삭제되는 값은 Max(no) + 1 이다. |
Unique |
조건이 설정된 칼럼에는 중복된 값이 입력되지 못한다. - NULL 값 저장 가능 - 복합 칼럼 지정시에는 테이블 Level 에서만 가능 |
Foreign Key |
다른 테이블의 칼럼을 참조해서 무결성 검사를 한다. - ON Delete Cascade : 제약조건에 의해 참조되는 테이블(부모테이블)의 행이 삭제되면 |
Check |
이 조건으로 설정된 값만 입력을 허용하고 나머지는 거부된다. |
제약조건 정의 방법
1. 테이블 Level 지정 방법
- 테이블 칼럼 정의와는 별개로 정의한다.
- NOT NULL 제약조건을 제외한 모든 제약조건 정의가 가능하다.
2. 칼럼 Level 지정방법
- 한개의 칼럼에 한개의 제약조건만 정의 가능하다.
- 모든 제약조건 정의 가능하다.
'SQL' 카테고리의 다른 글
[SQL] 쿼리(Query)의 개념 (0) | 2015.01.26 |
---|---|
MySQL 주소에서 지역명 정리하기 (0) | 2015.01.25 |
MySQL 날짜, 통화이력 산출 (0) | 2015.01.20 |
[MySQL] 데이터베이스 생성 (0) | 2015.01.18 |
MySQL 특정 칼럼의 행 비교후 개수 카운트 (3) | 2015.01.17 |