Кодировка в SQL
CHARACTER SET
— это некий набор символов, называемых кодировкой. Разные CHARACTER SET
включают в себя различные наборы символов. Различные CHARACTER SET
могут включать примерно одинаковые
наборы символов но в различном порядке (см. например koi8ru
и cp1251
). MySQL
необходимо знать какой
CHARACTER SET
будет использован для данных в таблице, чтобы корректно проводтиь сортировку и индексацию
данных.
COLLATION
— способ, с помощью которого следует упорядочивать и сравнивать данные в БД. Для одного и того
же CHARACTER SET
существует как правило несколько COLLATION
. Например:
cp1251_general_ci
— сравнение не чувствительное к регистру, cp1251_bin
— чувствительное к
регистру.
При создании БД:
CREATE DATABASE `имя_базы_даных` DEFAULT CHARACTER SET кодировка COLLATE сравнение;
CREATE DATABASE `dbname` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin;
При создании таблиц:
CREATE TABLE `название_таблицы` (название_столбца1 тип_данных атрибуты_столбца1) DEFAULT CHARACTER SET кодировка COLLATE сравнение;
CREATE TABLE `tblname` ( col INT ) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin;
В определениях столбцов:
CREATE TABLE tblname (column1 varchar(255), column2 varchar(255) CHARACTER SET cp1251 COLLATE cp1251_general_ci) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin;