Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 외래 키(Foreign Key) 기본 개념과 사용법 완벽 가이드

외래 키(Foreign Key)는 두 테이블 사이의 관계를 설정하는 데 사용됩니다. 외래 키 관계는 일대일(One to One) 또는 일대다(One to Many) 형태로 구성할 수 있으며, 한 테이블의 필드가 다른 테이블의 특정 필드와 연결되는 방식으로 동작합니다.

외래 키 관계의 두 가지 유형

  • 일대일(One to One) 관계 — 한 테이블의 레코드 하나가 다른 테이블의 레코드 하나와만 연결됩니다.
  • 일대다(One to Many) 관계 — 한 테이블의 레코드 하나가 다른 테이블의 여러 레코드와 연결됩니다.

예제: 테이블 생성하기

실제 예제를 통해 외래 키를 만드는 과정을 살펴보겠습니다. 먼저 첫 번째 테이블을 생성합니다. 테이블 생성에는 CREATE 명령어를 사용합니다.

mysql> create table tblF
    -> (
    -> id int ,
    -> FirstName varchar(100),
    -> FK_PK int
    -> );
Query OK, 0 rows affected (0.57 sec)

다음으로 두 번째 테이블을 생성합니다. 이때 FK_PK 컬럼을 기본 키(Primary Key)로 지정합니다.

mysql> create table tblP
    -> (
    -> FK_PK int,
    -> LastName varchar(100),
    -> primary key(FK_PK)
    -> );
Query OK, 0 rows affected (0.94 sec)

외래 키 생성 문법

두 테이블이 준비되면 ALTER TABLE 문법을 사용하여 외래 키 제약 조건을 추가할 수 있습니다. 아래는 외래 키를 생성하는 기본 문법입니다.

mysql> ALTER table tblF add constraint ConstFK foreign key(FK_PK) references tblP(FK_PK);
Query OK, 0 rows affected (2.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

외래 키 생성 확인하기

외래 키가 정상적으로 생성되었는지 확인하려면 DESC 명령어를 사용하여 테이블 구조를 조회합니다.

mysql> DESC tblF;

실행 결과는 다음과 같습니다. FK_PK 컬럼의 Key 항목에 MUL이 표시된 것을 확인할 수 있으며, 이는 해당 컬럼에 외래 키가 적용되었음을 의미합니다.

+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id        | int(11)      | YES  |     | NULL    |       |
| FirstName | varchar(100) | YES  |     | NULL    |       |
| FK_PK     | int(11)      | YES  | MUL | NULL    |       |
+-----------+--------------+------+-----+---------+-------+
3 rows in set (0.05 sec)

이처럼 MySQL에서는 ALTER TABLE ... ADD CONSTRAINT 구문을 통해 간단하게 외래 키를 설정할 수 있으며, 이를 통해 테이블 간 데이터 무결성(Referential Integrity)을 유지할 수 있습니다.