ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Стандарт эскейпинга имен колонок SQL: MySQL, SQLite, MS SQL

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

В стандартах SQL имена столбцов обычно окружаются двойными кавычками ("). Их использование необходимо, когда речь идет о зарезервированных словах или именах столбцов, содержащих специальные символы.

SQL
Скопировать код
SELECT "order", "user"
FROM "data";

Отметим, что различные системы управления базами данных предпочитают использовать свои знаки. Например, в MySQL используются обратные кавычки (`), а SQL Server предпочитает квадратные скобки (`). Прежде чем приступить к использованию, стоит ознакомиться с документацией выбранной СУБД.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Рассмотрим более подробно разграничители идентификаторов SQL

Когда вы работаете с несколькими СУБД, вам следует учитывать их особенности. Согласно стандарту SQL:1999, имена столбцов должны обозначаться двойными кавычками ("), однако в реальности каждая система управления базами имеет свои особенности.

Разграничители идентификаторов, специфичные для разных СУБД

  • MySQL: по умолчанию привычнее использовать обратные кавычки ( ), но возможно и использование двойных кавычек, если активирован режим ANSI_QUOTES.
  • SQL Server: предпочитает использование квадратных скобок ([ ]), но при включении параметра QUOTED_IDENTIFIER поддерживает и двойные кавычки.
  • SQLite: полностью соответствует стандарту, признавая двойные кавычки.
  • Oracle и PostgreSQL: также, как и SQLite, они следуют стандарту и используют двойные кавычки без необходимости в дополнительной настройке.

Написание универсальных запросов

Когда вы работаете с множеством СУБД, необходимо узнавать и применять специфические для каждой системы разграничители идентификаторов, чтобы запросы работали корректно.

Визуализация

Базу данных SQL можно сравнить с музеем искусства: таблицы – это произведения искусства, а столбцы – объекты, которые они содержат:

Markdown
Скопировать код
Художественная галерея 🖼️: | Произведение искусства (Таблица) |
                             |----------------------------------|
                             | Объект_А (Столбец)               |
                             | Объект_2_с_рамкой (Столбец) | <<< именно эта "рамка" символизирует экранирование
                             | Объект#3 (Столбец)               |

Экранирование обозначает для SQL-движка, что имя столбца должно быть интерпретировано буквально, как отдельный элемент, а не как часть SQL-команды.

SQL
Скопировать код
SELECT "Объект_2_с_рамкой" FROM "Произведение искусства";

Подробная информация о разграничителях идентификаторов в SQL

Правила использования разграничителей

Соблюдение правил экранирования значительно снижает вероятность возникновения SQL-ошибок и облегчает совместимость между различными СУБД.

В каких случаях следует экранировать имена?

  1. Зарезервированные слова: Если идентификатор совпадает с ключевым словом SQL, необходимо использовать экранирование, чтобы избежать путаницы.
  2. Специальные символы: При использовании в идентификаторах пробелов, знаков пунктуации и других символов требуется экранирование.
  3. Смешение регистров: В некоторых СУБД, включая PostgreSQL, регистр неквотированных имен влияет на то, как они интерпретируются.

Нестандартные символы – внимание к деталям

Идентификаторы, содержащие нестандартные символы, требуют особого подхода к экранированию для корректной работы SQL-запросов.

Сравнение практик экранирования в разных СУБД

Представим примеры корректного экранирования идентификаторов в некоторых наиболее известных СУБД. Запомните, что последовательность и правильность в SQL всегда важны.

  • MySQL (с режимом ANSI_QUOTES):
    sql SELECT "order", "user" FROM "data";
  • PostgreSQL и Oracle:
    sql SELECT "order", "user" FROM "data";
  • SQL Server:
    sql SELECT [order], [user] FROM [data];

Пишите свой код ответственно, чтобы запросы были понятными и легкими для поддержки.

Полезные материалы

Данный раздел содержит ссылки на документацию с информацией о стандартах наименования, которые специфичны для различных СУБД. Это весьма полезно для разработчиков, работающих с несколькими SQL-системами на постоянной основе.