SQL-opmaker
Plak een SQL-query en krijg deze herformatteerd met elke clausule (SELECT, FROM, WHERE, JOIN, GROUP BY…) op zijn eigen ingesprongen regel.
1.134 weergaven
Hoe het werkt
Een lange SQL-query die op één regel is geschreven, is moeilijk te doorzoeken op structuur — waar eindigt de WHERE-clausule en begint de GROUP BY, welke JOIN hoort bij welke tabel? Deze tool neemt ruwe SQL en breekt die op elke belangrijke clausulegrens op in aparte regels: SELECT, FROM, WHERE, de hele JOIN-familie (INNER JOIN, LEFT JOIN, RIGHT JOIN…), GROUP BY, ORDER BY, HAVING en UNION. Voorwaarden die met AND/OR aan elkaar hangen, en join-voorwaarden na ON, worden één niveau ingesprongen onder de clausule waarbij ze horen, en trefwoorden kunnen optioneel in hoofdletters worden gezet voor consistentie. Een query zoals select id,name from users where active=1 and role='admin' order by name wordt een blok waarin SELECT, FROM, WHERE en ORDER BY elk hun eigen regel beginnen en de AND-voorwaarde onder WHERE is ingesprongen — dezelfde informatie, alleen ingedeeld zoals ze met de hand zou worden geschreven bij een codereview.
Dit doet er het meest toe precies waar het met de hand het moeilijkst is: query's met meerdere gekoppelde tabellen, een subquery verstopt in een WHERE-clausule, of een CASE-expressie met meerdere vertakkingen. Consistente inspringing is wat een reviewer in staat stelt een ontbrekende join-voorwaarde of een verkeerd geplaatst haakje in één oogopslag te zien in plaats van teken voor teken te lezen.
Wat u moet weten
Dit is een opmaker, geen validator — hij herschikt alleen witruimte en regelafbrekingen rond een vaste set trefwoorden die hij herkent; hij ontleedt de query nooit tot een syntaxboom en voert hem nooit uit tegen een database. Een echt dialectbewuste validator zou voor elke SQL-variant een volledige parser nodig hebben, omdat MySQL, PostgreSQL, SQL Server en SQLite allemaal verschillen op details als het aanhalen van identifiers, datumfuncties, en zelfs welke instructies geldig zijn — een oppervlakkige controle aan de browserzijde die doet alsof hij dat allemaal valideert, zou alleen vals vertrouwen opleveren. Als de opgemaakte uitvoer er vreemd uitziet, betekent dit meestal dat de invoer al een typefout of ongebalanceerd haakje bevatte; de tool formatteert eromheen in plaats van het te signaleren.
Omdat de tool puur op tekstindeling opereert, is het veilig om deze op productiequery's te draaien: identifiers, stringliteralen, numerieke waarden en operatoren worden nooit herschreven, toegevoegd of verwijderd — alleen de witruimte verandert, plus optioneel de hoofdletters van trefwoorden. Er wordt niets ergens naartoe gestuurd of uitgevoerd; de query verlaat de browser nooit.
Veelgestelde vragen
Vertelt dit me of mijn SQL correct is?
Nee — bewust niet. Echte SQL-validatie hangt af van welke database u target (MySQL, PostgreSQL, SQL Server hebben allemaal verschillende syntaxiseigenaardigheden), en een lichte browser-tool kan dat niet eerlijk doen. Dit reformatteert alleen de layout, het beweert nooit dat uw query geldig of ongeldig is.
Breekt dit mijn query?
Nee — het voegt alleen regelafbrekingen en inspringing toe, en zet optioneel trefwoorden in hoofdletters. De SQL-tekst zelf (identifiers, waarden, operators) wordt nooit gewijzigd.
Kan ik dit gebruiken voor elk SQL-dialect (MySQL, PostgreSQL, SQL Server)?
Ja, op het niveau van de opmaak — de clausule-trefwoorden die deze opmaker herkent (SELECT, FROM, WHERE, JOIN, GROUP BY, enzovoort) zijn vrijwel universeel voor elk SQL-dialect. Wat de tool niet doet, is dialectspecifieke syntax, functies of aanhalingsregels valideren; die verschillen genoeg tussen engines dat alleen het daadwerkelijk uitvoeren van de query tegen de echte database de juistheid kan bevestigen.
Wat gebeurt er met subquery's of CTE's?
Geneste SELECT-instructies en WITH-blokken (common table expressions) worden recursief opgemaakt volgens dezelfde regels voor het opbreken van clausules, zodat een innerlijke query zijn eigen ingesprongen structuur krijgt binnen de buitenste — en dat is precies waar opmaak het meeste helpt, omdat diep geneste query's het moeilijkst als één regel te lezen zijn.
Verandert het opmaken het gedrag van mijn query?
Nee. Alleen witruimte, regelafbrekingen en optioneel de hoofdletters van trefwoorden worden aangepast. Elke identifier, literal, vergelijking en operator blijft precies zoals geschreven, dus de opgemaakte query is functioneel identiek aan het origineel — ze levert in beide gevallen dezelfde resultaatset op.
Vergelijkbare tools
Probleem melden
SQL-opmaker
Reacties
Nog geen reacties — schrijf de eerste!