데이터베이스 제약조건(기본키,외래키,CHECK,DEFAULT)
기본키 제약 조건 (개체 무결성)
테이블에 존재하는 많은 행의 데이터를 구분할 수 있는 식별자를 '기본 키'라고 부른다.
기본 키에 입력되는 값은 중복될 수 없으며 NULL 값이 입력될 수 없다.
예를 들어 인터넷사이트에서 회원가입을 할때 아이디값은 절대 중복 될 수 없고 NULL값도 들어가선 안된다. 이 아이디값이 기본키로 설정되어 있다.
형식
CREATE TABLE문에 PRIMARY KEY라는 예약어를 넣어주면된다.
CREATE TABLE <TABLE 명>(
id CHAR(8) PRIMARY KEY ,
NAME VARCHAR(10),
birth INT );
만약 PRIMARY KEY를 지정하면서 키의 별칭을 지어주려면 마지막행에
CONSTRAINT PRIMARY KEY 별칭 (테이블명)
CONSTRAINT는 생략해도되고 별칭이 필요없다면 마지막행에 간단히 PRIMARY KEY (테이블명)를 적어주면된다.
이렇게 두가지 형식으로 PRIMARY KEY를 지정할 수 있다.
외래키 제약 조건 (참조무결성)
외래키 제약 조건은 두 테이블 사이의 관계를 선언함으로써, 데이터의 무결성을 보장해주는 역할을 한다.
외래 키 관계를 설정하면 하나의 테이블이 다른 테이블에 의존하게 된다.
외래키를 정의하는 테이블과 참조하는 테이블을 잘 구별해야한다. 참조하는 테이블의 열은 반드시 PRIMARY KEY 거나 UNIQUE 제약조건이 설정되어야한다.
형식
형식은 PRIMARY KEY와 비슷하다
CREATE TABLE 내부 마지막행에
FOREIGN KEY (정의테이블의 속성) REFERENCES 참조테이블 (참조테이블 속성) 를 넣어주면된다.
CREATE TABLE <TABLE 명>(
id CHAR(8) ,
prodName VARCHAR(10),
FOREIGN KEY id REFERENCES 참조테이블(참조테이블 속성)
[ON UPDATE CASCADE or ON DELETE CASCADE]
);
참조하는 테이블의 속성값과 id값은 같아야하며 기본키나 UNIQUE가 설정되어 있어야 외래키가 성립된다.
또한 기본키처럼 외래키도 CONSTRAINT 로 별칭을 지어줄 수 있다.
외래키의 옵션 중에 ON UPDATE CASCADE 또는 ON DELETE CASCADE가 있다. 이는 참조테이블의 데이터가 변경, 삭제 되었을때 정의테이블도 자동으로 적용되도록 설정하는것이다.
CHECK 제약 조건
CHECK 제약조건은 입력되는 데이터를 점검하는 기능이다.
특정 값에 음수가 들어올 수 없게 한다든지 년도 데이터가 2000년 이후이어야 한다던지 조건을 지정한다.
형식
CREATE TABLE 테이블명(
id CHAR(8) PRIMARY KEY,
NAME VARCHAR(10),
birth INT ,
CONSTRAINT birth_err CHECK (birth >= 2000)
);
위 코드처럼 생일이 2000년도 이후의 데이터만 들어 올수 있도록 제약조건을 정의한것이다.
CHECK도 별칭을 지어 줄 수 있고 속성 옆에 정의 할수도 아니면 맨마지막행에 정의 할 수 있다.
DEFAULT 정의
DEFAULT는 값을 입력하지 않았을 떄, 자동으로 입력되는 기본값을 정의한다.
예로 출생년도를 입력하지 않으면 자동으로 -1이 들어가도록, 주소를 입력하지않으면 자동으로 '서울'의 데이터가 들어가도록 설정하는 것이다.
속성을 정의할때 옆에 DEFAULT '값' 을 입력해주면 된다.