Het maakt op terwijl je typt — je hoeft nergens op te drukken. Je query blijft op deze pagina, er wordt nooit in tekenreeksen of opmerkingen gekeken, en namen houden precies het hoofdlettergebruik dat jij schreef.
Over het opmaken van SQL
SQL komt binnen als één enorme regel. Uit het logboek van een ORM, uit een bugrapport, van iemands klembord. Hij draait prima en is onleesbaar, en het stukje dat je zoekt zit ergens in het midden.
Plak hem erin en hij komt uitgelegd terug — één clausule per regel, kolommen ingesprongen onder SELECT, joins en hun ON-voorwaarden uitgelijnd, zodat de vorm van de query in één oogopslag zichtbaar is.
Hoe je het gebruikt
- Plak je SQL in het linkervak — de opgemaakte, gekleurde versie verschijnt rechts terwijl je typt
- Pas het inspringen, het hoofdlettergebruik van sleutelwoorden en de plaats van de komma's aan als je wilt — het resultaat werkt meteen bij
- Kopieer het, of download het als .sql-bestand
- Zet het op Minifiën om alles weer op één regel te zetten; die stand blijft terwijl je doortypt
Er is geen knop die je moet indrukken om op te maken. De enige twee knoppen die het resultaat
veranderen zijn Opmaken en Minifiën, en die kiezen welke van de twee je bekijkt.
De kleur komt uit dezelfde lezing van de query
De uitvoer wordt gekleurd door dezelfde tokenizer die hem heeft uitgelegd nog eens over de
afgewerkte tekst te laten lopen — sleutelwoorden cyaan, tekenreeksen geel, getallen oranje,
opmerkingen grijs, leestekens roze, en je eigen tabel- en kolomnamen gewoon, zodat ze opvallen
tussen de SQL eromheen.
Dat is meer dan uiterlijk. Omdat één lezing van de query zowel de opmaak als de kleur oplevert,
kunnen die twee elkaar nooit tegenspreken: wat als tekenreeks gekleurd is, is precies wat de
formatter als tekenreeks behandelde. Staat er ergens een aanhalingsteken open, dan loopt de
kleur door en laat hij je zien waar — meestal sneller dan het met het oog zoeken.
Kopiëren en Downloaden geven de kale tekst, nooit de gekleurde opmaak.
Twee dingen waar het voorzichtig mee is
De meeste snelle SQL-formatters werken met reguliere expressies, en juist op deze twee punten valt die aanpak uit elkaar.
- Er wordt nooit in tekenreeksen of opmerkingen gekeken. Een query met WHERE note = 'from a, b' heeft een sleutelwoord, een komma en een spatie binnen een tekstliteral. Een regex-formatter breekt de regel daar af en verandert wat de query doet. Deze leest de query eerst in tokens, zodat de binnenkant van een literal er precies zo uitkomt als hij erin ging — tot de spaties aan toe
- Namen houden het hoofdlettergebruik dat jij schreef. Alleen sleutelwoorden worden omgezet. Op een server die hoofdletters onderscheidt zijn userId en userid verschillende kolommen, en een formatter die ze "netjes maakt" heeft de query gesloopt om hem mooier te laten ogen
Alle aanhalingsstijlen worden begrepen: 'tekenreeksen' met '' als escape, "namen tussen aanhalingstekens", MySQL- backticks , SQL Server-[blokhaken] en PostgreSQL-$$ dollar quoting $$.
De opties
- Inspringen met — 4 spaties, 2 spaties of een tab
- Sleutelwoorden — HOOFDLETTERS, kleine letters, of precies zoals jij ze schreef
- Komma's — aan het eind van de regel, of vooraan aan het begin, als dat jullie huisstijl is
Minifiën
Minifiën perst de query terug tot één regel. Er blijft alleen een spatie staan waar weghalen de betekenis zou veranderen of een nieuw token zou maken, dus het resultaat is zo kort als het veilig kan zijn.
Regelopmerkingen vervallen, omdat -- zoals deze de rest van de regel zou opslokken zodra alles op één regel staat. Blokopmerkingen blijven precies zoals ze geschreven zijn.
Waar mensen het voor gebruiken
- Een query uit een ORM-logboek leesbaar maken
- SQL opschonen voor je het in een pull request of een migratie zet
- Een lange query begrijpen die iemand anders schreef
- Een query uit een bugrapport in een bruikbare vorm krijgen
- Een query op één regel laten passen voor een configuratiebestand of een shell-opdracht
- De stijl van een map met .sql-bestanden gelijktrekken voor het inchecken
Goed om te weten
- Je query blijft op deze pagina — er gaat niets ergens heen. Handig als er echte tabel- en kolomnamen in staan
- Dit legt SQL uit; het controleert niet of het geldig is. Een query met een syntaxfout wordt zo goed mogelijk opgemaakt, niet geweigerd
- Dialectspecifieke aanhalingstekens worden ondersteund, maar er wordt niet tussen dialecten herschreven
- Heel grote query's zijn geen probleem — het is eenvoudig werk op je eigen machine
- Werkt in elke browser, ook op een telefoon
Verwante tools
- JSON-formatter — hetzelfde werk voor JSON
- CSV naar JSON — de gegevens omzetten die de query teruggaf
- Zoeken en vervangen in veel bestanden — een tabelnaam in een hele map .sql-bestanden wijzigen
- Tekstvergelijker — twee versies van een query vergelijken
- Regex-tester — het patroon bouwen voordat je ermee zoekt