Как настроить MySQL на чувствительность к регистру

Каковы команды для включения и отключения чувствительности к регистру по умолчанию для всей базы данных на сервере MySQL? Я знаю оператор COLLATE, но, кажется, необходимо поместить его в каждый выполняемый SQL-оператор. Есть ли возможность установить это глобально?

Ответ 1

Вы можете установить сопоставление как на уровне создания базы данных, так и на уровне создания таблицы как часть инструкции CREATE TABLE.

Чтобы настроить сортировку для всей базы данных, вы можете использовать:

CREATE DATABASE test_database CHARACTER SET utf8 COLLATE utf8_general_cs;

Вы также можете изменить сортировку по существующей базе данных с помощью ALTER DATABASE. (Для получения дополнительной информации см. Руководство пользователя MySQL "Набор символов и сортировка базы данных" .)

Если, однако, только одна таблица должна рассматриваться как чувствительная к регистру, вы можете просто использовать:

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 Поддержка набора символов, вероятно, стоит быстро перечитать. (Он перечисляет наборы символов и сопоставления, поддерживаемые MySQL, сообщает вам, как s et набор символов/сортировка на уровне сервера и т.д.)

Ответ 2

Я пришел сюда, чтобы изменить сортировку только для определенного столбца, чтобы она зависела от регистра, а не для всей таблицы или базы данных. Надеюсь, это поможет кому-то посмотреть только на это.

Этот запрос можно попробовать:

ALTER TABLE table_name MODIFY column_name column_datatype COLLATE utf8_bin;