2011-02-02 7 views
12

MySQL 서버의 전체 데이터베이스에 대해 대/소문자 구분을 기본적으로 사용하거나 사용하지 않도록 설정하는 명령은 무엇입니까? 나는 COLLATE 문을 알고 있지만, 실행중인 모든 SQL 문에 이것을 넣어야 할 필요가 있다고 생각합니다. 전역 적으로 설정할 수 있습니까?MySQL이 대소 문자를 구분하도록 구성하는 방법

+0

상황에 맞는 무엇인가? 예 : 당신이하고있는 언어? – yoda

답변

27

CREATE TABLE 문의 일부로 데이터베이스 생성 및 테이블 생성 수준에서 데이터 정렬을 설정할 수 있습니다.

전체 데이터베이스의 데이터 정렬을 설정하려면, 당신은 사용할 수 있습니다

CREATE DATABASE test_database CHARACTER SET utf8 COLLATE utf8_general_cs; 

또한 ALTER 데이타베이스를 통해 기존 데이터베이스의 데이터 정렬을 변경할 수 있습니다. (자세한 내용은 MySQL의 Database Character Set and Collation 매뉴얼 항목을 참조하십시오.)

, 단 하나의 테이블은 대소 문자로 취급 될 필요가 있지만, 당신은 간단하게 사용할 수 있습니다

DROP TABLE IF EXISTS test_table; 
CREATE TABLE test_table (
    test_id bigint unsigned NOT NULL auto_increment, 
    ... 

    PRIMARY KEY test_id (test_id), 
    ... 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_cs; 

(대소 문자 구분은 "utf8_general_ci을"인 .)

마지막으로, 메인 섹션의 MySQL Character Set Support 매뉴얼 섹션은 아마도 빨리 알아볼 가치가 있습니다. (character sets and collations supported by MySQL을 나열하고 et the character set/collation at the server level 등을 알려줍니다.

+6

또는 'utf8_bin'이 일반적으로 사용됩니다. – Unode

+0

@Unode 예, utf8_bin은 "a"와 "a"를 동일시하지 않습니다. –

+0

@middaparka가 말했던 것과 제가 이전에 언급 한 것과 결합하여, 강조된 문자가 항상 예상대로 정렬되지 않을 수 있으므로 정렬에주의해야합니다 에. 그러나 이러한 문제의 대부분은 특정 인코딩 및 로캘 설정과 관련이 있습니다. (이 질문의 범위를 벗어남) – Unode

1

특정 열에 대해서만 데이터 정렬을 수정하려고합니다. 여기서는 전체 열 또는 대/소문자를 구분하지 않고 대/소문자를 구분합니다. 데이터 베이스. 희망이 누군가를 위해 이것을 찾는 데 도움이되기를 바랍니다.

이 쿼리는 시도 할 수 :

ALTER TABLE table_name MODIFY column_name column_datatype COLLATE utf8_bin; 
관련 문제