Работа со служебными словами в именах таблиц SQL Server
Быстрый ответ
Чтобы присвоить таблицам имена, соответствующие зарезервированным ключевым словам в MS SQL Server, окружите эти слова двойными кавычками или квадратными скобками, например:
CREATE TABLE "Table" (
"Column" INT
);
или
CREATE TABLE [Table] (
[Column] INT
);
Использование скобок или кавычек будет восприниматься сервером как идентификаторы, а не как зарезервированные слова.
Стратегии противодействия конфликтам
Чтобы минимизировать риски конфликтов, придерживайтесь следующих стратегий:
- Избегайте использования зарезервированных слов: Перед назначением имени таблице ознакомьтесь со списками зарезервированных ключевых слов.
- Придавайте имена, соответствующие контексту: Называйте таблицы так, чтобы их имена отражали их содержание, например
EmployeeData
илиProductDetails
. - Добавляйте префиксы или суффиксы: Добавление префиксов (например,
tblTable
) или суффиксов (TableTbl
) позволит отличить имена, заданные пользователем, от зарезервированных и предотвратить путаницу в SQL Server.
Определение зарезервированных ключевых слов
Перед тем как рискнуть, необходимо узнать своего противника:
- Используйте SQL Server Management Studio (SSMS): оно подсвечивает зарезервированные ключевые слова розовым цветом, предупреждая о возможных конфликтах.
- Обращайтесь к официальной документации для получения актуального списка ключевых слов, учитывая, что с выпуском каждой новой версии SQL Server этот список может расширяться.
Использование зарезервированных слов в запросах
Если вы используете зарезервированные имена в ваших запросах, не забудьте о правилах экранирования:
SELECT * FROM [User];
--💡 Не забудьте окружать имена скобками!
Если вы пропустите этот шаг, SQL Server сгенерирует ошибку, так как не сможет корректно обработать запрос.
Визуализация
Представьте зарезервированные ключевые слова как VIP-сектор: [SELECT, INSERT, TABLE, USER], на которые без специального разрешения "сесть" нельзя. С использованием наших методов вы сможете безопасно занять "резерв":
CREATE TABLE "[TABLE]" (id INT);
Таким образом, место занято: [SELECT, INSERT, 🙋♂️"TABLE", USER].
Почему использование зарезервированных слов может вызвать проблемы
Несмотря на техническую возможность, использование зарезервированных слов в качестве идентификаторов может запутать не только вашу систему, но также коллег, которые будут работать с ней после вас.
Лучшие практики именования таблиц
При проектировании баз данных следуйте следующим правилам:
- Согласованность: Единообразие в именовании упрощает чтение и поддержку базы данных.
- Планирование на будущее: Избегайте использования слов, которые сегодня ещё не зарезервированы, но могут стать таковыми в будущих версиях.
- Учёт переносимости: Если предусматривается миграция на другие SQL-системы, отказ от использования зарезервированных слов облегчит процесс.
За пределами словарного запаса: Альтернативы зарезервированным названиям
Не допускайте предупреждений от SSMS, замените названия на подходящие альтернативы:
- Вместо 'User' используйте
UserList
. - 'Order' замените на
OrderDetails
. - А если вам нравится 'Role', замените его на
RoleClass
.
Такие альтернативы предотвращают конфликты и добавляют креативности в дизайн ваших схем.
Полезные материалы
- Зарезервированные ключевые слова (Transact-SQL) – SQL Server | Microsoft Learn — последний актуальный список зарезервированных ключевых слов в SQL Server.
- SET QUOTED_IDENTIFIER (Transact-SQL) – SQL Server | Microsoft Learn — информация об использовании ограниченных идентификаторов в SQL Server.
- Как мне игнорировать амперсанды в скрипте SQL, запущенном из SQL Plus? – Stack Overflow — подробное объяснение работы с зарезервированными словами в SQL.
- Руководство стиля SQL от Simon Holywell — советы по избежанию использования зарезервированных слов.