Поиск

Имена баз данных, таблиц, индексов, столбцов и псевдонимов

Имена баз данных, таблиц, индексов, столбцов и псевдонимов — это идентификаторы. В настоящем разделе описан допустимый синтаксис для идентификаторов в MySQL.
В табл.приведены максимальные длины и допустимые символы для каждого ти­па идентификаторов.
Таблица Максимальные длины и допустимые символы для идентификаторов


Идентификатор Максимальная длина (в байтах) Допустимые символы
База данныхкаталогов, кроме 7\'\ ' и *. 64 Любые символы, разрешенные в именах
Таблицафайлов, кроме V, 'V и '.'. 64 Любые символы, разрешенные в именах
Столбец 64

Индекс

64
Псевдоним 255

Любые символы. Любые символы. Любые символы. В дополнение к ограничениям, указанным в табл. , ни один идентификатор не мо­жет содержать символ ASCII 0 или байт со значением 255. Имена баз, таблиц и столбцов не должны завершаться пробелами. До MySQL 4.1.1 символы кавычек не должны были применяться с идентификаторами. Начиная с MySQL 4.1.1, идентификаторы сохраняются в кодировке Unicode (UTF8). Это применимо к идентификаторам в определениях таблиц, хранящихся в файлах . f rm, a также к идентификаторам, сохраняемым в таблицах привилегий базы данных mysql. Не­смотря на то что идентификаторы Unicode могут включать в себя многобайтные симво­лы, помните, что максимальная их длина указана в байтах. Если идентификатор включа­ет многобайтные символы, то допустимое количество символов меньше, чем значение, приведенное в таблице. Идентификатор может быть или не быть окруженным кавычками. Если идентифика­тор совпадает с зарезервированным словом либо содержит специальные символы, вы должны заключать его в кавычки всякий раз, когда к нему обращаетесь. Список зарезер­вированных слов приведен в разделе 2.6. Специальные символы находятся вне набора букв и цифр текущего символьного набора плюс '__' и '$'.
Символом кавычки для окружения идентификаторов служит обратная кавычка (' ч'):
mysql SELECT * FROM чselect4 WHERE v select\id 100;
Если SQL-режим сервера активизирует опцию ANSI_QUOTES, то можно также заклю­чать идентификаторы в двойные кавычки:
mysql CREATE TABLE test (col INT);
ERROR 1064: You have an error in your SQL syntax. (...)

mysql SET sqljnode='ANSI_QUOTES'; mysql CREATE TABLEtest (col INT); Query OK, 0 rows affected (0.00 sec) См. раздел Выбор режимов SQL.
Начиная с версии MySQL 4.1, символы кавычек могут находиться внутри идентифи­катора, если сам идентификатор взят в кавычки. Если символ, который нужно включить в состав идентификатора, совпадает с тем, что служит для него кавычкой, его следует повторить. Следующий оператор создает таблицу под названием ачЬ, которая содержит столбец по имени cd:
mysql CREATE TABLE 'ab' fcd~ INT);
Помещение идентификаторов в кавычки было введено в MySQL 3.23.6 с тем, чтобы разрешить использование идентификаторов, совпадающих с зарезервированными сло­вами или содержащих специальные символы. До версии 3.23.6 нельзя было применять идентификаторы, которые требуют кавычек, поэтому правила образования идентифика­торов для старых версий MySQL более строгие:

  1. Имя может включать алфавитно-цифровые символы из текущего набора симво­
    лов, а также символы '_' и '$'. В качестве набора символов по умолчанию принят
    ISO-8859-1 (Latin1). Его можно изменить с помощью опции mysqld —default-
    character-set.
  2. Имя может начинаться с любого допустимого символа. В частности, имя может
    начинаться с цифры, что весьма отличается от множества других систем управле­
    ния базами данных. Однако имя, не помещенное в кавычки, не может содержать
    только цифры.
  3. В именах нельзя применять символ точки '. \ поскольку точка служит для расши­
    рения формата, когда можно обращаться к столбцам (см. раздел Идентификационные квалификаторы).

Не рекомендуется использовать имена вроде 1е, потому что выражение, подобное 1е+1, неоднозначно. Оно может интерпретироваться как выражение 1е + 1 либо как число 1е+1, в зависимости от контекста.