/sql

SQL-formatter: rydd opp og innrykk SQL

Formater og rydd opp SQL-spørringer med innrykk og store nøkkelord, for flere dialekter. Alt skjer lokalt.

Slik fungerer det

Lim inn en SQL-spørring og få den ryddig formatert med innrykk, linjeskift og store nøkkelord. Velg dialekt (standard SQL, PostgreSQL, MySQL, SQLite, T-SQL m.fl.) for riktig håndtering av syntaks. Alt formateres lokalt i nettleseren, ingenting sendes noe sted.

Om dette verktøyet

SQL-formatereren tar SQL-koden din, som ofte kommer som én lang linje fra et loggutdrag eller kopiert fra en ORM, og gjør den lesbar med innrykk, linjeskift og nøkkelord i store bokstaver. Nyttig når du skal forstå en query fra produksjonsloggen, dele en spørring i en pull request, eller lage penere migrasjonsfiler. Verktøyet støtter de vanligste dialektene: PostgreSQL, MySQL, MariaDB, SQL Server (T-SQL), Oracle PL/SQL og SQLite. Alt kjøres i nettleseren, ingen queries sendes til en server, du kan trygt formatere spørringer som inneholder produksjonsdata eller sensitive kolonnenavn.

Slik bruker du det

  1. Lim inn SQL-koden i tekstfeltet.
  2. Velg dialekt fra rullegardinmenyen for best resultat på funksjonsnavn og reserverte ord.
  3. Formatert kode vises umiddelbart i «pretty»-panelet.
  4. Trykk «Kopier» eller «Last ned» for å bruke resultatet i editoren din.

Eksempler

SELECT med JOIN
Innselect u.id, u.name, o.total from users u left join orders o on o.user_id=u.id where u.active=true order by o.total desc
UtSELECT u.id, u.name, o.total FROM users u LEFT JOIN orders o ON o.user_id = u.id WHERE u.active = TRUE ORDER BY o.total DESC
INSERT ... VALUES
Inninsert into orders(user_id,total,created_at) values (1,299.50,now()),(2,150.00,now())
UtINSERT INTO orders (user_id, total, created_at) VALUES (1, 299.50, NOW()), (2, 150.00, NOW())
Rader i VALUES-listen brytes automatisk til hver sin linje for lesbarhet.

Vanlige bruksområder

  • Rydde queries fra Slow-log før du limer dem inn i EXPLAIN ANALYZE.
  • Sende lesbare spørringer i kodegjennomgang og pull requests.
  • Skrive migrasjonsfiler som er trivielle å diffe over tid.
  • Forstå SQL generert av ORM som Sequelize, Prisma, TypeORM eller Django.
  • Undervise SQL for nybegynnere ved å vise korrekt innrykk automatisk.

Ofte stilte spørsmål

Endrer verktøyet oppførselen til queryen?
Nei. Bare whitespace og bokstavstørrelse på nøkkelord endres, ingen semantikk berøres. Kommentarer bevares.
Kan jeg minifisere istedenfor?
Ja. Bytt til «kompakt»-modus i verktøylinjen, alle linjeskift og duplikate mellomrom fjernes. Nyttig når du skal legge queryen i en JSON- eller YAML-fil.
Kjøres queryen mot en database?
Aldri. Verktøyet gjør bare tekstformatering. Ingenting sendes til en server, og ingen database berøres. Trygt selv med sensitive spørringer.
Kan jeg beholde nøkkelord i små bokstaver?
Ja, sett «Nøkkelord: lowercase» i innstillingene. Noen kodestandarder foretrekker små bokstaver (Postgres-stil) mens andre foretrekker store (Oracle-stil). Verktøyet støtter begge.

Teknisk bakgrunn

SQL-standarden (ISO/IEC 9075) definerer en felles kjerne, men hver database har sine egne utvidelser: PostgreSQL har «::»-typecast, «RETURNING»-klausul og «ILIKE», MySQL har «LIMIT ... OFFSET» og backtick-siterte identifikatorer, T-SQL har «TOP N», «MERGE» og hakeparenteser [dbo].[tabell], Oracle har PL/SQL, hierarkiske queries med CONNECT BY, og «DUAL»-tabellen, SQLite har begrenset ALTER TABLE og fleksible typer. Formatereren bruker en tokenizer som deler koden i nøkkelord, identifikatorer, literaler, kommentarer og whitespace, og deretter en pretty-printer som legger inn linjeskift og innrykk basert på grammatikk-regler for hver klausul (SELECT, FROM, WHERE, GROUP BY osv.). Reserverte ord løftes til store bokstaver (eller små, hvis konfigurert), mens brukerdefinerte identifikatorer (tabell- og kolonnenavn) bevares slik de er. Kommentarer, både -- linjekommentarer og /* blokk */ bevares på samme relative posisjon. For komplekse CTE, vinduer og PIVOT anbefales det å velge riktig dialekt for best mulig formatering.