[MySQL] foreign key(외래키) 사용법

2023. 5. 26. 14:34프로그래밍/MySQL

MySQL에서는 제약 조건이라는 것이 있다. 데이터를 저장할 때 특정 조건에 해당하는 데이터만 레코드에 집어넣을 수 있게 설정하는 것이다. 대표 제약 조건으로 NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, DEFAULT가 있다.

여기서는 주제에 맞게 FOREIGN KEY만 다루겠다.

 

FOREIGN KEY는 여러 테이블에 서로 공통된 값을 참조할 수 있도록 도와준다.

table1과 table2가 있을 때 table1에서의 id값을 다른 테이블에서도 사용하고 싶을 수 있다.

예를 들어 다음과 같이 테이블이 있다고 해보자.

이 때 table1의 id1값을 table2에서 참조하고 싶어한다. 즉 table2의 id(id2)값은 외래키로 지정하고 싶다면 위와 같이 작성한다.

table1과 table2의 id값은 다르다는 것을 보여주기 위해 일부러 다르게 했다.

또한 table을 생성할 때도 참조되는 table(예제에서는 table1)이 먼저 생성 된 후에야 table2를 생성할 수 있다. 

insert into를 통해 값을 집어넣을때도 외래키에는 참조하는 테이블의 값이 아닌 다른값을 넣을 수 없다.

예로 table1의 id1의 값이 1,2,3,4,5가 있을 때 table2의 id값으로 6을 지정할 수 없다는 것.