Являются ли имена столбцов и таблиц в MySQL чувствительными к регистру?

Если у меня есть имена столбцов category_id и Category_Id, они разные?

А если у меня есть таблица с именами category и Category, они разные?


person shin    schedule 05.01.2010    source источник


Ответы (4)


В Unix имена таблиц чувствительны к регистру. В Windows их нет. Весело, не правда ли? Вроде как их соответствующие файловые системы. Как вы думаете, это совпадение?

Другими словами, если вы планируете развертывание на машине Linux, лучше протестируйте свой SQL и MySQL на базе Linux, или будьте готовы к загадочным ошибкам «таблица не найдена» во время работы. В настоящее время виртуальные машины дешевы.

Имена полей (столбцов) не чувствительны к регистру.

РЕДАКТИРОВАТЬ: мы говорим об операционной системе на сервере MySQL, а не о клиенте.

person Seva Alekseyev    schedule 05.01.2010
comment
Из документации MySQL: Хотя имена баз данных и таблиц не чувствительны к регистру на некоторых платформах, вы не должны ссылаться на данную базу данных или таблицу, используя разные регистры в одном и том же операторе. Следующий оператор не будет работать, потому что он обращается к таблице как my_table, так и MY_TABLE: SELECT * FROM my_table WHERE MY_TABLE.col=1;, поэтому вполне корректно, но в любом случае его следует рассматривать как чувствительный к регистру ... - person David M; 05.01.2010
comment
Каждая таблица (независимо от того, какой механизм) имеет соответствующий .frm файл, в котором хранится структура данных. Поскольку имена таблицы и файла совпадают, чувствительность к регистру таблиц полностью зависит от чувствительности к регистру файловой системы на сервере. - person Andras Nemeth; 05.11.2012
comment
@DavidM, у меня запрос работает. Какую файловую систему вы используете? - person Pacerier; 08.04.2015
comment
Думаю, этот ответ может запутать читателя! Столбцы таблицы НЕ чувствительны к регистру, это означает, что Size и size - это один и тот же столбец. INSERT INTO table_name (SIZE, gender) VALUES (123, 456); успешно вставит значения в столбцы size и GeNdEr - person Sliq; 17.04.2019
comment
Это именно то, что я сказал в предпоследнем абзаце. Поле и столбец - это одно и то же. - person Seva Alekseyev; 23.04.2019

Из документации MySQL:

Имена баз данных и таблиц не чувствительны к регистру в Windows и чувствительны к регистру в большинстве разновидностей Unix. Заметным исключением является Mac OS X, основанная на Unix, но использующая тип файловой системы по умолчанию (HFS +), не чувствительный к регистру.

а также

Имена столбцов и индексов не чувствительны к регистру ни на одной платформе, равно как и псевдонимы столбцов.

person Anitha.y    schedule 29.05.2014

Для имен базы данных и таблиц это зависит от базовой операционной системы. См. 8.2.2. Чувствительность к регистру идентификатора

person Pekka    schedule 05.01.2010

Как ни странно, кажется чувствительным к регистру в MySQL Workbench даже в Windows.

Мы просто пытались изменить результаты оператора SELECT, но Workbench не позволил нам, жалуясь, что наш запрос не включал первичный ключ таблицы (что было, но в нижнем регистре), поэтому результат был доступен только для чтения. Выполнение того же запроса с первичным ключом в надлежащем случае (ID вместо id) позволит нам отредактировать результаты, как ожидалось.

person Thomas Touzimsky    schedule 23.07.2015