MySQL에서 ALTER DATABASE는 데이터베이스의 속성을 변경할 때 사용되는 SQL 명령어입니다. 이를 통해 데이터베이스의 기본 문자 집합(Charset), 정렬 규칙(Collation), 저장 위치 등을 설정하거나 변경할 수 있습니다. 이 문법은 데이터베이스 관리자가 데이터베이스의 환경을 효율적으로 관리하는 데 중요한 역할을 합니다.
ALTER DATABASE 기본 문법
ALTER DATABASE [데이터베이스_이름]
[옵션];
옵션은 다음과 같은 속성 변경에 사용됩니다:
- DEFAULT CHARACTER SET: 데이터베이스의 기본 문자 집합을 설정합니다.
- DEFAULT COLLATE: 데이터베이스의 기본 정렬 규칙을 설정합니다.
ALTER DATABASE 주요 기능
- 문자 집합 변경 (DEFAULT CHARACTER SET)
데이터베이스의 문자 집합을 변경하면, 새롭게 생성되는 테이블이나 열에 해당 문자 집합이 기본적으로 설정됩니다. - 정렬 규칙 변경 (DEFAULT COLLATE)
정렬 규칙은 데이터 정렬 및 비교에 영향을 미칩니다. ALTER DATABASE를 통해 정렬 규칙을 변경하면, 새롭게 생성되는 데이터베이스 객체가 이를 따르게 됩니다. - 스토리지 설정 변경
일부 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 ;
위 프로시저는 시스템 데이터베이스를 제외한 모든 데이터베이스의 문자 집합과 정렬 규칙을 utf8mb4와 utf8mb4_general_ci로 변경합니다.
주의사항
- 기존 데이터에는 영향을 주지 않음
ALTER DATABASE 명령어는 데이터베이스 내의 기존 테이블 및 데이터에는 영향을 미치지 않습니다. 기존 데이터를 변경하려면 개별 테이블 또는 열의 설정을 수동으로 변경해야 합니다. - 버전 호환성 확인
일부 ALTER DATABASE 기능은 MySQL 버전에 따라 지원되지 않을 수 있으니 공식 문서를 확인해야 합니다.
결론
MySQL ALTER DATABASE는 데이터베이스의 기본 설정을 관리하는 데 필수적인 명령어입니다. 데이터베이스의 문자 집합과 정렬 규칙을 적절히 설정하면 데이터 일관성을 유지하고 성능을 최적화할 수 있습니다.
MySQL 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/
'DB' 카테고리의 다른 글
[MySQL] REVOKE 완벽 가이드 사용법(권한 제거) (0) | 2025.01.08 |
---|---|
[MySQL] GRANT 완벽 가이드 사용법(권한 부여) (0) | 2025.01.08 |
[MySQL] SHOW CREATE 완벽 가이드 사용법(객체 생성 스크립트 보기) (0) | 2025.01.08 |
[MySQL] SET FOREIGN_KEY_CHECKS 완벽 가이드 사용법(외래 키 제약 조건 활성/비활성) (0) | 2025.01.08 |
[MySQL] CREATE TEMPORARY TABLE 완벽 가이드 사용법(임시테이블) (0) | 2025.01.08 |
[MySQL] REPAIR TABLE 완벽 가이드 사용법(테이블 복구) (0) | 2025.01.07 |
[MySQL] OPTIMIZE TABLE 완벽 가이드 사용법(테이블 최적화) (0) | 2025.01.07 |
[MySQL] CHECK TABLE 완벽 가이드 사용법(테이블 무결성/오류 진단) (0) | 2025.01.06 |