코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

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 시스템에 따라 MODIFYALTER 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 CONSTRAINTDROP CONSTRAINT로 테이블의 제약 조건을 추가하거나 제거할 수 있습니다.
  • RENAME COLUMNRENAME TABLE을 사용하여 열 이름이나 테이블 이름을 변경할 수 있습니다.

테이블 구조를 변경할 때는 데이터 무결성을 유지하는 것이 중요하며, 변경 작업 전에 백업을 수행하는 것이 안전합니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com