MySQL 테이블의 기본 키 업데이트

Mehvish Ashiq 2024년2월15일
  1. MySQL 테이블의 기본 키 업데이트
  2. 기존 기본 키를 삭제하고 MySQL의 다른 열을 사용하여 새 기본 키 만들기
  3. MySQL에서 기본 키 구성과 관련된 열 수 업데이트
  4. 데이터 유형을 변경하여 MySQL 기본 키 업데이트
MySQL 테이블의 기본 키 업데이트

이 자습서에서는 MySQL 테이블에서 기본 키를 업데이트하는 방법을 설명합니다. ALTER 명령을 사용하여 기본 키를 변경합니다.

MySQL 테이블의 기본 키 업데이트

MySQL 테이블에서 기본 키를 업데이트할 수 있는 다양한 시나리오가 있습니다. 아래에서 각각 살펴보겠습니다.

  1. 기존 기본 키를 삭제하고 다른 열을 사용하여 새 기본 키를 만듭니다.
  2. 기본 키 구성과 관련된 열 수를 업데이트합니다.
  3. 기본 키의 데이터 유형을 변경하십시오.

기본 키를 변경하기 위해 이 튜토리얼의 뒷부분에서 실제로 시연할 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;

다음 출력이 표시됩니다. 다른 테이블을 사용하면 결과가 다를 수 있습니다.

출력:

mysql 테이블의 기본 키 업데이트 - 테이블 정의 1부

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가 삭제되었는지 확인합니다.

출력:

mysql 테이블의 기본 키 업데이트 - 테이블 정의 2부

기본 키 업데이트:

ALTER TABLE test.users DROP PRIMARY KEY, ADD PRIMARY KEY(USERNAME);

SHOW CREATE TABLE test.users; 사용 다시 기본 키가 USERNAME인지 확인합니다.

출력:

mysql 테이블의 기본 키 업데이트 - 테이블 정의 3부

MySQL에서 기본 키 구성과 관련된 열 수 업데이트

이전 섹션에서 생성한 users 테이블을 계속 진행합니다. 기본 키는 다음 쿼리를 사용하여 쉽게 확인할 수 있는 USERNAME 열이었습니다.

SHOW CREATE TABLE test.users;

ALTER 명령을 사용하여 이제 IDUSERNAME의 두 열로 구성될 기본 키를 업데이트합니다.

ALTER TABLE test.users DROP PRIMARY KEY, ADD PRIMARY KEY(ID, USERNAME);

다음 쿼리를 사용하여 업데이트된 기본 키를 확인할 수 있습니다.

SHOW CREATE TABLE test.users;

출력:

mysql 테이블의 기본 키 업데이트 - 테이블 정의 4부

데이터 유형을 변경하여 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 테이블의 기본 키 업데이트 - 테이블 정의 5부

MySQL 테이블의 기본 키를 업데이트하는 것은 데이터베이스에서 관계를 만들기 전에는 어렵지 않지만 다음과 같은 기본적인 이유로 데이터베이스에서 관계를 설정한 후에는 권장하지 않습니다.

  1. 실행 중인 데이터베이스에서 기본 키를 변경하려는 생각이 들었다면 아마도 기본 키에 대해 잘못된 필드를 선택했을 것입니다. 따라서 필드를 기본 키로 선택할 때 각별히 주의하십시오.

  2. 기본 키를 변경하려는 레코드를 삭제해야 합니다. 해당 특정 레코드에 대한 모든 관계를 잃어야 할 수도 있습니다.

    기본 키를 변경하면 해당 레코드를 추가하고 관계를 다시 만들어야 합니다.

  3. 기본 키를 하나의 컬럼에서 세 개의 컬럼으로 변경하면 새로운 기본 키(3개의 컬럼으로 구성)를 다른 모든 관련 테이블에서 외래 키로 사용해야 합니다. 이는 스토리지, 성능 및 디자인에 영향을 미칠 수 있음을 기억하십시오.

  4. MIGRATION 또는 FILE RE-ORGANIZATION 중에 데이터베이스를 재구성하는 경우를 제외하고는 데이터베이스 내에서 기본 키를 변경하지 않는 것이 좋습니다. 그러나 이러한 기본 키는 다른 테이블에서 외래 키로 사용될 수 있으므로 각별히 주의해야 합니다.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook