Utilia

SQL форматиране

Форматирайте SQL заявки за PostgreSQL, MySQL, SQL Server, Oracle, BigQuery, Snowflake и още, с избор на регистър на ключовите думи и отстъп, във вашия браузър.

Как да форматирате SQL заявка

  1. Поставете една или повече заявки или щракнете върху Отвори файл, за да заредите файл .sql (до 10 МБ).
  2. Изберете Диалект на вашата база данни, например PostgreSQL, MySQL или SQL Server (T-SQL).
  3. Изберете как да се пишат Ключови думи (ГЛАВНИ БУКВИ, малки букви или Както са въведени) и Отстъп.
  4. Отметнете Без интервали около операторите, ако предпочитате a=b+1 пред a = b + 1.
  5. Щракнете върху Форматирай SQL, после копирайте или изтеглете резултата. Промяната на опция форматира заявката отново.

Заявката само се преформатира като текст. Тя никога не се изпълнява и никога не се изпраща към база данни или сървър.

Какво прави форматерът

Инструментът използва библиотеката с отворен код sql-formatter. Тя разделя всеки израз на клаузи и поставя всяка ключова дума на клауза (SELECT, FROM, WHERE, GROUP BY, ORDER BY…) на отделен ред, като съдържанието на клаузата е с отстъп под нея. Колоните в списъка на SELECT се поставят по една на ред, условията с AND и OR започват нови редове, а подзаявките и изразите CASE са с отстъп според нивото на влагане. Кратките изрази в скоби остават на един ред. Няколко израза, разделени с точка и запетая, се отделят с празен ред.

Променят се само интервалите и регистърът на буквите. Низовите литерали, идентификаторите в кавички и коментарите се запазват точно, така че форматираната заявка връща същия резултат като оригиналната.

Защо диалектът има значение

SQL базите данни споделят основния език, но се различават в детайлите, а форматерът трябва да ги познава, за да прочете заявката правилно:

  • идентификаторите се поставят в "двойни кавички" в стандартния SQL и PostgreSQL, в `обратни апострофи` в MySQL, MariaDB и BigQuery и в [квадратни скоби] в SQL Server;
  • оператори като ->> и преобразуванията :: в PostgreSQL или достъпът до път с : в Snowflake съществуват само в някои диалекти;
  • заместителите на параметри се различават: ?, $1, :name или @name;
  • всеки диалект има свои запазени думи и функции, които опцията Ключови думи променя.

Ако получите „Заявката не може да се анализира“, първо проверете дали избраният диалект съвпада с вашата база данни. Грешката показва реда и колоната, където анализът е спрял. Стандартен SQL е най-ограничителният избор; избирайте действителната си база данни, когато е възможно.

Регистър на ключовите думи и съвети за стил

Ключовите думи с главни букви остават най-разпространената конвенция, защото отделят езика от имената на таблици и колони с един поглед. Малките букви са популярни в екипи, които ги намират за по-лесни за четене, а Както са въведени оставя вашия избор непроменен. Имената на таблици, колони и функции никога не се променят: само запазените ключови думи следват опцията. При дълги файлове последователното форматиране прави и разликите между версиите много по-лесни за преглед.

Често задавани въпроси

Кои диалекти се поддържат?

Стандартен SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle (PL/SQL), Google BigQuery, Snowflake, Amazon Redshift, IBM Db2, Db2 for i, Apache Hive, Spark SQL, Trino/Presto, DuckDB, ClickHouse, SingleStoreDB, TiDB и Couchbase N1QL.

Проверява ли инструментът дали заявката ми е валидна?

Не. Той проверява дали заявката може да се прочете в избрания диалект, но не и дали таблиците или колоните съществуват, или дали заявката ще се изпълни. Това може да потвърди само вашата база данни.

Може ли да форматира съхранени процедури?

Отчасти. Изразите в процедурите се форматират, но процедурните блокове (BEGIN … END, цикли, DECLARE) се подреждат по-просто, отколкото в специализирана среда за разработка.

Изпраща ли се заявката ми на сървър?

Не. Форматирането се изпълнява във вашия браузър, така че заявки с имена на таблици или данни остават на вашия компютър.

Защо коментарът ми е на друго място?

Коментарите се запазват, но коментар в края на ред може да се премести заедно с елемента, който следва, когато този елемент отиде на нов ред.