하나의 컬럼에 여러 개의 제약조건을 설정할 수 있다.(column-level과 table-levle)
여러 개의 컬럼으로 하나의 제약 조건을 설정할 수 있다.
제약 조건의 관리는 서버가 담당
TABLE에 행(레코드) 삽입, 수정, 삭제시 Constraint를 검사
TABLE 생성시 constraint가 생략되어도 생성가능
다른 테이블과 종속관계있다면 테이블 삭제를 방지
컬럼 레벨과 테이블 레벨에서 정의가 가능
제약조건의 종류
PRIMARY KEY : TABLE내에서 각 Row를 식별할 수 있는 유일한 값, 식별키(기본키)
FOREIGN KEY : 참조된 테이블과의 관계를 적용하는 컬럼, 외래키
UNIQUE KEY : 컬럼내에서 유일한 값(NULL값 허용)
NOT NULL : 참조된 TABLE과의 관계를 적용하는 컬럼으로 NULL값 허용하지 않음
CHECK : CHECK조건에 만족한 값만을 허락*/
제약 조건의 유형
column-level의 제약조건
하나의 컬럼에 제약 조건을 정의할 때 사용
create, alter문장으로 컬럼을 정으할 때 데이터 타입 뒤에 정의
5가지 유형의 제약조건을 모두 부여
키
기본 키 : 절대 겹치면 안 되는 유일한 키. (주민번호 같은 것)
후보 키 : 기본 키처럼 겹치지 않고 유니크한 것들 (기본 키가 될 수 있는 것들)
대체 키 : 후보 키이나, 기본 키가 되지는 않는 것들.
예시
--문제 dept1이라는 테이블을 아래와 같은 조건으로 만들기--컬럼명 data type--부서번호 deptno 숫자 2자리--부서이름 dname 문자 13자리 (가변길이)--지역 loc 문자 14자리 (가변길이)CREATETABLE dept1
(deptno NUMBER(2), dname VARCHAR2(13), loc VARCHAR2(14));
--질문 dept1 테이블에 칼럼을 추가ALTERTABLE dept1 ADD
(bigo VARCHAR2(15));
--질문 테이블의 구조 변경 (데이터 타입, 길이)ALTERTABLE dept1 MODIFY
(bigo VARCHAR2(30));
--질문 테이블에 새로운 행 추가INSERTINTO dept1 VALUES
(1, 'KNITEC','마산','');
--테이블 전체 내용 보기SELECT*FROM dept2;
--질문 테이블 이름 바꾸기
RENAME dept1 TO dept2;
--질문 DEPT2 테이블에 주석 달기
COMMENT ONTABLE DEPT2 IS'부서정보 테이블';
--질문 dept2 테이블에 달린 주석 확인하기SELECT*FROM user_tab_comments
WHERE table_name ='dept2';
제약 조건 확인
--질문 제약조건 확인하는 방법SELECT constraint_name, constraint_type
FROM user_constraints;