Как пользоваться: Проверка синтаксиса MySQL
- Выберите диалект базы данных (MySQL, PostgreSQL, SQL Server, SQLite, BigQuery и другие).
- Вставьте или откройте SQL-код. Несколько операторов, разделённых точкой с запятой, тоже подойдут.
- Ошибки показывают строку, столбец и ожидаемые токены, а проблемное место выделено.
- Корректные операторы выводятся с их типом и затрагиваемыми таблицами, а рискованные конструкции сопровождаются предупреждениями.
Что проверяет валидатор SQL?
Валидатор SQL (или проверка синтаксиса) разбирает запрос по грамматике конкретной СУБД и сообщает, корректно ли он составлен: сбалансированы ли скобки, стоят ли ключевые слова в правильном порядке, верны ли выражения, есть ли запятые между столбцами и так далее. Этот инструмент делит скрипт на операторы, разбирает каждый отдельно, чтобы вы сразу видели все ошибочные операторы, и указывает строку и столбец, где разбор остановился. По умолчанию выбрана грамматика MySQL.
Предупреждения о лучших практиках
| Предупреждение | Почему это важно |
|---|---|
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).
Частые синтаксические ошибки MySQL
Сообщение MySQL «You have an error in your SQL syntax… near '…' at line 1» приводит текст с места, где разбор не удался. Частые причины: зарезервированные слова в качестве имён (order, group, key — заключите их в обратные кавычки), лишняя запятая перед FROM, двойные кавычки для идентификаторов (MySQL считает их строками, если не включён режим ANSI_QUOTES) и пропущенная запятая между столбцами.
Сделайте запрос читаемым с помощью SQL-форматировщика, генерируйте операторы из данных с помощью CSV в SQL или JSON в SQL, а таблицы проектируйте с помощью генератора CREATE TABLE.
Также ищут как: проверить синтаксис sql онлайн, mysql syntax checker, синтаксис mariadb, проверка sql запроса.
Инструменты, которые хорошо сочетаются с Проверка синтаксиса MySQL
- SQL валидатор — Вставьте один запрос или весь скрипт, чтобы проверить синтаксис по грамматике вашей базы данных.
- Проверка синтаксиса PostgreSQL — Проверяйте запросы PostgreSQL прямо в браузере.
- Excel в JSON — Откройте книгу .xlsx или вставьте ячейки прямо из Excel или Google Sheets и получите чистый JSON.
- JSON в Excel — Превратите JSON-массив в настоящую книгу Excel.
Часто задаваемые вопросы
Мой SQL отправляется на сервер или в базу данных?
Означает ли успешная проверка, что запрос выполнится?
Почему ошибка указывает на место после моей опечатки?
WHER, часто воспринимается как псевдоним, поэтому ошибка появляется на следующем слове. Проверьте также токен непосредственно перед отмеченным местом.