Как пользоваться: Проверка синтаксиса PostgreSQL
- Выберите диалект базы данных (MySQL, PostgreSQL, SQL Server, SQLite, BigQuery и другие).
- Вставьте или откройте свой SQL. Несколько инструкций, разделённых точкой с запятой, допустимы.
- Ошибки показывают строку, столбец и ожидаемые токены, а проблемное место выделяется.
- Корректные инструкции выводятся с их типом и затрагиваемыми таблицами, а также с предупреждениями о рискованных конструкциях.
Что проверяет валидатор SQL?
Валидатор SQL (или проверка синтаксиса) разбирает ваш запрос по грамматике конкретной базы данных и сообщает, корректно ли он составлен: сбалансированы ли скобки, идут ли ключевые слова в правильном порядке, верны ли выражения, стоят ли запятые между столбцами и так далее. Инструмент разбивает скрипт на инструкции и разбирает каждую отдельно, так что вы видите все ошибочные инструкции сразу и получаете строку и столбец, где разбор остановился. По умолчанию выбрана грамматика PostgreSQL.
Предупреждения о лучших практиках
| Предупреждение | Почему это важно |
|---|---|
UPDATE / DELETE без WHERE | Изменяет каждую строку таблицы — обычно это ошибка. |
SELECT * | Извлекает столбцы, которые могут не понадобиться, и ломается при добавлении или перестановке столбцов. |
INSERT без списка столбцов | Зависит от порядка столбцов; добавление столбца ломает запрос. |
LIKE '%…' | Ведущий шаблон не может использовать обычный индекс и приводит к полному сканированию таблицы. |
= NULL | Никогда не истинно; используйте IS NULL. |
ORDER BY без LIMIT в подзапросе или LIMIT без ORDER BY | Порядок строк не гарантирован без явной сортировки. |
Различия диалектов, которые вызывают ошибки
- Кавычки для идентификаторов — MySQL и MariaDB используют обратные кавычки (
`order`), PostgreSQL, SQLite и стандарт SQL используют двойные кавычки, SQL Server использует квадратные скобки ([order]). - Ограничение количества строк —
LIMIT 10в MySQL, PostgreSQL и SQLite;TOP 10илиOFFSET … FETCHв SQL Server. - Upsert —
ON DUPLICATE KEY UPDATE(MySQL),ON CONFLICT … DO UPDATE(PostgreSQL, SQLite) иMERGE(SQL Server, Snowflake, BigQuery). - Приведение типов — PostgreSQL принимает
value::int; большинству других СУБД нужна конструкцияCAST(value AS INT).
Частые синтаксические ошибки PostgreSQL
PostgreSQL выдаёт сообщение «syntax error at or near …» с токеном, на котором остановился разбор. Типичные причины: обратные кавычки, скопированные из MySQL (используйте двойные кавычки), двойные кавычки вокруг строковых значений (используйте одинарные, так как двойные обозначают идентификаторы), конструкция LIMIT x, y (в Postgres нужно LIMIT y OFFSET x) и пропущенная запятая в списке столбцов.
Сделать запрос читаемым поможет форматировщик SQL, генерировать инструкции из данных можно с помощью CSV в SQL или JSON в SQL, а проектировать таблицы — с генератором CREATE TABLE.
Также ищут как: проверить синтаксис sql postgres, ошибка синтаксиса psql, линтер postgres, валидатор sql postgres, syntax checker postgresql.
Инструменты, которые хорошо сочетаются с Проверка синтаксиса PostgreSQL
- SQL валидатор — Вставьте один запрос или весь скрипт, чтобы проверить синтаксис по грамматике вашей базы данных.
- Проверка синтаксиса MySQL — Проверьте SQL-запросы MySQL перед запуском.
- Excel в JSON — Откройте книгу .xlsx или вставьте ячейки прямо из Excel или Google Sheets и получите чистый JSON.
- JSON в Excel — Превратите JSON-массив в настоящую книгу Excel.
Часто задаваемые вопросы
Мой SQL отправляется на сервер или в базу данных?
Означает ли корректный результат, что запрос выполнится?
Почему ошибка указывает на место после моей ошибки?
WHER, часто воспринимается как псевдоним, поэтому ошибка появляется на следующем слове. Проверьте также токен непосредственно перед отмеченной позицией.