제약조건 (CONSTRAINTS)
- 테이블에 입력 가능한 데이터를 조건으로 제약하는 것
NOT NULL
- 컬럼이 비어 있거나 NULL 값이 들어오지 않도록 하는 조건
- 정보가 꼭 필요한 컬럼에 사용
- [문법1] ALTER TABLE 테이블명 MODIFY 컬럼명 + 자료형 + NOT NULL ;
- [문법2] CREATE TABLE 테이블명 ( 컬럼명 + 자료형 + NOT NULL )
UNIQUE KEY(UK) : UNIQUE
- 하나의 컬럼에 중복되는 튜플이 존재할 수 없도록 하는 조건
- [문법1] ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 UNIQUE ( 컬럼 ) ;
- [문법2] CREATE TABLE 테이블명 ( 컬럼명 + 자료형 + UNIQUE )
CHECK
- 특정 컬럼에 데이터를 입력할 때 조건에 해당하는 데이터만 입력할 수 있도록 제약
- CHECK 조건에 만족하는 정보만 튜플에 입력 가능
- [문법1] ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 CHECK ( 조건 OR 범위 ) ;
- [문법2] CONSTRAINT 제약조건이름 CHECK ( 조건 OR 범위 )
PRIMARY KEY (PK) : NOT NULL + UNIQUE
- 식별자 규칙을 물리적 모데링 한 것.
- 기본 키, 주 키, 프라이머리 키 라고도 부른다.
- 보통 튜플이 지닌 유일하고 고유한 특징인 컬럼을 PK로 지정
- NULL값 일력 불가, 중복 불가의 특징
- 특정 컬럼을 식별자로 만들면 자동으로 NOT NULL + UNIQUE 성질을 가짐
- [문법1] ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 PRIMARY KEY ( 컬럼 ) ;
- [문법2] CREATE TABLE 테이블명 ( 컬럼명 + 자료형 + PRIMARY KEY )
FOREIGN KEY (FK)
- 다른 테이블에 있는 기본 키(PRIMARY KEY)를 참조하는 컬럼을 FK로 지정
- FOREIGN KEY는 외래 키라고 부르고 데이터 무결성을 지원
- 참조하는 테이블의 기본 키 값과 반드시 동일한 값으로 구성되어야 함
- [문법1] ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 FOREIGN KEY ( 참조받을 컬럼 ) REFERENCES 참조할 테이블(참조할 컬럼) ;
- [문법2] CREATE TABLE 테이블명 ( 생성할 컬럼 정보 , CONSTRAINT 제약조건명 FOREIGN KEY (참조받을 컬럼) REFERENCES 참조할 테이블(참조할 컬럼) ) ;
--실습문제1
CREATE TABLE 회원정보 (
회원ID VARCHAR2(10) NOT NULL,
이름 VARCHAR2(20) NOT NULL,
가입일자 DATE,
나이 NUMBER DEFAULT 0
);
CREATE TABLE 회원연락처 (
회원ID VARCHAR2(10) NOT NULL,
구분코드 VARCHAR2(10) NOT NULL,
연락처 VARCHAR2(15) NOT NULL
);
CREATE TABLE 회원주소 (
회원ID VARCHAR2(10) NOT NULL,
도로명주소 VARCHAR2(200) NOT NULL
);
--실습문제2
--1번에서 만든 3개의 테이블에 각각 주어진 조건에 맞춰 PK(PRIMARY KEY) 제약조건을 추가
ALTER TABLE 회원정보 ADD CONSTRAINT PK_회원정보 PRIMARY KEY (회원ID);
ALTER TABLE 회원연락처 ADD CONSTRAINT PK_회원연락처 PRIMARY KEY (회원ID, 구분코드);
ALTER TABLE 회원주소 ADD CONSTRAINT PK_회원주소 PRIMARY KEY (회원ID);
--실습문제3
--1번에서 만든 3개의 테이블에 대해 테이블 간의 관계 연결을 위해 FK (FOREIGN KEY) 제약조건을 설정
ALTER TABLE 회원연락처 ADD CONSTRAINT FK_회원연락처 FOREIGN KEY (회원ID) REFERENCES 회원정보(회원ID);
ALTER TABLE 회원주소 ADD CONSTRAINT FK_회원주소 FOREIGN KEY (회원ID) REFERENCES 회원정보(회원ID);