- 특정 데이터베이스의 DEFAULT CHARACTER SET 확인 방법
- SHOW CREATE DATABASE db_name;
- 이렇게 하면, 해당 데이터베이스를 생성하는데 사용할 수 있는 DDL 문장을 보여주는데, 거기에 기본 문자셋에 대한 정보도 포함되어 있음.
- 특정 테이블의 DEFAULT CHARACTER SET 확인 방법
- SHOW CREATE TABLE table_name;
- 이렇게 하면, 데이터베이스와 동일하게 해당 테이블을 생성하는데 사용할 수 있는 DDL 문장을 보여주는데, 거기에 기본 문자셋에 대한 정보도 포함되어 있음.
- 특정 데이터베이스의 DEFAULT CHARACTER SET 수정하는 방법
- ALTER DATABASE db_name [DEFAULT] CHARACTER SET = charset_name;
- 참고로, 이 방법은 현재 이 데이터베이스에 속해있는 테이블들의 문자셋을 변경하는 것은 아님. 다만, 향후에 CREATE TABLE 문장으로 테이블(들)을 새로이 추가하려고 할 때 (해당 테이블들에 명시적으로 문자셋이 지정되지 않은 경우) 해당 테이블들이 기본적으로 가지게 될 DEFAULT 문자셋을 지정하는 것에 불과함.
- 특정 데이터베이스의 DEFAULT COLLATION 수정하는 방법
- ALTER DATABASE db_name [DEFAULT] COLLATE = collation_name;
- 참고로, 이 방법은 현재 이 데이터베이스에 속해있는 테이블들의 collation을 변경하는 것은 아님. 다만, 향후에 CREATE TABLE 문장으로 테이블(들)을 새로이 추가하려고 할 때 (해당 테이블들에 명시적으로 collation이 지정되지 않은 경우) 해당 테이블들이 기본적으로 가지게 될 DEFAULT collation을 지정하는 것에 불과함.
- 특정 테이블의 DEFAULT CHARACTER SET 수정하는 방법
- ALTER TABLE table_name [DEFAULT] CHARACTER SET = charset_name;
- 참고로, 이 방법은 현재 테이블에 들어가있는 칼럼들의 문자셋이나 collation을 변경하지는 않는다. 다만, 향후에 ALTER TABLE 문장으로 칼럼(들)을 새로이 추가하려고 할 때 (해당 칼럼들에 명시적으로 문자셋이나 collation이 지정되지 않은 경우) 해당 칼럼들이 기본적으로 가지게 될 DEFAULT 문자셋을 지정하는 것에 불과함.
- collation도 함께 수정하려고 할 때는 다음과 같이 한다.
- ALTER TABLE table_name [DEFAULT] CHARACTER SET = charset_name COLLATE = collation_name;
- 만약, 이미 테이블에 포함되어있는 칼럼들에 지정되어있는 문자셋이나 collation을 수정하고 싶은 경우에는 다음과 같이 'CONVERT TO'를 사용해야 한다.
- ALTER TABLE table_name CONVERT TO CHARACTER SET = charset_name [COLLATE =collation_name];
- 이렇게 하면 현재 테이블에 포함되어있던 각 컬럼들에 지정되어있던 문자셋이 모두 동일하게 새로운 문자셋과 collation으로 변경되게 됨.
- 그런데, 이렇게 'CONVERT TO'를 사용하면 새로운 문자셋이 기존의 문자셋보다 Max_len 이 큰 경우 각 컬럼들에 지정되어있던 데이터 타입의 크기 역시 함께 변경이 된다. (예를 들어, TEXT 타입이었다면 MEDIUMTEXT 타입으로 변경되기도 함) 또한 각 컬럼들에 저장되어있는 실제 '값'도 역시 새로운 문자셋으로 변경이 일어난다(매뉴얼에서는 이렇게 이야기하고 있는데, 직접 확인 필요)
- 만약, 이렇게 데이터 타입의 크기나 '값'의 변화를 원하지 않는 경우에는 'CONVERT TO'를 사용하면 안되고 각 컬럼마다 'MODIFY' 명령어를 통해 각각 수정해주어야 함.
- ALTER TABLE table_name MODIFY column_name VARCHAR(10) CHARACTER SET charset_name [COLLATE collation_name];
- 좀 더 자세한 사항은 직접 매뉴얼을 참고할 것.
- [참고] 현재 시스템에서 지원하는 문자셋들의 목록을 보고 싶을 때
- SHOW CHARACTER SET;
- 이렇게 하면 지원하는 문자셋 목록을 모두 다 보여줌. 문자셋 이외에도 해당 문자셋이 선택되었을때 (별도로 명시적으로 collation을 지정하지 않았을때 사용되는) Default collation도 보여주고, 해당 문자셋이 최대 몇 바이트를 차지하는지에 대한 Maxlen 정보도 함께 보여줌.(고정폭 인코딩을 사용하는 문자셋이 아니라 가변폭 인코딩을 사용하는 문자셋도 있으므로 그야말로 Maxlen임)
- 만약, 전체 목록이 아니라 필터를 사용해서 일부 목록만 보고 싶을 때는 다음과 같이 하면 된다.
- SHOW CHARACTER SET LIKE '%euc%';
- [참고] 현재 시스템에서 지원하는 collation 목록을 보고 싶을 때
- SHOW COLLATION;
- 이렇게 하면 지원하는 collation 목록을 모두 다 보여줌. 해당 collation이 속해있는 문자셋 정보, 해당 collation이 Default collation인지 여부 등의 정보도 함께 보여줌.
- 만약, 전체 목록이 아니라 필터를 사용해서 일부 목록만 보고 싶을 때는 다음과 같이 하면 된다.
- SHOW COLLATION LIKE '%euc%';
- 또한, 각 문자셋별로 Default collation만을 걸러서 보고 싶을 때는 다음과 같이 한다.
- SHOW COLLATION WHERE 'Default' = 'Yes';
다시한번 강조하지만, 여기에서 정리한 것들은 이미 값이 들어가있는 테이블이나 칼럼 등에 영향을 주는 것이 아니라는 점... 헷갈리지 마시길!!!
<출처: http://blog.naver.com/kumimo?Redirect=Log&logNo=80090608750 > |
각 데이터베이스 별로 인코딩을 설정하기
1. 생성시
CREATE DATABASE [DB_NAME] DEFAULT CHARACTER SET [char_set] COLLATE [coll_name];
ex> CREATE DATABASE
db_name CHARACTER SET
euckr COLLATE
euckr_korean_ci;
2. 생성된 데이터베이스 수정시
ALTER DATABASE [DB_NAME] CHARACTER SET [char_set] COLLATE [coll_name];
ex> ALTER DATABASE
db_name DEFAULT CHARACTER SET
euckr DEFAULT COLLATE
euckr_korean_ci;
3. 테이블의 텍스트 값과 기본 인코딩 변경하기
ALTER TABLE [TABLE_NAME] CONVERT TO CHARACTER SET [char_set];
위 명령은 컬럼들의 값을 바꾸는데, 값이 바뀌는 것을 원하지 않는 경우(예를 들어, 테이블은 latin1을 사용하는데 저장된 텍스트들은 utf8인 경우, 테이블의 캐릭터 셋만 바꾸면 되므로)엔 다음과 같이 칼럼별로 수행한다.
ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
ALTER TABLE t1 DEFAULT CHARACTER SET utf8;