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

MySQL에서 여러 테이블의 기본 키를 외래 키로 참조하는 방법

MySQL에서 기본 키를 외래 키로 참조하기

MySQL에서는 ALTER TABLE 문과 ADD CONSTRAINT 구문을 사용하여 한 테이블의 기본 키(Primary Key)를 다른 테이블의 외래 키(Foreign Key)로 참조할 수 있습니다. 이를 통해 두 테이블 간의 참조 무결성을 보장할 수 있습니다.

기본 문법

외래 키 제약 조건을 추가하는 기본 문법은 다음과 같습니다.

alter table yourSecondTableName
add constraint `yourConstraintName`
foreign key(`yourSecondTableNamePrimaryKey`)
references yourFirstTableName(yourFirstTablePrimaryKeyColumnName);

예제: 첫 번째 테이블 생성

먼저 위 문법을 이해하기 위해 예제 테이블을 생성해 보겠습니다. 아래 쿼리는 첫 번째 테이블인 demo65를 생성합니다.

mysql> create table demo65
-> (
-> id int not null primary key,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.57 sec)

여기서 id 컬럼은 NOT NULL 제약 조건과 함께 기본 키로 설정되었습니다.

예제: 두 번째 테이블 생성

다음은 두 번째 테이블인 demo66을 생성하는 쿼리입니다.

mysql> create table demo66
-> (
-> user_id int not null primary key,
-> address varchar(200)
-> );
Query OK, 0 rows affected (1.80 sec)

user_id 컬럼 역시 기본 키로 설정되어 있으며, 이 컬럼을 통해 첫 번째 테이블의 기본 키를 참조하게 됩니다.

기본 키를 외래 키로 참조하는 쿼리

이제 ALTER TABLE 문을 사용하여 demo66 테이블의 user_id 컬럼이 demo65 테이블의 id 컬럼을 참조하도록 외래 키 제약 조건을 추가합니다.

mysql> alter table demo66
-> add constraint `id_fk`
-> foreign key(`user_id`)
-> references demo65(id);
Query OK, 0 rows affected (3.76 sec)
Records: 0 Duplicates: 0 Warnings: 0

위 쿼리가 성공적으로 실행되면 id_fk라는 이름의 외래 키 제약 조건이 생성됩니다.

테이블 구조 확인하기

외래 키가 정상적으로 적용되었는지 확인하려면 SHOW CREATE TABLE 명령어를 사용하여 테이블의 전체 정의를 조회할 수 있습니다.

mysql> show create table demo66;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| demo66 | CREATE TABLE `demo66` (
`user_id` int NOT NULL,
`address` varchar(200) DEFAULT NULL,
PRIMARY KEY (`user_id`),
CONSTRAINT `id_fk` FOREIGN KEY (`user_id`) REFERENCES `demo65` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

출력 결과에서 CONSTRAINT `id_fk` FOREIGN KEY (`user_id`) REFERENCES `demo65` (`id`) 부분을 통해 외래 키 제약 조건이 성공적으로 추가된 것을 확인할 수 있습니다.

정리

MySQL에서 서로 다른 테이블 간에 기본 키를 외래 키로 참조하는 방법은 다음과 같습니다.

  • ALTER TABLE 문으로 대상 테이블을 지정합니다.
  • ADD CONSTRAINT로 제약 조건 이름을 정의합니다.
  • FOREIGN KEY 절에 외래 키로 사용할 컬럼을 지정합니다.
  • REFERENCES 절에 참조할 테이블과 해당 테이블의 기본 키 컬럼을 명시합니다.

이렇게 설정하면 두 테이블 간 데이터 일관성이 유지되며, 참조 무결성 위반 시 MySQL이 자동으로 오류를 반환하여 잘못된 데이터 입력을 방지할 수 있습니다.