Constraint
정의
- 데이터의 무결성을 지키기 위해 제한된 조건 (제약조건)
확인
SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME = 'table_name';
종류
- [C] NOT NULL
- NULL값을 허용하지 않음
- [C] CHECK
- 조건에 벗어나는 값은 허용하지 않음
ex) CHECK(column_name >= 10 AND column_name <= 100)
- 조건에 벗어나는 값은 허용하지 않음
- [U] UNIQUE
- 중복값을 허용하지 않음
- [P] PRIMARY KEY
- UNIQUE + NOT NULL
- 테이블당 한개만 정의 가능하며 자동 INDEX가 생성됨
- [R] FOREIGN KEY
- PK에 있는 값만 허용
ON DELETE CASCADE
: 상위 테이블의 데이터가 없어지면 같이 없어짐ON DELETE SET NULL
: 상위 테이블의 데이터가 없어지면 NULL로 변경됨
- DEFAULT
- 기본 값을 지정함
생성
- CREATE TABLE 할 때 정의하여 생성
- PK를 별도로 생성해야할 경우
ALTER TABLE owner_name.table_name ADD CONSTRAINT index_name PRIMARY KEY(column_name1, column_name2, column_name3 ...) USING INDEX TABLESPACE tablespace_name;
추가
--Constraint 이름을 따로 지정
ALTER TABLE owner_name.table_name ADD CONSTRAINT constraint_name constraint_type(column_name);
--Constraint 이름을 따로 지정하지 않음
ALTER TABLE owner_name.table_name ADD constraint_type(column_name);
변경
ALTER TABLE owner_name.table_name MODIFY column_name constraint_type;
이름 변경
ALTER TABLE owner_name.table_name RENAME CONSTRAINT constraint_name to constraint_name;
삭제
ALTER TABLE owner_name.table_name DROP CONSTRAINT constraint_name;