반응형
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/
반응형
'DB' 카테고리의 다른 글
[MySQL] USE 완벽 가이드 사용법(데이터베이스 선택) (0) | 2024.12.23 |
---|---|
[MySQL] RENAME 완벽 가이드 사용법(테이블명 변경) (0) | 2024.12.23 |
[MySQL] TRUNCATE 완벽 가이드 사용법(테이블의 모든 데이터 삭제) (0) | 2024.12.23 |
[MySQL] DROP 완벽 가이드 사용법(데이터베이스와 객체 삭제) (0) | 2024.12.22 |
[MySQL] CREATE 완벽 가이드 사용법(데이터베이스와 테이블 생성) (1) | 2024.12.18 |
SQL LIKE 연산자 (0) | 2024.11.26 |
ORDER BY 특정 값으로 정렬 (0) | 2017.04.27 |
오라클 SYNONYM(별칭) 설정 (0) | 2016.05.27 |