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

MySQL 기존 테이블의 여러 열에 PRIMARY KEY(복합 기본 키) 설정하는 방법

MySQL에서는 ALTER TABLE 문과 ADD 키워드를 함께 사용하면 이미 생성된 테이블의 여러 열에 PRIMARY KEY(기본 키) 제약 조건을 추가할 수 있습니다. 이처럼 두 개 이상의 열을 조합해 구성한 기본 키를 복합 기본 키(Composite Primary Key)라고 부르며, 각 열 단위가 아닌 열 값들의 조합 전체가 테이블 내에서 유일해야 한다는 점이 특징입니다.

예제

다음과 같은 'Room_allotment' 테이블이 있다고 가정해 보겠습니다.

mysql> Create table Room_allotment(Id Int, Name Varchar(20), RoomNo Int);
Query OK, 0 rows affected (0.20 sec)

mysql> Describe Room_allotment;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Id     | int(11)     | YES  |     | NULL    |       |
| Name   | varchar(20) | YES  |     | NULL    |       |
| RoomNo | int(11)     | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.11 sec)

현재 세 개의 열 모두 Key 항목이 비어 있는 상태, 즉 기본 키가 없는 상태입니다. 이제 다음 쿼리를 실행하면 'Id'와 'Name' 두 열에 복합 PRIMARY KEY를 한 번에 추가할 수 있습니다.

mysql> Alter Table Room_allotment ADD PRIMARY KEY(Id, Name);
Query OK, 0 rows affected (0.29 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> Describe Room_allotment;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Id     | int(11)     | NO   | PRI | 0       |       |
| Name   | varchar(20) | NO   | PRI |         |       |
| RoomNo | int(11)     | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.12 sec)

결과 확인

위 결과 집합을 보면 'Id' 열과 'Name' 열의 Key 항목이 모두 PRI로 표시된 것을 확인할 수 있습니다. 이는 두 열에 성공적으로 복합 기본 키가 설정되었음을 의미합니다.

또한 기본 키가 적용된 열은 다음과 같이 자동으로 변경됩니다.

  • Null 허용 여부: YES에서 NO로 변경되어 NULL 값을 저장할 수 없게 됩니다.
  • Default 값: 숫자형 열은 0, 문자형 열은 빈 문자열('')로 기본값이 지정됩니다.

복합 기본 키 사용 시 주의 사항

  • 'Id'와 'Name'의 조합이 유일하기만 하면 되므로, 예를 들어 (1, '홍길동')과 (2, '홍길동')처럼 개별 열의 값이 중복되더라도 저장이 가능합니다.
  • 기존 데이터에 NULL 값이나 중복된 조합이 있으면 ALTER TABLE 문이 실패하므로, 제약 조건을 추가하기 전에 데이터를 먼저 정리해야 합니다.
  • 테이블당 PRIMARY KEY는 하나만 존재할 수 있으며, 이미 기본 키가 설정된 테이블에는 먼저 기존 키를 삭제(DROP PRIMARY KEY)한 후 새로 추가해야 합니다.