1. 제약 조건 종류
- 제약 조건이란?
종류 | 설명 |
NOT NULL | 지정한 열에 NULL을 허용하지 않음, NULL을 제외한 데이터의 중복은 허용됨 |
UNIQUE | 지정한 열이 유일한 값을 가져야 하므로 중복된 값 허용안됨 단, NULL값은 값의 중복에서 제외 |
PRIMARY KEY | 지정한 열이 유일한 값이면서 NULL을 허용하지 않음. PRIMARY KEY는 테이블에 하나만 지정 가능 |
FOREIGN KEY | 다른 테이블의 열을 참조하여 존재하는 값만 입력할 수 있음 |
CHECK | 설정한 조건식을 만족하는 데이터만 입력가능 |
※데이터 무결성이란? 데이터베이스에 저장되는 데이터의 정확성과 일관성을 보장
종류 | 설명 |
도메인 무결성 | 열에 저장되는 값의 적정 여부를 확인, 자료형, 적절한 형식의 데이터, NULL 여부같은 정해 놓은 범위를 만족하는 데이터임을 규정 |
개체 무결성 | 테이블 데이터를 유일하게 식별할 수 있는 기본키는 반드시 값을 가지고 있어야 하며 NULL이 될 수 없고 중복될 수도 없음 |
참조 무결성 | 참조 테이블의 외래키 값은 참조 테이블의 기본키로서 존재해야 하며 NULL이 가능 |
2. 빈 값을 허락하지 않는 NOT NULL
- 테이블을 생성하며 제약 조건 지정
- 반드시 열에 값이 존재해야 하는 경우에 지정
- 제약 조건 확인: USER_CONSTRAINTS데이터사전을 활용
열 이름 | 설명 |
OWNER | 제약 조건 소유 계정 |
CONTRAINT_NAME | 제약 조건 이름(직접 지정하지 않을 경우 자동 지정) |
CONSTRAINT_TYPE | 제약 조건 종류 C: CHECK, NOT NULL U: UNIQUE P: PRIMARY KEY R: FOREIGN KEY |
TABLE_NAME | 제약조건을 지정한 테이블 이름 |
- 제약 조건 이름 직접 지정
- 이미 생성한 테이블에 제약 조건 지정
○ 생성한 테이블에 제약조건 추가하기
○ 생성한 테이블에 제약조건 이름 직접 지정해서 추가하기
○ 생성한 제약 조건의 이름 변경하기
- 제약 조건 삭제
3. 중복되지 않는 값 UNIQUE
- 테이블을 생성하며 제약 조건 지정
- 중복을 허락하지 않는 UNIQUE
- UNIQUE 제약 조건과 NULL값
- 테이블을 생성하며 제약 조건 이름 직접 지정
- 이미 생성한 테이블에 제약 조건 지정
○ 생성한 테이블에 제약조건 추가하기
○ 생성한 테이블에 제약조건 이름 직접 지정하거나 바꾸기
- 제약 조건 삭제
4. 유일하게 하나만 있는 값 PRIMARY KEY
:NOT NULL과 UNIQUE의 제약조건 특성을 모두 가짐
- 테이블을 생성하며 제약 조건 지정하기
- 테이블을 생성하며 제약 조건 이름 직접 지정하기
- PRIMARY KEY 제약조건을 지정한 열 확인
※ CREATE문에서 제약 조건을 지정하는 여러 방식
CREATE TABLE TBL_NAME( COL1 VARCHAR2(20) CONSTRAINT CS_NAME PRIMARY KEY ----이름 지정 COL2 VARCHAR2(20) CONSTRAINR NOT NULL ---- 이름 지정하지 않음 ); |
CREATE TABLE TBL_NAME( COL1 VARCHAR2(20) , COL2 VARCHAR2(20) , PRIMARY KEY(COL1), ---- 이름 지정하지 않고 COL1열에 PRIMARY KEY 제약조건 지정 CONSTRAINT CS_NAME UNIQUE (COL2) ---- 이름 지정하고 COL2열에 UNIQUE 제약조건 지정 ); |
5. 다른 테이블과 관계를 맺는 FOREIGN KEY
: 서로 다른 테이블 간 관계를 정의하는 데 사용하는 제약조건, 특정 테이블의 PRIMARY KEY조건 지정한 열을 다른 테이블의 특정 열에서 참조하겠다는 의미로 지정
-FOREIGN KEY 지정하기
○ 기본 방법 CREATE TABLE 테이블 이름(열1 열1자료형 CONSTRAINT [제약조건이름] REFERENCES 참조테이블(참조할 열) ); |
○ 제약조건 이름 지정x CREATE TABLE 테이블 이름(열1 열1자료형 REFERENCES 참조테이블(참조할 열) ); |
○ 열 정의 후 제약조건 지정 CREATE TABLE 테이블 이름(열1 열1자료형, CONSTRAINT [제약조건이름] FOREIGN KEY(열) REFERENCES 참조테이블(참조할 열) ); |
※ 유의점: 테이블을 생성한 직후에는 DEPT_FK(DEPTNO)에 값이 없으므로 EMP_FK(DEPTNO)열에 값을 넣을 수 없음
- FOREIGN KEY로 참조 행 데이터 삭제하기
참조 행 데이터를 삭제할 수 있는 방법 1. 현재 삭제하려는 열 값을 참조하는 데이터를 먼저 삭제한다. 2. 현재 삭제하려는 열 값을 참조하는 데이터를 수정한다. 3. 현재 삭제하려는 열을 참조하는 자식 테이블의 FOREIGN KEY 제약 조건을 해제한다 ↑ 이 방법은 다소 귀찮은 작업이 될 수 있으므로 제약조건 처음 지정 시 옵션을 추가하는 것을 추천 |
○ 열 데이터를 삭제할 때 이 데이터를 참조하고 있는 데이터도 함께 삭제
CONSTRAINT [제약조건 이름] REFERENCES 참조 테이블(참조할 열) ON DELETE CASCADE |
○ 열 데이터를 삭제할 때 이 데이터를 참조하는 데이터를 NULL로 수정
CONSTRAINT [제약조건 이름] REFERENCES 참조 테이블(참조할 열) ON DELETE SET NULL |
6. 데이터 형태와 범위를지정하는 CHECK
: 열에 저장할 수 있는 값의 범위 또는 패턴을 정의할 때 사용
7. 기본값을 정하는 DEFAULT
: 저장할 값이 지정되지 않는 경우 기본값을 지정할 수 있음
※ 제약조건 비활성화, 활성화하는 법
비활성화 ALTER TABLE 테이블 이름 DISABLE [NOVALIDATE/VALIDATE(선택)] CONSTRAINT 제약조건이름; |
활성화 ALTER TABLE 테이블 이름 ENABLE [NOVALIDATE/VALIDATE(선택)] CONSTRAINT 제약조건이름; |
'공부 > 데이터베이스' 카테고리의 다른 글
[오라클로 배우는 데이터베이스 입문] 15. 사용자, 권한, 롤 관리 (0) | 2022.04.05 |
---|---|
[오라클로 배우는 데이터베이스 입문] 14. 연습문제 (0) | 2022.04.04 |
[오라클로 배우는데이터베이스 입문] 13. 연습문제 (0) | 2022.03.31 |
[오라클로 배우는 데이터베이스 입문] 13. 객체 종류 (0) | 2022.03.31 |
[오라클로 배우는 데이터베이스 입문] 12. 연습문제 (0) | 2022.03.31 |