Базовые зарезервированные слова SQL. Введение
SQL-языки (SQL-92, PostgreSQL, MySQL, Oracle, SQL Server и др.) имеют свои собственные списки зарезервированных слов, и они отличаются. Полностью универсального списка нет, потому что стандарт SQL определяет одно множество, а конкретные СУБД могут добавлять или изменять его.
Тем не менее, существует ядро зарезервированных слов, которые встречаются во всех основных СУБД и основаны на стандарте ANSI SQL-92/SQL-99. Вот список таких универсальных зарезервированных слов, которые почти наверняка зарезервированы в любой реализации:
Базовые зарезервированные слова SQL
SELECT
FROM
WHERE
GROUP
BY
HAVING
ORDER
INSERT
INTO
VALUES
UPDATE
SET
DELETE
CREATE
ALTER
DROP
TABLE
VIEW
INDEX
PRIMARY
KEY
FOREIGN
REFERENCES
CHECK
CONSTRAINT
NOT
NULL
AND
OR
LIKE
IN
IS
BETWEEN
EXISTS
UNION
ALL
DISTINCT
JOIN
INNER
LEFT
RIGHT
FULL
ON
AS
CASE
WHEN
THEN
ELSE
END
👉 Это можно считать универсальным минимумом — эти слова:
определены в SQL-92 и последующих стандартах,
встречаются во всех популярных СУБД (PostgreSQL, MySQL/MariaDB, Oracle, MS SQL Server, SQLite),
почти всегда зарезервированы и не могут использоваться как идентификаторы без экранирования.
Примеры слов, зарезервированных в PostgreSQL, MySQL, Oracle и SQL Server
Вот список слов, которые с большой степенью уверенности являются зарезервированными во всех четырёх. Не исчерпывающий, но хорошее ядро:
| Слово | Назначение / где используется |
|---|---|
| SELECT | оператор выборки данных |
| FROM | указывает таблицу источника |
| WHERE | фильтр строк |
| INSERT | вставка данных |
| UPDATE | обновление данных |
| DELETE | удаление строк |
| CREATE | создание объектов (таблиц, индексов и т.д.) |
| DROP | удаление объектов |
| ALTER | изменение структуры объекта |
| TABLE | тип объекта таблица |
| VIEW | представление |
| INDEX | индекс |
| PRIMARY | часть определения первичного ключа |
| FOREIGN | часть внешнего ключа |
| REFERENCES | связь внешнего ключа |
| CONSTRAINT | ограничения |
| NOT | логическое отрицание / часть constraint |
| NULL | специальное значение “нет значения” |
| AND | логическое «и» |
| OR | логическое «или» |
| LIKE | оператор сравнения шаблона |
| IN | оператор множества / списка |
| IS | используется с NULL и др. |
| BETWEEN | диапазонное сравнение |
| EXISTS | проверка на существование подзапроса |
| UNION | объединение результатов выборок |
| ALL | квантор / используется в UNION ALL и др. |
| DISTINCT | уникальные значения |
| JOIN | объединение таблиц |
| INNER | внутреннее соединение |
| LEFT | левое соединение |
| RIGHT | правое соединение |
| FULL | полное соединение (FULL JOIN) |
| ON | условие соединения |
| AS | псевдонимы / алиасы |
| CASE | условный оператор |
| WHEN | часть конструкции CASE |
| THEN | часть конструкции CASE |
| ELSE | часть конструкции CASE |
| END | завершение конструкции CASE или BEGIN-END и др. |
Возможные вариации и оговорки
В разных версиях СУБД могут отличаться детали: например, слово может быть “зарезервировано всегда” или “зарезервировано только в определённых контекстах”.
Некоторые СУБД допускают использование зарезервированных слов как идентификаторов, если они заключены в кавычки или другие ограничения.
Есть слова, которые в одних СУБД зарезервированы, а в других — нет, или они “ключевые, но не полностью зарезервированы”.
Заключение
SQL постоянно развивается, появляются новые реализации, в действующих реализациях добавляются новые слова и конструкции, но ядровые слова, приведенные выше в данной статье, были и остаются основой любой реализации.