SQL ALTER 문 데이터베이스와 테이블 수정하기
ALTER 문은 이미 생성된 데이터베이스나 테이블의 구조를 변경하거나 속성을 수정할 때 사용하는 SQL 명령어입니다. 이 문서에서는 데이터베이스의 문자 집합(Character Set)과 콜레이션(Collation)을 변경하는 방법부터 테이블 필드 추가, 삭제, 타입 변경까지 알기 쉽게 설명합니다.
1. 데이터베이스 구조 수정하기 (ALTER DATABASE)
ALTER DATABASE 명령어는 데이터베이스의 문자 집합과 콜레이션을 수정할 때 주로 사용됩니다.
1.1. 문자 집합(Character Set) 변경하기
문자 집합은 데이터를 저장할 때 사용하는 문자 인코딩 방식을 정의합니다.
문법
ALTER DATABASE 데이터베이스이름 CHARACTER SET=문자집합이름;
예제
ALTER DATABASE Hotel CHARACTER SET=utf8;
1.2. 콜레이션(Collation) 변경하기
콜레이션은 데이터 정렬 및 비교 방식(대소문자 구분 등)을 지정합니다.
문법
ALTER DATABASE 데이터베이스이름 COLLATE=콜레이션이름;
예제
ALTER DATABASE Hotel COLLATE=utf8_general_ci;
자주 쓰이는 문자 집합 및 콜레이션
| 문자 집합 | 설명 |
|---|---|
| utf8 | UTF-8 유니코드 (한글·특수문자 지원, 1~3바이트) |
| euckr | 한글 전용 인코딩 (1~2바이트) |
| 콜레이션 | 설명 |
|---|---|
| utf8_general_ci | UTF-8 기본 (대소문자 구분하지 않음) |
| utf8_bin | UTF-8 바이너리 방식 (정확한 문자 비교) |
| euckr_korean_ci | EUC-KR 한글 정렬 (대소문자 구분하지 않음) |
Tip: 일반적으로 웹에서는 UTF-8(utf8_general_ci)을 권장합니다.
2. 테이블 구조 수정하기 (ALTER TABLE)
ALTER TABLE 명령어는 기존 테이블 구조에 필드를 추가(ADD)하거나, 삭제(DROP) 또는 수정(MODIFY)할 때 사용됩니다.
2.1. 새로운 필드 추가하기 (ADD)
기존 테이블에 새로운 필드를 추가합니다.
문법
ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
예제
ALTER TABLE Reservation ADD Phone VARCHAR(20);
2.2. 기존 필드 삭제하기 (DROP)
기존에 존재하던 필드를 테이블에서 삭제합니다.
문법
ALTER TABLE 테이블이름 DROP 필드이름;
예제
ALTER TABLE Reservation DROP RoomNum;
2.3. 필드의 데이터 타입 변경하기 (MODIFY COLUMN)
필드의 데이터 타입이나 속성을 변경합니다.
문법
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 새로운필드타입;
예제
ALTER TABLE Reservation MODIFY COLUMN ReserveDate VARCHAR(20);
ALTER 문 실습 활용 예시 (완성본)
아래 예제는 테이블 수정 방법을 종합적으로 보여줍니다.
-- 데이터베이스 선택
USE Hotel;
-- 문자 집합과 콜레이션 변경
ALTER DATABASE Hotel CHARACTER SET=utf8 COLLATE=utf8_general_ci;
-- 테이블에 필드 추가
ALTER TABLE Customer ADD Email VARCHAR(100) UNIQUE NOT NULL;
-- 테이블의 필드 삭제
ALTER TABLE Customer DROP Phone;
-- 테이블 필드 타입 수정
ALTER TABLE Customer MODIFY COLUMN Name VARCHAR(50) NOT NULL;
ALTER 문 요약 정리
| 구분 | 용도 | 명령어 |
|---|---|---|
| 데이터베이스 수정 | 문자 집합 변경 | ALTER DATABASE … CHARACTER SET |
| 콜레이션 변경 | ALTER DATABASE … COLLATE |
|
| 테이블 수정 | 필드 추가 | ALTER TABLE … ADD |
| 필드 삭제 | ALTER TABLE … DROP |
|
| 필드 타입 변경 | ALTER TABLE … MODIFY COLUMN |
질문 정리
-
콜레이션이 중요한 이유가 뭔가요?
- 데이터 검색과 정렬 시 문자 비교 방식을 결정하기 때문입니다. 예를 들어,
utf8_general_ci는 대소문자를 구분하지 않고,utf8_bin은 정확히 문자 그대로 비교합니다.
- 데이터 검색과 정렬 시 문자 비교 방식을 결정하기 때문입니다. 예를 들어,
-
필드 삭제 시 데이터는 어떻게 되나요?
- 해당 필드의 데이터가 모두 삭제되므로, 신중하게 사용해야 합니다.
-
필드 추가 시 기본값을 줄 수 있나요?
- 가능합니다.
ALTER TABLE Customer ADD Status VARCHAR(20) DEFAULT 'Active'; -
테이블 이름도 변경 가능한가요?
- 가능합니다.
ALTER TABLE Reservation RENAME TO Booking; -
필드 이름 변경도 가능한가요?
- 필드 이름 변경은
CHANGE COLUMN을 사용합니다.
ALTER TABLE Customer CHANGE COLUMN Name CustomerName VARCHAR(50); - 필드 이름 변경은
댓글남기기