제약조건
테이블에 올바른 데이터만 입력 받고 잘못된 데이터는 들어오지 못하도록 칼럼마다 정하는 규칙
해당 조건과 맞지 않는 데이터가 들어오면 걸러내기 때문에 데이터의 정확성이 올라간다.
종류는 총 5가지이다.
NOT NULL
컬럼 생성시 지정하지 않으면 default로 Null이 허용가능하게 되어 있다.
따라서 해당 컬럼값을 입력하지 않고 튜플을 삽입시 Null이 들어가게 되는데
이를 방지하기 위해서는 Not Null을 기술해 주면 된다.
UNIQUE
유일한 값만 들어가도록 하고 싶을 때 사용한다.
즉, 중복이 허용되지 않도록 데이터를 넣어야하는 경우 사용한다.
Primary Key
기본키이다.
기본키란 해당 테이블을 대표하는 컬럼으로 Primary key로 지정된 컬럼은 Null값을 가지지 못하며,
중복된 값을 가질 수 없다.
즉, 이 primary key에 의해 튜플들은 중복되지 않고 구분될 수 있게 된다.
따라서 UNIQUE와 NOT NULL을 동시에 정의한 것과 효과가 같아진다.
Foreign Key
외래키를 의미하는 제약조건이다.
외래키는 참조 무결성을 위해 사용되는데 이 외래키로 지정된 컬럼은 반드시 다른 테이블의 “Primary key(기본키)”와 참조 관계를 가지게 되고
외래키로 지정된 컬럼은 참조관계를 가진 테이블의 기본키에 있는 값만을 가질 수 있다.
즉, Null 값은 허용하되, 참조하고 있는 테이블의 기본키에 있는 값만 입력될 수 있다.
CHECK
입력될 수 있는 데이터의 종류를 제한할 수 있다.
ex) coin CHAR(1) CHECK(coin IN(‘P’,’N’,’D’))
MySQL은 CHECK 제약조건을 지원하지 않는다고 한다.
마무리
PRIMARY KEYY 빼고 제약조건은 여러 칼럼에 중복으로 설정될 수 있고,
하나의 칼럼에도 여러개의 제약 조건들이 중복으로 설정될 수있음.