DB

[MySQL] ALTER DATABASE 완벽 가이드 사용법(데이터베이스 설정 변경)

인생아 2025. 1. 8. 10:44
반응형

MySQL에서 ALTER DATABASE는 데이터베이스의 속성을 변경할 때 사용되는 SQL 명령어입니다. 이를 통해 데이터베이스의 기본 문자 집합(Charset), 정렬 규칙(Collation), 저장 위치 등을 설정하거나 변경할 수 있습니다. 이 문법은 데이터베이스 관리자가 데이터베이스의 환경을 효율적으로 관리하는 데 중요한 역할을 합니다.

ALTER DATABASE 기본 문법

ALTER DATABASE [데이터베이스_이름]
[옵션];

옵션은 다음과 같은 속성 변경에 사용됩니다:

  • DEFAULT CHARACTER SET: 데이터베이스의 기본 문자 집합을 설정합니다.
  • DEFAULT COLLATE: 데이터베이스의 기본 정렬 규칙을 설정합니다.
반응형

ALTER DATABASE 주요 기능

  1. 문자 집합 변경 (DEFAULT CHARACTER SET)
    데이터베이스의 문자 집합을 변경하면, 새롭게 생성되는 테이블이나 열에 해당 문자 집합이 기본적으로 설정됩니다.
  2. 정렬 규칙 변경 (DEFAULT COLLATE)
    정렬 규칙은 데이터 정렬 및 비교에 영향을 미칩니다. ALTER DATABASE를 통해 정렬 규칙을 변경하면, 새롭게 생성되는 데이터베이스 객체가 이를 따르게 됩니다.
  3. 스토리지 설정 변경
    일부 MySQL 버전에서는 데이터베이스 저장소 설정을 ALTER DATABASE로 변경할 수 있습니다.

ALTER DATABASE 예제: 기본 문자 집합 변경

다음은 데이터베이스의 기본 문자 집합을 UTF-8로 변경하는 예제입니다:

ALTER DATABASE my_database
DEFAULT CHARACTER SET utf8mb4;

위 명령어는 my_database의 기본 문자 집합을 utf8mb4로 설정합니다. 이 설정은 이후 생성되는 테이블이나 열에 기본적으로 적용됩니다.

정렬 규칙 변경 예제

기본 정렬 규칙을 utf8mb4_general_ci로 변경하려면 다음 명령어를 사용합니다:

ALTER DATABASE my_database
DEFAULT COLLATE utf8mb4_general_ci;

utf8mb4_general_ci는 대소문자를 구분하지 않는 비교 방식을 제공합니다.

반응형

ALTER DATABASE: 문자 집합과 정렬 규칙 동시 변경

문자 집합과 정렬 규칙을 동시에 변경할 수도 있습니다:

ALTER DATABASE my_database
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;

이 명령어는 데이터베이스가 utf8mb4 문자 집합과 utf8mb4_unicode_ci 정렬 규칙을 기본으로 사용하도록 변경합니다.

응용 예제: 데이터베이스 관리 자동화

다음 스크립트는 여러 데이터베이스의 문자 집합을 한 번에 변경하는 예제입니다:

DELIMITER //

CREATE PROCEDURE ChangeDatabaseCharset()
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE dbName VARCHAR(255);
    DECLARE dbCursor CURSOR FOR
        SELECT schema_name
        FROM information_schema.schemata
        WHERE schema_name NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys');
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    OPEN dbCursor;

    read_loop: LOOP
        FETCH dbCursor INTO dbName;
        IF done THEN
            LEAVE read_loop;
        END IF;

        SET @sql = CONCAT('ALTER DATABASE ', dbName, ' DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci');
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP;

    CLOSE dbCursor;
END//

DELIMITER ;

위 프로시저는 시스템 데이터베이스를 제외한 모든 데이터베이스의 문자 집합과 정렬 규칙을 utf8mb4utf8mb4_general_ci로 변경합니다.

반응형

주의사항

  1. 기존 데이터에는 영향을 주지 않음
    ALTER DATABASE 명령어는 데이터베이스 내의 기존 테이블 및 데이터에는 영향을 미치지 않습니다. 기존 데이터를 변경하려면 개별 테이블 또는 열의 설정을 수동으로 변경해야 합니다.
  2. 버전 호환성 확인
    일부 ALTER DATABASE 기능은 MySQL 버전에 따라 지원되지 않을 수 있으니 공식 문서를 확인해야 합니다.

결론

MySQL ALTER DATABASE는 데이터베이스의 기본 설정을 관리하는 데 필수적인 명령어입니다. 데이터베이스의 문자 집합과 정렬 규칙을 적절히 설정하면 데이터 일관성을 유지하고 성능을 최적화할 수 있습니다.

MySQL 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/

반응형