MySQL 테이블의 기본 키 업데이트
- MySQL 테이블의 기본 키 업데이트
- 기존 기본 키를 삭제하고 MySQL의 다른 열을 사용하여 새 기본 키 만들기
- MySQL에서 기본 키 구성과 관련된 열 수 업데이트
- 데이터 유형을 변경하여 MySQL 기본 키 업데이트
이 자습서에서는 MySQL 테이블에서 기본 키를 업데이트하는 방법을 설명합니다. ALTER
명령을 사용하여 기본 키를 변경합니다.
MySQL 테이블의 기본 키 업데이트
MySQL 테이블에서 기본 키를 업데이트할 수 있는 다양한 시나리오가 있습니다. 아래에서 각각 살펴보겠습니다.
- 기존 기본 키를 삭제하고 다른 열을 사용하여 새 기본 키를 만듭니다.
- 기본 키 구성과 관련된 열 수를 업데이트합니다.
- 기본 키의 데이터 유형을 변경하십시오.
기본 키를 변경하기 위해 이 튜토리얼의 뒷부분에서 실제로 시연할 ALTER
명령을 사용할 수 있습니다.
기존 기본 키를 삭제하고 MySQL의 다른 열을 사용하여 새 기본 키 만들기
기본 키가 ID
속성인 test
데이터베이스에 user
테이블이 있다고 가정합니다. 어떤 이유로 이를 삭제하고 USERNAME
열을 사용하여 새 기본 키를 구성하려고 합니다.
사용자
테이블 만들기:
#create a table named 'users' in 'test' database
CREATE TABLE `test`.`users` (
`ID` INT NOT NULL AUTO_INCREMENT,
`USERNAME` VARCHAR(45) NOT NULL,
`EMAIL` VARCHAR(45) NOT NULL,
PRIMARY KEY (`ID`));
다음 쿼리를 사용하여 테이블 정의를 확인하십시오.
SHOW CREATE TABLE test.users;
다음 출력이 표시됩니다. 다른 테이블을 사용하면 결과가 다를 수 있습니다.
출력:
ID
에서 USERNAME
필드로 기본 키를 업데이트하려면 먼저 ID
속성에서 AUTO_INCREMENT
를 삭제해야 합니다. 그렇지 않으면 오류가 발생합니다.
ID
필드에 대해 AUTO_INCREMENT
드롭:
# Disable foreign key check
SET FOREIGN_KEY_CHECKS=0;
# Modify the `ID` attribute
ALTER TABLE test.users MODIFY COLUMN ID INT NOT NULL;
# Enable foreign key check
SET FOREIGN_KEY_CHECKS=1;
SHOW CREATE TABLE test.users;
사용 AUTO_INCREMENT
가 삭제되었는지 확인합니다.
출력:
기본 키 업데이트:
ALTER TABLE test.users DROP PRIMARY KEY, ADD PRIMARY KEY(USERNAME);
SHOW CREATE TABLE test.users;
사용 다시 기본 키가 USERNAME
인지 확인합니다.
출력:
MySQL에서 기본 키 구성과 관련된 열 수 업데이트
이전 섹션에서 생성한 users
테이블을 계속 진행합니다. 기본 키는 다음 쿼리를 사용하여 쉽게 확인할 수 있는 USERNAME
열이었습니다.
SHOW CREATE TABLE test.users;
ALTER
명령을 사용하여 이제 ID
및 USERNAME
의 두 열로 구성될 기본 키를 업데이트합니다.
ALTER TABLE test.users DROP PRIMARY KEY, ADD PRIMARY KEY(ID, USERNAME);
다음 쿼리를 사용하여 업데이트된 기본 키를 확인할 수 있습니다.
SHOW CREATE TABLE test.users;
출력:
데이터 유형을 변경하여 MySQL 기본 키 업데이트
여기에서 다른 테이블을 생성하고 기본 키가 INT
유형의 ID
필드인 user
라는 이름을 지정합니다.
CREATE TABLE `test`.`user` (
`ID` INT NOT NULL AUTO_INCREMENT,
`USERNAME` VARCHAR(45) NOT NULL,
`EMAIL` VARCHAR(45) NOT NULL,
PRIMARY KEY (`ID`));
다음 쿼리를 사용하여 기존 기본 키의 데이터 유형을 INT
에서 BIGINT
로 업데이트할 수 있습니다.
SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE test.users MODIFY COLUMN ID BIGINT NOT NULL AUTO_INCREMENT;
SET FOREIGN_KEY_CHECKS=1;
아래에 제공된 쿼리를 사용하여 변경 사항을 확인합니다.
SHOW CREATE TABLE test.user;
출력:
MySQL 테이블의 기본 키를 업데이트하는 것은 데이터베이스에서 관계를 만들기 전에는 어렵지 않지만 다음과 같은 기본적인 이유로 데이터베이스에서 관계를 설정한 후에는 권장하지 않습니다.
-
실행 중인 데이터베이스에서 기본 키를 변경하려는 생각이 들었다면 아마도 기본 키에 대해 잘못된 필드를 선택했을 것입니다. 따라서 필드를 기본 키로 선택할 때 각별히 주의하십시오.
-
기본 키를 변경하려는 레코드를 삭제해야 합니다. 해당 특정 레코드에 대한 모든 관계를 잃어야 할 수도 있습니다.
기본 키를 변경하면 해당 레코드를 추가하고 관계를 다시 만들어야 합니다.
-
기본 키를 하나의 컬럼에서 세 개의 컬럼으로 변경하면 새로운 기본 키(3개의 컬럼으로 구성)를 다른 모든 관련 테이블에서 외래 키로 사용해야 합니다. 이는 스토리지, 성능 및 디자인에 영향을 미칠 수 있음을 기억하십시오.
-
MIGRATION 또는 FILE RE-ORGANIZATION 중에 데이터베이스를 재구성하는 경우를 제외하고는 데이터베이스 내에서 기본 키를 변경하지 않는 것이 좋습니다. 그러나 이러한 기본 키는 다른 테이블에서 외래 키로 사용될 수 있으므로 각별히 주의해야 합니다.