Насколько я понимаю, стандарт SQL требует учета регистра. Я не верю, что какие-либо базы данных полностью следуют стандарту.
MySQL имеет параметр конфигурации как часть своего "строгого режима" (набор из нескольких параметров, которые делают MySQL более совместимым со стандартами) для имен таблиц с учетом регистра или без учета регистра. Независимо от этого параметра, имена столбцов по-прежнему не чувствительны к регистру, хотя я думаю, что это влияет на способ отображения имен столбцов. Я полагаю, что этот параметр применяется для всего экземпляра во всех базах данных в экземпляре RDBMS, хотя сегодня я провожу исследование, чтобы подтвердить это (и надеюсь, что ответ отрицательный).
Мне нравится, как Oracle справляется с этим гораздо лучше. В прямом SQL идентификаторы, такие как имена таблиц и столбцов, не чувствительны к регистру. Однако, если по какой-то причине вы действительно хотите получить явный регистр, вы можете заключить идентификатор в двойные кавычки (которые сильно отличаются в Oracle SQL от одинарных кавычек, используемых для включения строковых данных). Итак:
SELECT fieldName
FROM tableName;
запросит имя поля из имя таблицы , но
SELECT "fieldName"
FROM "tableName";
запросит fieldName из tableName .
Я почти уверен, что вы могли бы даже использовать этот механизм для вставки пробелов или других нестандартных символов в идентификатор.
В этой ситуации, если по какой-то причине вы обнаружили, что имена таблиц и столбцов в явном виде желательны, они были доступны вам, но я по-прежнему остерегался этого делать.
Мое соглашение, когда я ежедневно использовал Oracle, заключалось в том, что в коде я должен помещать все ключевые слова Oracle SQL в верхний регистр и все идентификаторы в нижний регистр. В документации я бы поставил все имена таблиц и столбцов в верхнем регистре. Это было очень удобно и доступно для чтения (хотя иногда было сложно набирать в коде так много прописных букв - я уверен, что мог бы найти здесь функцию редактора).
На мой взгляд, MySQL особенно плох для того, чтобы отличаться по этому поводу на разных платформах. Нам нужно иметь возможность выгружать базы данных в Windows и загружать их в UNIX, и это приводит к катастрофе, если установщик в Windows забыл перевести СУБД в режим с учетом регистра. (Честно говоря, одна из причин того, что это катастрофа, заключается в том, что наши программисты давно приняли неверное решение полагаться на чувствительность к регистру MySQL в UNIX.) Люди, написавшие установщик Windows MySQL, сделали его действительно удобным Похожа на Windows, и было здорово перейти к тому, чтобы дать людям флажок «Хотите включить строгий режим и сделать MySQL более совместимым со стандартами?» Но для MySQL очень удобно так сильно отличаться от стандарта, а затем усугубить ситуацию, повернувшись и отличаясь от своего фактического стандарта на разных платформах. Я уверен, что в разных дистрибутивах Linux это может усугубиться, поскольку упаковщики для разных дистрибутивов, возможно, иногда включали свои предпочтительные параметры конфигурации MySQL.
Здесь - еще один вопрос SO, который необходимо обсудить, если в РСУБД желательна чувствительность к регистру.