SQL Alter Table
SQL ALTER TABLE: 테이블 수정
SQL ALTER TABLE 명령은 기존 테이블을 수정하는 데 사용됩니다. 이 명령을 사용하면 테이블의 구조를 변경하여 새로운 열을 추가하거나, 기존 열을 수정하거나 삭제할 수 있습니다. 또한, 테이블의 제약 조건을 추가하거나 제거하는 데도 사용됩니다.
1. ALTER TABLE 문법
- 새로운 열 추가: 테이블에 새로운 열을 추가합니다.
- 기존 열 수정: 열의 데이터 타입, 이름 등을 변경합니다.
- 열 삭제: 테이블에서 특정 열을 제거합니다.
- 제약 조건 추가/제거: 기본 키, 외래 키, UNIQUE 등의 제약 조건을 추가하거나 제거합니다.
2. ALTER TABLE 사용 방법
2.1 테이블에 열 추가 (ADD COLUMN)
새로운 열을 테이블에 추가할 때는 ADD 키워드를 사용합니다.
문법
ALTER TABLE 테이블_이름
ADD 열_이름 데이터_타입 [제약 조건];
예제: employees
테이블에 email
열 추가
ALTER TABLE employees
ADD email VARCHAR(100);
이 명령은 employees 테이블에 email이라는 VARCHAR(100) 타입의 열을 추가합니다.
2.2 열 수정 (MODIFY / ALTER COLUMN)
기존 열의 데이터 타입이나 크기를 변경할 때 사용합니다. SQL 시스템에 따라 MODIFY나 ALTER COLUMN을 사용합니다.
문법
-
MySQL: MODIFY
ALTER TABLE 테이블_이름 MODIFY 열_이름 새로운_데이터_타입 [제약 조건];
-
SQL Server: ALTER COLUMN
ALTER TABLE 테이블_이름 ALTER COLUMN 열_이름 새로운_데이터_타입;
예제: employees
테이블에서 salary
열의 데이터 타입을 변경
ALTER TABLE employees
MODIFY salary DECIMAL(12, 2);
이 명령은 employees 테이블의 salary 열의 데이터 타입을 **DECIMAL(12, 2)**로 변경합니다.
예제: SQL Server에서 employees
테이블의 name
열 길이 수정
ALTER TABLE employees
ALTER COLUMN name VARCHAR(150);
이 명령은 SQL Server에서 employees 테이블의 name 열의 길이를 **VARCHAR(150)**으로 수정합니다.
2.3 열 이름 변경 (RENAME COLUMN)
테이블에서 열 이름을 변경할 수 있습니다. 각 DBMS에 따라 다른 문법을 사용할 수 있습니다.
문법
-
MySQL:
ALTER TABLE 테이블_이름 RENAME COLUMN 기존_열_이름 TO 새로운_열_이름;
-
SQL Server: SQL Server에서는 직접 RENAME을 지원하지 않으며, sp_rename 시스템 저장 프로시저를 사용합니다.
EXEC sp_rename '테이블_이름.기존_열_이름', '새로운_열_이름', 'COLUMN';
예제: MySQL에서 employees
테이블의 salary
열 이름 변경
ALTER TABLE employees
RENAME COLUMN salary TO base_salary;
이 명령은 salary 열의 이름을 base_salary로 변경합니다.
예제: SQL Server에서 employees
테이블의 열 이름 변경
EXEC sp_rename 'employees.salary', 'base_salary', 'COLUMN';
이 명령은 SQL Server에서 salary 열의 이름을 base_salary로 변경합니다.
2.4 열 삭제 (DROP COLUMN)
테이블에서 열을 삭제할 때는 DROP 키워드를 사용합니다.
문법
ALTER TABLE 테이블_이름
DROP COLUMN 열_이름;
예제: employees
테이블에서 department
열 삭제
ALTER TABLE employees
DROP COLUMN department;
이 명령은 employees 테이블에서 department 열을 삭제합니다.
2.5 제약 조건 추가 (ADD CONSTRAINT)
테이블에 제약 조건(예: PRIMARY KEY, FOREIGN KEY, UNIQUE)을 추가할 수 있습니다.
문법
ALTER TABLE 테이블_이름
ADD CONSTRAINT 제약조건_이름 제약조건_타입 (열_이름);
예제: employees
테이블에 employee_id
를 기본 키로 추가
ALTER TABLE employees
ADD CONSTRAINT pk_employee_id PRIMARY KEY (employee_id);
이 명령은 employees 테이블에서 employee_id 열을 기본 키로 설정합니다.
2.6 제약 조건 제거 (DROP CONSTRAINT)
특정 제약 조건을 제거할 수 있습니다. 제약 조건 이름을 지정해야 합니다.
문법
ALTER TABLE 테이블_이름
DROP CONSTRAINT 제약조건_이름;
예제: employees
테이블에서 기본 키 제거
ALTER TABLE employees
DROP CONSTRAINT pk_employee_id;
이 명령은 employees 테이블에서 pk_employee_id라는 기본 키 제약 조건을 제거합니다.
3. 테이블 이름 변경
테이블 자체의 이름을 변경할 때는 RENAME 문을 사용할 수 있습니다.
3.1 테이블 이름 변경 문법
-
MySQL:
RENAME TABLE 기존_테이블_이름 TO 새로운_테이블_이름;
-
SQL Server:
EXEC sp_rename '기존_테이블_이름', '새로운_테이블_이름';
예제: employees
테이블 이름을 staff
로 변경
RENAME TABLE employees TO staff;
이 명령은 MySQL에서 employees 테이블의 이름을 staff로 변경합니다.
4. 실전 예제
예제 1: employees
테이블에 email
열 추가
ALTER TABLE employees
ADD email VARCHAR(100) NOT NULL;
예제 2: employees
테이블에서 salary
열의 데이터 타입을 변경
ALTER TABLE employees
MODIFY salary DECIMAL(12, 2);
예제 3: employees
테이블에서 department
열 삭제
ALTER TABLE employees
DROP COLUMN department;
예제 4: employees
테이블에서 기본 키 추가
ALTER TABLE employees
ADD CONSTRAINT pk_employee_id PRIMARY KEY (employee_id);
5. 요약
- ALTER TABLE 명령은 테이블 구조를 변경하는 데 사용됩니다.
- ADD COLUMN을 통해 새로운 열을 추가하고, MODIFY/ALTER COLUMN으로 기존 열의 데이터 타입을 수정할 수 있습니다.
- DROP COLUMN을 사용해 테이블에서 열을 삭제할 수 있습니다.
- ADD CONSTRAINT와 DROP CONSTRAINT로 테이블의 제약 조건을 추가하거나 제거할 수 있습니다.
- RENAME COLUMN 및 RENAME TABLE을 사용하여 열 이름이나 테이블 이름을 변경할 수 있습니다.
테이블 구조를 변경할 때는 데이터 무결성을 유지하는 것이 중요하며, 변경 작업 전에 백업을 수행하는 것이 안전합니다.