테이블에 부적절한 자료가 입력되는 것을 방지하기 위해 규칙을 정해 놓는 것이다.
데이터의 무결성을 지키기 위해 사용한다.
개체 무결성 | 기본키 ( Primary Key ) 는 NULL값이나 중복된 값을 가질 수 없다. |
참조 무결성 | 외래키 ( Foreign Key ) 는 참조할 수 없는 값을 가져서는 안된다. 단, NULL은 제외한다. |
NOT NULL
지정한 열에 널값을 허용하지 않는다.
이런 식으로 널값을 허용하지 않는 제약 조건을 줄 수 있다.
중간에 CONSTRAINT를 이용하면 제약조건의 이름을 줄 수 있다.
UNIQUE
중복된 데이터를 허용하지 않는다. 단, NULL은 허용한다.
NOT NULL과 중복 사용이 가능하다.
따라서 같이 사용하여 널값을 허용하지 않고 중복도 허용하지 않게 만들 수 있다.
이런 식으로 UNIQUE와 NOT NULL 중복 사용이 가능하다.
다만, 보면 제약 조건 이름을 두 번 주었는데 이는 당연히 UNIQUE에 대한 제약조건, NOT NULL에 대한 제약조건이 따로 생성되기 때문이다.
따라서 한 열에 중복하여 쓴다고 하더라도 헷갈리지 않게 이름을 전부 주는 것이 좋다.
PRIMARY KEY
널값과 중복값을 허용하지 않는다.
테이블당 기본키는 하나만 존재한다.
이런 식으로 사용을 한다.
만약 복합키를 기본키로 사용한다면 이런 식으로 두 번 줄 수 없다.
따라서, 복합키를 기본키로 사용하기 위해서는
이런 식으로 맨 마지막에서 정의해 주어야 기본키를 2개 이상의 열로 줄 수가 있다.
FOREIGN KEY
참조할 수 없는 값을 줄 수 없다.
UNIQUE 제약조건이 있거나 Primary Key 제약조건이 있는 열만 참조할 수 있다.
( 중복되는 데이터를 참조하면 중복되는 데이터중 어떤 데이터를 참조한 것인지 알 수 없기 때문이다. )
Foreign Key 역시 이런 식으로 REFERENCES 참조할 테이블 ( 참조할 열 ) 로 작성하면 된다.
또한 복합키에 대해 참조해야 할 경우 가 있을때
아까 와 동일 하게
이런식으로 마지막에 정의 해 주면 된다.
CHECK
조건을 주고 조건에 만족한 데이터만 허용한다.
이런 식으로 자신이 주고 싶은 조건을 주면 된다.
DEFAULT
만약 값을 주지 않는다면 정의해둔 값이 자동으로 들어간다.
이런식으로 아이디를 주지 않으면 자동으로 1234 데이터가 들어가게 된다.
만일 NULL값을 주면 정의 되지 않은 값을 준것이기에 1234가 아닌 NULL값이 들어가게 되니 주의하자!!
제약조건 활성화 / 비활성화
활성화 ( ENABLE) |
VALIDATE | 활성화 한 시점 부터 들어오는 데이터를 검사하겠다. |
NOVALIDATE | 이미 들어있는 데이터부터 검사하겠다. ( 만일 제약조건을 위배한 데이터가 존재하면 활성화가 되지 않는다. ) |
|
비활성화 ( DISABLE ) |
VALIDATE | 입력 수정 삭제가 불가능한 상태가 된다. |
NOVALIDATE | 앞으로 들어오는 데이터들을 검사하지 않겠다. |
이런 식으로 작성한다.
제약조건 확인하기
제약조건의 상태를 확인 할 수있다.
CONSTRAINT_TYPE 은 제약조건이 무엇인지 알려준다.
U - UNIQUE
P - PRIMARY KEY
R - FOREIGN KEY
C - NOT NULL, CHECK
SEARCH_CONDITION은 CHECK와 NOTNULL인 경우에 알려주며
제약조건이 무엇인지 알려준다.
어떤 열에 대한 제약 조건인지 알 수 있다.
'데이터베이스' 카테고리의 다른 글
mongo DB 설치하기 (0) | 2022.11.12 |
---|---|
이클립스 DB 연결 (0) | 2022.10.11 |
JOIN ( INNER JOIN, OUTER JOIN ) (1) | 2022.10.03 |
키(KEY)의 종류 (0) | 2022.10.03 |
DDL, DML, DCL, DQL, TCL (0) | 2022.10.03 |