2 분 소요

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

질문 정리

  1. 콜레이션이 중요한 이유가 뭔가요?

    • 데이터 검색과 정렬 시 문자 비교 방식을 결정하기 때문입니다. 예를 들어, utf8_general_ci는 대소문자를 구분하지 않고, utf8_bin은 정확히 문자 그대로 비교합니다.
  2. 필드 삭제 시 데이터는 어떻게 되나요?

    • 해당 필드의 데이터가 모두 삭제되므로, 신중하게 사용해야 합니다.
  3. 필드 추가 시 기본값을 줄 수 있나요?

    • 가능합니다.
    ALTER TABLE Customer ADD Status VARCHAR(20) DEFAULT 'Active';
    
  4. 테이블 이름도 변경 가능한가요?

    • 가능합니다.
    ALTER TABLE Reservation RENAME TO Booking;
    
  5. 필드 이름 변경도 가능한가요?

    • 필드 이름 변경은 CHANGE COLUMN을 사용합니다.
    ALTER TABLE Customer CHANGE COLUMN Name CustomerName VARCHAR(50);
    

카테고리:

업데이트:

댓글남기기