[Oracle] 제약조건
무결성 제약조건
테이블에 부적절한 자료가 입력(INSERT,UPDATE) 되는 것을 방지하기 위해서 테이블 생성할 때
각 컬럼에 대해서 정의하는 여러가지 규칙, (테이블 생성 후에도 규칙 정의 가능)
NOT NULL
- 해당 컬럼값으로 NULL을 허용하지 않음
- (행 단위) 입력시 데이터를 무조건 받음
- 유일하지 않고 반드시 입력, 수정해야 하는 컬럼에 설정
UNIQUE
- 테이블내에서 해달 컬럼값은 항상 유일무이한 값을 가질 것
- 중복을 허용하지 않음
- 중복데이터 방지, 하지만 NULL의 중복은 방지하지 못함.
- ADD NOT NULL은 불가능
=> 테이블 내의 모든 컬럼은 특별한 설정(NOT NULL또는 PRIMARY KEY)을 하지 않았을 경우 NULL값이 기본 설정
PRIMARY KEY(기본키)
- 해당 컬럼값은 반드시 존재해야 하고 유일해야 한다는 조건
- NOT NULL과 UNIQUE 조건을 동시에 만족함
- 테이블 내에서 서로 다른 행을 구분하기 위해서 사용
- 한 테이블 내에 단 한개의 PRIMARY KEY만 존재
FOREIGN KEY(외래키,참조키)
- 해당 컬럼의 값이 다른 컬럼의 값을 참조
- 참조되는 컬럼에 존재하지 않는 값은 입력 불가
- 참조하는 테이블에서 설정
- 참조되는 쪽 테이블
- NULL값 허용(단, NULL이 아닐경우 참조 테이블에 있는 데이터가 입력되어야함)
- 참조되는 컬럼은 반드시 UNIQUE 또는 PRIMARY KEY 설정
CHECK
- 해당 컬럼에 저장 가능한 데이터 값의 범위나 사용자 조건을 지정
- 특정 범위 내의 데이터만 입력
- 정해진 데이터만 입력
제약 조건 설정
기본)
CREATE TABLE 테이블명(
컬럼명 자료형 CONSTRAINT_TYPE
);
FOREIGN KEY)
CREATE TABLE 테이블명 (
컬럼명 자료형 [CONSTRAINT 제약명] REFERENCES 참조테이블(참조컬럼명);
CREATAE TABLE 테이블명 (
컬럼명1 자료형,
컬럼명2 자료형,
.
.
CONSTRAINT 제약명 FOREIGN KEY 컬럼명2 REFERENCES 참조테이블 (참조컬럼명)
** 테이블이 이미 생성 되었을 때 제약조건 설정(참조)
ALTER TABLE 테이블명 ADD [CONSTRAINT 제약명] FOREIGN KEY 컬럼명2 REFERENCES 참조테이블 (참조컬럼명);
CHECK (조건식)
제약 이름 지정
CREATE TABLE 테이블명 (
컬럼명 자료형 [CONSTRAINT 제약명] 제약타입
);
ex)
CREATE TABLE department (
deptno number(2) CONSTRANIN dept2_pk PRIMARY KEY,
dname varchar2(20),
.
.
);
제약 추가 및 삭제
추가)
ALTER TABLE 테이블명 ADD [CONSTRAINT 제약명] || PRIMARY KEY(컬럼명);
삭제)
ALTER TABLE 테이블명 DROP CONSTRAINT 제약명;
ALTER TABLE 테이블명 DROP PRIMARY KEY;
제약 수정
ALTER TABLE 테이블명 MODIFY 컬럼명 [CONSTRAINT 제약명] NOT NULL || NULL ;
** || or
'DataBase' 카테고리의 다른 글
[MySQL] 계정 생성 및 권한 부여 (0) | 2021.04.22 |
---|---|
Oracle과 MySQL의 큰 차이점 (0) | 2021.04.22 |
[MySQL] 접속 (0) | 2021.04.15 |
[Oracle] 시퀀스(Sequence) (0) | 2021.04.14 |
[Oracle] 접속 (0) | 2021.04.14 |