SQL 테이블의 특정 값들은 Primary key로써 관리되어야 한다거나, 다른 테이블과 관계 맺을 Fpreign key가 존재한다거나, null값이 들어가면 안되거나...등등 많은 조건들을 가진다. SQL에서 설정할 수 있는 제약조건들을 간단히 알아보고 정리한다.
위는 PK와 FK의 차이점이다.
위와 같이 일대다 (PK-FK) 관계를 맺은 상태에서 회원 테이블의 mem_id(PK)를 변경하려고 한다면 어떻게될까?
그렇다면 저놈들은 생기면 절대 못바꾸고, 삭제도 못햬? 테이블째로 날려버려야 하나?
스프링에서 자주 사용했던 CASCADE, 영속성 전이 키워드가 등장한다. 실제 사용 예는 다음과 같다.
위 사진에서 나온 바와 같이 cascade를 두가지 조건으로 걸 수 있다.
더불어 이 두 친구들은 foreign key "아래에" (뭐 혹은 옆에) 써주면 된다.
Spring에서 Column들의 제약조건을 설정했을 때 사용했었던 반가운 얼굴들이 쓰인다.
테이블_명 타입 null / not null 과 같이 쓰인다
-> ex) mem_name varchar(8) not null
테이블_명 타입 unique
-> ex) email char(8) unique
int의 표현범위 : –2,147,483,648 ~ 2,147,483,647
unsigned 가 적용되면 이 값의 범위는 같으나, 0부터 시작한다.(음수 X)
unsigned int의 표현범위 : 0 ~ 4,294,967,295
-> ex) tinyint unsigned
위와 같이 적용된다.
check로 설정한 조건 안에 있는 값들만 입력받을 수 있다.
-> ex) height tinyint unsigned null check (height >= 100),
값이 들어오지 않았을 때 자동으로 입력될 값을 지정한다.
-> ex) phone_num char(3) default '02'