DB

[MySQL] ALTER 완벽 가이드 사용법(테이블 수정)

인생아 2024. 12. 19. 23:44
반응형

MySQL에서 ALTER 명령어는 이미 생성된 테이블의 구조를 수정할 때 사용됩니다. 테이블을 새로 생성하지 않고도 컬럼 추가, 삭제, 변경, 이름 변경, 인덱스 추가 등 다양한 작업을 수행할 수 있습니다.

ALTER TABLE: 테이블 수정하기

ALTER TABLE 명령어는 테이블의 구조를 수정하는 데 사용됩니다. 다음은 ALTER TABLE을 통해 수행할 수 있는 주요 작업입니다.

컬럼 추가 (ADD COLUMN)

테이블에 새 컬럼을 추가하려면 ADD COLUMN을 사용합니다.

문법

ALTER TABLE 테이블명
ADD COLUMN 컬럼명 데이터타입 [옵션];

예제

-- users 테이블에 age 컬럼 추가
ALTER TABLE users
ADD COLUMN age INT;

-- email 컬럼 뒤에 phone 컬럼 추가
ALTER TABLE users
ADD COLUMN phone VARCHAR(20) AFTER email;

-- 테이블의 첫 번째 컬럼으로 추가
ALTER TABLE users
ADD COLUMN country VARCHAR(50) FIRST;
반응형

컬럼 삭제 (DROP COLUMN)

더 이상 필요 없는 컬럼은 DROP COLUMN으로 삭제할 수 있습니다.

문법

ALTER TABLE 테이블명
DROP COLUMN 컬럼명;

예제

-- age 컬럼 삭제
ALTER TABLE users
DROP COLUMN age;

-- phone 컬럼 삭제
ALTER TABLE users
DROP COLUMN phone;

컬럼 이름 변경 (RENAME COLUMN)

컬럼 이름을 변경하려면 RENAME COLUMN을 사용합니다.

문법

ALTER TABLE 테이블명
RENAME COLUMN 기존컬럼명 TO 새컬럼명;

예제

-- username 컬럼을 user_name으로 변경
ALTER TABLE users
RENAME COLUMN username TO user_name;
반응형

컬럼 데이터타입 변경 (MODIFY 또는 CHANGE)

컬럼의 데이터타입을 변경하거나 추가적인 속성을 설정할 때 사용합니다.

문법 (MODIFY)

ALTER TABLE 테이블명
MODIFY COLUMN 컬럼명 데이터타입 [옵션];

문법 (CHANGE)

ALTER TABLE 테이블명
CHANGE COLUMN 기존컬럼명 새컬럼명 데이터타입 [옵션];

예제

-- age 컬럼을 NOT NULL로 설정
ALTER TABLE users
MODIFY COLUMN age INT NOT NULL;

-- email 컬럼의 데이터타입을 TEXT로 변경
ALTER TABLE users
MODIFY COLUMN email TEXT;

-- username 컬럼 이름과 데이터타입 변경
ALTER TABLE users
CHANGE COLUMN username user_nickname VARCHAR(100);

테이블 이름 변경 (RENAME TO)

테이블의 이름을 변경할 때 RENAME TO를 사용합니다.

문법

ALTER TABLE 기존테이블명
RENAME TO 새테이블명;

예제

-- users 테이블 이름을 customers로 변경
ALTER TABLE users
RENAME TO customers;
반응형

ALTER로 인덱스 관리

인덱스 추가 (ADD INDEX)

데이터 검색 속도를 높이기 위해 인덱스를 추가할 수 있습니다.

문법

ALTER TABLE 테이블명
ADD INDEX 인덱스명 (컬럼명);

예제

-- email 컬럼에 인덱스 추가
ALTER TABLE users
ADD INDEX idx_email (email);

-- 여러 컬럼에 복합 인덱스 추가
ALTER TABLE users
ADD INDEX idx_name_age (name, age);

인덱스 삭제 (DROP INDEX)

기존 인덱스를 삭제하려면 DROP INDEX를 사용합니다.

문법

ALTER TABLE 테이블명
DROP INDEX 인덱스명;

예제

-- idx_email 인덱스 삭제
ALTER TABLE users
DROP INDEX idx_email;

ALTER를 활용한 제약 조건 변경

기본값 설정 (SET DEFAULT)

컬럼에 기본값을 설정하거나 변경할 수 있습니다.

문법

ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 SET DEFAULT 기본값;

예제

-- age 컬럼에 기본값 18 설정
ALTER TABLE users
ALTER COLUMN age SET DEFAULT 18;

기본값 제거 (DROP DEFAULT)

기본값을 제거하려면 DROP DEFAULT를 사용합니다.

문법

ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 DROP DEFAULT;

예제

-- age 컬럼의 기본값 제거
ALTER TABLE users
ALTER COLUMN age DROP DEFAULT;
반응형

종합 예제: 사용자 관리 테이블 수정

아래는 다양한 ALTER TABLE 기능을 활용하여 사용자 관리 테이블을 수정하는 종합 예제입니다.

-- 1. users 테이블에 nickname 컬럼 추가
ALTER TABLE users
ADD COLUMN nickname VARCHAR(50);

-- 2. nickname 컬럼의 기본값 설정
ALTER TABLE users
ALTER COLUMN nickname SET DEFAULT 'Guest';

-- 3. email 컬럼 이름을 contact_email로 변경
ALTER TABLE users
CHANGE COLUMN email contact_email VARCHAR(100);

-- 4. nickname 컬럼 삭제
ALTER TABLE users
DROP COLUMN nickname;

-- 5. 테이블 이름을 user_profiles로 변경
ALTER TABLE users
RENAME TO user_profiles;

MySQL ALTER TABLE의 활용 팁

  • 데이터베이스 설계 변경 시 기존 데이터를 백업하는 것이 중요합니다.
  • 대규모 테이블에서 ALTER 명령어를 실행하면 성능에 영향을 줄 수 있으므로 트래픽이 적은 시간대에 작업하세요.
  • 데이터 정합성을 유지하기 위해 외래 키(Foreign Key) 변경 시 주의가 필요합니다.

참고

MySQL 공식 문서: https://dev.mysql.com/doc/refman/8.0/en/

반응형