SQL ist seit 1987 standardisiert und wird als beibehalten ISO/IEC 9075Allerdings fügt jede Engine oben ihren eigenen Dialekt hinzu - genau aus diesem Grund muss ein Formatierer analysieren und nicht Muster übereinstimmen.
Die schlimmste Frage, die ich je überprüfen musste, waren 340 Zeilen in einem einzigen logischen Gedanken: Ein Umsatzbericht für eine Laravel SaaS, geschrieben als eine DB::select() Raw String, über acht Monate von drei Entwicklern aufgebaut, die jeweils eine andere Vorstellung von der Kapitalisierung hatten und keine von Zeilenumbrüchen. irgendwo in dieser Textwand, a LEFT JOIN war leise ein geworden INNER JOIN Während eines Refaktors verschwanden Kunden mit null Aufträgen aus dem BerichtDer Fehler bestand aus einem Wort. Es dauerte anderthalb Tage, es zu finden - nicht weil die Logik hart war, sondern weil die Abfrage schwierig war schwer zu lesenund unleserlicher Code verbirgt seine Fehler in der Sicht.
Hier ist die Sache mit SQL: Die Datenbank kümmert sich nicht um Ihre Formatierung. Der Parser liest select id,name from users where active=1 und SELECT id, name FROM users WHERE active = 1 Als gleiche Anweisung, erzeugt den gleichen Ausführungsplan, gibt die gleichen Zeilen in der gleichen Zeit zurück Formatieren SQL ist rein für Menschen - genau deshalb it' s lohnt es sich, zu tun, denn Menschen sind diejenigen, die es überprüfen, um 2 AM debuggen, und erben es drei Jobs später Eine Abfrage, die Sie können ' t überfliegen ist eine Abfrage, die Sie können 't überprüfen.
ein SQL-Formater Wandelt jede Abfrage - eingefügt aus einem Protokoll, einer ORM' s-Debug-Ausgabe, einer Coworker' s-Slack-Nachricht, einer alten gespeicherten Prozedur - in konsequent eingerücktes, konsequent ummanteltes, überprüfbares SQL mit einem Klick um Die auf Toolz.dev läuft vollständig in Ihrem Browser, was für SQL wichtiger ist als für fast jeden anderen Text, den Sie & #39; d in ein Online-Tool einfügen, da Produktionsabfragen Ihr Schema und manchmal auch Ihre Daten enthalten.
Dieser Leitfaden behandelt die Verwendung der Formatierungskonventionen (Schlüsselworthülle, Einrückung und den ewigen Kommakrieg) und die Workflows, in denen sich ein Formatierer täglich bezahlt.
tl; dr: Fügen Sie jede Abfrage in die Toolz.dev SQL-Formater Und erhalten Sie wieder konsequent eingerückt, Keyword-cased SQL - sofort, kostenlos, Client-Seite, kein Signup Formatieren ändert nie, was eine Abfrage macht oder wie schnell sie läuft; es ändert sich, ob ein Mensch sie überprüfen kann Konventionen, die es wert sind, übernommen zu werden: Großbuchstaben-Keywords, eine Klausel pro Zeile, unter jeder Klausel einrücken, einen Kommastil auswählen und aufhören, darüber zu streiten Kombinieren Sie es mit dem JSON-Formater für die API-Layer über Ihrer Datenbank und die Text-Diff-Tool Zum Vergleichen von zwei Versionen einer Abfrage.
Hauptmerkmale
Ein-Klick-Konsistente Einbuchtung
Der Formatierer's Kernzug: jede Hauptklausel - SELECT, FROM, WHERE, GROUP BY, ORDER BY - startet eine eigene Zeile mit Spalten, Bedingungen und eingerückten Verknüpfungen darunter Dies ist die & quot; river" Struktur erfahrene SQL-Leser scannen nach: Das Auge läuft über die Schlüsselwörter der Leseklausel am linken Rand und taucht dann in die Klausel ein, auf die es ankommt. Eine 60-zeilige formatierte Abfrage mit klaren Strukturüberprüfungen schneller Als eine 6-zeilige unformatierte, denn die Struktur macht für euch die halbe Lektüre Meine 340-zeilige Horrorgeschichte wäre eine zwanzigminütige Rezension mit dieser Form gewesen - der veränderte Jointyp hätte allein auf einer eigenen Linie gesessen, sichtlich falsch.
Keyword-Fall-Norm
SELECT gegen select Ist wirklich & #39; egal für jede Datenbank - SQL-Keywords sind case-insensitive gemäß dem Standard, und jeder Dialekt ehrt das Es ist enorm wichtig für eine Codebasis, aber, weil gemischte Gehäuse ist visuelles Rauschen, das strukturell identische Abfragen anders aussehen lässt Großbuchstaben sind die ältere Konvention, datieren von Editoren ohne Syntaxhervorhebung, wo SELECT in Kappen war Die Hervorhebung Ich schreibe immer noch Großbuchstaben - Schlüsselwörter springen gegen Kleinbuchstaben-Identifikatoren, und es überlebt jeden Kontext, der die Hervorhebung streift: Protokolle, Diffs, Klartext-E-Mail, Terminal-Ausgabe Der Formatierer normalisiert sich auf die von Ihnen gewählte Konvention, sodass eine Codebasis, die von fünf Personen geschrieben wurde, so liest, als wäre sie von einem geschrieben worden.
Hilft ORM- und Protokollausgabe
Die am dringendsten benötigten Abfragen sind diejenigen, die kein Mensch geschrieben hat: Eloquente und ActiveRecord-Ausgabe, Doktrin-generierte Joins, die einzeiligen Monster in Ihrem Slow-Query-Protokoll. ORM-Ausgabe kommt als eine Linie mit maschinengenerierten Aliase (t0, t1, laravel_reserved_0), und wenn man es roh liest, bekommt man Kopfschmerzen. Meine häufigste Verwendung des Formatierers: Nehmen Sie die Abfrage von Laravel's Abfrageprotokoll oder Teleskop, formatieren Sie es und sehen Sie tatsächlich, wofür sich das ORM entschieden hat - was der erste Schritt von jedem & quot; ist. Warum ist dieser Endpunkt langsam" Untersuchung, kurz zuvor EXPLAINdrohen
Multi-Dialekt-Toleranz
Real-World SQL ist eine Dialektfamilie: MySQL-Zitiertes backtick-zitierter Identifier, PostgreSQL-Doppelzitate und :: Casts, SQL Server-Platzhalter und TOP, SQLite ist alles locker. Ein nützlicher Formatierer verarbeitet alle, ohne dass Sie dazu zwingen müssen, dass Sie zuerst einen Dialekt deklarieren, wobei die dialektspezifische Syntax erhalten bleibt, anstatt "korrigieren" zu müssen. Der ANSI/ISO-SQL-Standard (ISO/IEC 9075) definiert den Common Core, aber niemand schreibt reines Standard-SQL in der Praxis und ein Formatierer, der nur den Standard spricht, würde beim ersten Backtick ersticken.
Bewahrt die Semantik, garantiert
Es lohnt sich, es explizit anzugeben, weil es & #39; die Angst, die Menschen aufhält: Formatierung kann keine Ergebnisse ändern Leerzeichen und Schlüsselwortfall sind in SQL nicht semantisch - der einzige historische Vorbehalt ist, dass String Literale werden abhängig von Ihrer Sortierung verglichen oder nicht, und ein Formatierer berührt niemals das Innere Ihrer zitierten Zeichenfolgen. Die Ausgabe ist die gleiche Anweisung, Byte-for-Byte, wo Bytes wichtig sind. EXPLAIN Auf beiden Versionen, wenn Sie es sehen möchten: Identische Pläne.
Client-Seite, was hier eigentlich zählt
SQL ist die sensibelste Textkategorie, die routinemäßig in Online-Tools eingefügt wird. Abfragen enthüllen Ihr Schema - Tabellennamen, Spaltennamen, Beziehungen - und aus Protokollen kopierte Abfragen enthalten häufig wörtliche Werte: E-Mails in WHERE Klauseln, ID-Bereiche, gelegentlich etwas, das niemals in einer Abfragezeichenfolge hätte sein dürfen. der Toolz.dev-Formater Verarbeitet alles in Ihrem Browser; nichts wird übertragen Für SQL speziell ruft I & #39; d clientseitige Verarbeitung als Anforderung, nicht als Funktion auf - verifizieren Sie sie im Register Netzwerk und entspannen Sie sich dann.
So verwenden Sie den SQL-Formater
Schritt 1: Erfassen Sie die Abfrage
Kopieren Sie das SQL aus der Quelle: Ihre Migrationsdatei, eine gespeicherte Prozedur, die ORM-Debug-Ausgabe (DB::listen() oder Teleskop in Laravel, ActiveRecord::Base.logger in Rails), das Slow-Query-Protokoll oder die Registerkarte Abfrage Ihres APM-Tools. Wenn es aus einem Protokoll stammt, kann es Anführungszeichen oder Platzhalter für Parameter (?, $1) - das und #39; s fein, Formatierer handhaben Platzhalter, und sie klar zu sehen, ist oft der Punkt.
Schritt 2: Einfügen und Format
Öffne das SQL-Formater, einfügen, und die formatierte Version erscheint Keine Dialektzeremonie, keine Konfiguration erforderlich, um eine gute Voreinstellung zu erhalten Wenn Ihre Abfrage mehrere durch Semikolons getrennte Anweisungen enthält, formatieren sie sich als separate Anweisungen - nützlich, um Migrationsskripte im Ganzen zu lesen.
Schritt 3: Lesen Sie es wie ein Rezensent
Jetzt ist die Ding-Formatierung vorhanden: Scannen Sie die linke Kante. Welche Tabellen werden zusammengefügt und mit welchen Join-Typen? Tut das WHERE Klausel die Bedingungen haben, die Sie erwarten - und sind die AND/OR Gruppierungen in Klammern wie Sie meinen sie gruppieren? (Betreiber-Pre der SQL-Puts AND vor OR, und unaufgeforderte Mischungen der beiden sind die zweitgrößte Fehlerquelle, die ich im Test sehe, direkt nach falschen Join-Typen.) Formatierte SQL macht beide Fehler in Sekunden sichtbar.
Schritt 4: Kopieren Sie es zurück - selektiv
Kopieren Sie bei Abfragen, die in Ihre Codebasis überführt werden, die formatierte Version in die Migration ->select() Roher Ausdruck, der .sql Akte Beim einmaligen Debuggen stören Sie sich nicht um Round-Tripping; die formatierte Kopie hat ihren Zweck erfüllt, sobald Sie sie lesen. ein Platz nicht So fügen Sie formatierte SQL: Zurück in Systeme, die Abfragen als Konfigurationszeichenfolgen speichern, in denen das Diff-Tooling von jemandem nun eine Wand mit Änderungen an der Leerzeichen anzeigt. Formatieren Sie immer, formatieren Sie gespeicherte Abfragen nur dann neu, wenn Sie bereit sind, das Diff zu besitzen.
Schritt 5: Standardisierung der Teamkonvention
Der Formatierer' s größter Wert ist die Compoundierung: Wählen Sie die Konventionen, die Sie automatisieren können - Schlüsselwortfall und Einrückungsbreite sind die beiden, die dieser Formatierer direkt steuert - formatieren Sie alles Neue auf dem Weg in die Codebasis, und die Reibung der SQL-Überprüfung sinkt dauerhaft Schreiben Sie die Wahl in Ihrem beitragenden Leitfaden auf Die spezifische gewählte Konvention ist weitaus weniger wichtig als alle, die dieselbe verwenden - ein Satz, der für jede Formatierungsdebatte in Software gilt und von ungefähr niemandem in der Mitte der Debatte geglaubt wird.
Technical Deep Dive: Die Konventionen, über die es sich zu äußern lohnt
Schlüsselworthülle. Großbuchstaben-Keywords, Kleinbuchstaben-Identifikatoren ist die dominierende Konvention und meine Empfehlung Das Argument ist' t Tradition - it' s Robustheit Syntax-Hervorhebung verschwindet in Protokollen, Terminals, Code-Review-Kommentaren, und Stack Overflow-Antworten, die in Slack eingefügt wurden; Großbuchstaben-Keywords sind Hervorhebung, die mit dem Text reisen Das Gegenargument (Kleinbuchstaben Sie alles, lassen Sie den Editor hervorheben) ist kohärent und I ' hat in Codebasen gearbeitet, die es glücklich verwendet haben Was #39; ist nicht kohärent, mischen ist, was Sie erhalten, ohne dass ein Formatierer die Wahl durchsetzt.
Eine Klausel pro Zeile, eingerückte Inhalte. Die strukturelle Regel mit der höchsten Auszahlung. SELECT Startet eine Linie, die Spalten werden unten eingerückt (oder in der gleichen Zeile, wenn sie kurz sind). je JOIN bekommt seine eigene Linie mit seiner ON Zustand sichtbar - in der Mitte der Zeile versteckte Verbindungsbedingungen sind die Orte, an denen sich Fehler mit falscher Verbindung verbergen. WHERE Bedingungen stapeln Sie pro Linie, ausgerichtet, mit AND/OR Führen Sie jede Linie so, dass die logische Struktur vertikal liest. Wenn eine Abfrage als Spalte gelesen wird, wird eine fehlende Bedingung als Lücke in einem Muster, welche menschlichen Augen außergewöhnlich gut zu erkennen sind.
Der Kommakrieg. Nachfolgende Kommas (nach jeder Spalte) lesen natürlich, führende Kommas (vor jeder Spalte, bei Zeilenbeginn) machen die Satzzeichenstruktur:
-- Trailing (most common)
SELECT
u.id,
u.email,
o.total
-- Leading (the DBA classic)
SELECT
u.id
, u.email
, o.total
Fürsprecher von Leading-Comma haben zwei wirklich gute Punkte: Das Kommentieren einer beliebigen Zeile außer der ersten bricht die Aussage nie und ein fehlendes Komma ist sofort am linken Rand sichtbar. Befürworter von Trailing-Comma haben eines: Es sieht aus wie jede andere Sprache, die Sie schreiben. Ich schreibe nachfolgende Kommas und habe aufgehört, mich dabei schlecht zu fühlen - aber beachten Sie, dass SQL im Gegensatz zu modernem JavaScript oder Python dies tut nicht Verzeihen Sie ein baumelndes Komma nach der letzten Spalte, weshalb es diese Debatte überhaupt gibt und warum der führende Stil sich weigert, in DBA-Kreisen zu sterben Vollständige Offenlegung: Der Formatierer Toolz.dev nimmt die Mainstream-Seite und gibt nachfolgende Kommas aus - er hat keinen Leading-Comma-Modus, also wenn Sie & #39; ein engagierter Leading-Comma-Shop sind, ist dies die einzige Konvention, die er gewonnen hat & #39; t formatieren Sie einen Hausstil, wenden Sie ihn konsequent an und machen Sie weiter.
Was Formatierung nicht tut. Es optimiert nicht. ein formatiert SELECT * Über einen Fünf-Tisch-Join ist ein wunderschön eingerücktes Leistungsproblem. Formatierung ist das Vorbedingung Zur Optimierung - man kann nicht über eine Anfrage nachdenken, die man nicht lesen kann - aber die Begründung erfordert immer noch EXPLAIN, Indexbewusstsein und Kenntnis der Form Ihrer Daten. Ich denke an die Pipeline als: Format, Lesen, EXPLAIN, dann optimieren. Das Überspringen von Schritt eins macht Sie nicht schneller, es macht die Schritte zwei bis vier langsamer. Die gleiche Disziplin gilt in der API um eine Schicht, weshalb die JSON-Formater-Anleitung macht ein strukturell identisches Argument über Nutzlasten.
Kommentare überleben. Im Gegensatz zur Minifizierung bleiben bei der Formatierung Kommentare erhalten - -- Zeilenkommentare und /* */ Blöcke kommen intakt durch. benutze sie. ein -- deliberately LEFT JOIN: include customers with no orders Kommentar über einem Join ist die billigste Bug-Versicherung, die jemals geschrieben wurde, und es ist der Kommentar, den meine 340-zeilige Horrorgeschichte benötigt.
Häufige Anwendungsfälle
Code-Überprüfung
Unformatiertes SQL in einer Pull-Anfrage ist eine Bewertung, die nicht stattfinden wird. & #39; wird nicht passieren - der Rezensent' s Augen gleiten von der Textwand und die Genehmigung landet trotzdem. Das Formatieren der Abfrage vor dem Öffnen der PR ist eine grundlegende Höflichkeit mit messbarer Auszahlung: Jointypen, Bedingungsgruppierungen und Spaltenlisten werden einzeln sichtbar, was bedeutet, dass sie individuell überprüfbar werden Jeder echte SQL-Bug I' hat sich in der Überprüfung gefangen - der falsche Join, der nicht klärende OR, das DELETE Die Hälfte fehlt WHERE Klausel - Ich habe gefangen, weil die Abfrage gut genug formatiert war, um Zeile für Zeile zu lesen.
Debuggen von ORM-generierten Abfragen
ORMs sind wunderbar bis zum Endpunkt langsam ist, an diesem Punkt müssen Sie die tatsächliche SQL - und ORM-Ausgabe ist immer eine dichte Zeile Formatieren Sie es und die Geschichte erscheint: das N+1, das eifrig Laden verpasst, die Join die Beziehung Definition still hinzugefügt, die Geschichte erscheint ORDER BY auf einer nicht indizierten Spalte. In Laravel-Arbeit ist dies ein mehrmals wöchentliches Ritual: Teleskop, Kopie, Format, wincen, befestigen Sie den eloquenten Code, wiederholen Sie. Der Formatierer diagnostiziert selbst nichts; er macht die Abfrage so gut lesbar dich können
Archäologie bei Legacy-Abfragen
Jedes langlebige System hat sie: die gespeicherte Prozedur aus dem Jahr 2015, die Berichtsansicht, die niemand zu berühren wagt, die in eine Konfigurationsdatei eingebettete Abfrage mit dem ursprünglichen Autor' s-Formatierung (also keine).Vor der Änderung von Legacy-SQL formatieren und Ende an Ende lesen - you' findet routinemäßig Bedingungen, die can' nie wahr sein können, schließt sich Tabellen an, die keine Schreibvorgaben mehr empfangen, und logisch widersprechen die aktuellen Annahmen von team' formatieren zuerst dreht " scary legacy " in " long, aber lesbar Abfrage " was ein anderes und besseres Problem ist.
Vergleichen von Abfrageversionen
Wenn sich die Zahlen eines Berichts' s zwischen den Veröffentlichungen ändern, lautet die Frage & quot; was sich in der Abfrage geändert hat, & quot; und die Antwort erfordert das Diffundieren zweier Versionen - was nur funktioniert, wenn beide zuerst identisch formatiert sind Beide mit den gleichen Einstellungen formatieren, dann durch die Text-Diff-Tool: Das Geräusch verschwindet und die beiden geänderten Linien stehen allein. Diese genaue Sequenz hat schließlich meinen Inner-Join-Fehler gefunden. Ich mache es jetzt vor die anderthalb Tage der Verwirrung statt danach.
Lehre und Dokumentation
SQL in Tutorials, Runbooks und internen Dokumenten wird viel öfter gelesen als geschrieben, von Lesern, die mit dem Schema weniger vertraut sind als der Autor. Formatierte Beispiele mit Großbuchstaben und einer Struktur pro Zeile sind wesentlich einfacher zu erlernen - die Struktur lehrt neben dem Inhalt Wenn ich Dokumentation mit eingebetteten Abfragen schreibe, geht jeder zuerst durch den Formatierer; unformatiertes SQL in Docs sagt dem Leser, dass der Autor es getan hat & #39; erwartet nicht, dass es tatsächlich jemand liest.
Formatierungskonventionen verglichen
| Wahl der Konvention | Option A | Option B | Meine Einstellung |
|---|---|---|---|
| Schlüsselwort Fall | SELECT (Großbuchstaben) |
select (Kleinbuchstaben) |
Großbuchstaben - überlebt Kontexte ohne Hervorhebung |
| Identifier-Fall | snake_case | Tabellendefinitionen abgleichen | Übereinstimmungsdefinitionen; kämpfen Sie niemals gegen das Schema |
| Komma | Nachlauf (id,) |
Führen (, id) |
Zurückliegend, aber führen ist vertretbar - wählen Sie einfach einen aus |
| Klausel-Lay | Ein Satz pro Zeile | Kompakte Einzelzeile | eine pro Zeile für alles nach trivial |
AND/OR Platzierung |
Führen jeder Bedingungslinie | Nachfolgende Zeile hinterher | Führen - Logik liest vertikal |
| Beitrittsbedingungen | ON auf seiner eigenen Linie oder inline mit JOIN |
Mittellinie begraben | Immer sichtbar mit dem Join |
| Einzugsbreite | 2 Räume | 4 Felder | entweder; SQL nisten weniger als JSON, also ist 4 hier in Ordnung |
Keine dieser Zeilen hat eine falsche Antwort, und das & #39; s genau die Falle - weil jede Option vertretbar ist, führen Teams sie für immer neu aus, es sei denn, ein Formatierer macht die Entscheidung mechanisch Der Gewinnzug ist langweilig: alles auswählen, konfigurieren, formatieren und die zurückgewonnene Argumentationszeit für Dinge aufwenden, die den Ausführungsplan beeinflussen Für den Rest des täglichen Toolkits um diesen herum, siehe die Anleitung für die Coding-Tools und je breiter Webentwickler-Toolkitdrohen
FAQ
Was macht ein SQL-Formater?
Ein SQL-Formatierer schreibt eine Abfrage' s-Whitespace, Zeilenumbrüche und Keyword-Casing in eine konsistente, lesbare Struktur um - jede Klausel auf einer eigenen Zeile, Bedingungen und Spalten eingerückt, Schlüsselwörter normalisiert auf einen Fall Die Bedeutung von anweisung' s ist unberührt: SQL-Parser ignorieren die Formatierung vollständig, sodass die formatierte Abfrage identische Ergebnisse mit einem identischen Ausführungsplan zurückgibt. Die Änderung ist ausschließlich für die Personen, die die Abfrage überprüfen, debuggen und pflegen.
Ändert die Formatierung von SQL die Abfrageleistung?
Nr. Whitespace und Keyword-Case sind in SQL nicht semantisch - die Datenbank analysiert beide Versionen in dieselbe interne Darstellung und erstellt denselben Ausführungsplan, den Sie durch Ausführen überprüfen können EXPLAIN Auf jedem. Formatierung ist die Voraussetzung für Performance-Arbeit und nicht selbst Leistungsarbeit: Sie können nicht auf Indizes und die Reihenfolge der Verknüpfung in einer Abfrage zurückgreifen, die Sie nicht lesen können.
Sollten SQL-Keywords Groß- oder Kleinbuchstaben sein?
Beide sind gültig - SQL-Keywords sind gemäß Standard case-insensitive - es handelt sich also um eine Lesbarkeitskonvention, keine Korrektheitsregel Großbuchstaben (SELECT, FROM, WHERE) bleiben die häufigste Wahl, da sie als integrierte Hervorhebung in Kontexten dienen, die Farben abstreifen: Protokolle, Diffs, Terminals und Klartextnachrichten. Unabhängig davon, welchen Wert Sie wählen, ist die Konsistenz über die Codebasis weitaus wichtiger als die Wahl selbst.
Was sind führende Kommas in SQL und warum verwenden sie sie?
Leading-Comma-Stil platziert das Komma am Anfang jeder Spaltenzeile (, email) statt des Endes des vorherigen Befürwortern gefällt es, weil das Kommentieren einer beliebigen Spalte außer der ersten nie einen Syntaxfehler erzeugt und fehlende Kommas sofort am linken Rand sichtbar sind - echte Vorteile, da SQL & #39; ein baumelndes Komma nach der letzten Spalte nicht toleriert wie modernes JavaScript. Nachlaufende Kommas bleiben häufiger; beides funktioniert, wenn es konsequent angewendet wird.
Kann ich von einem ORM wie Eloquent oder ActiveRecord generierte SQL formatieren?
Ja, und it' s eine der besten Anwendungen eines Formatierers - ORM-Debug-Ausgabe kommt als eine einzige dichte Zeile mit maschinengenerierten Aliasen an, und Formatierung ist der erste Schritt der Diagnose langsamer Endpunkte und N+1-Probleme Erfassen Sie die Abfrage von Ihrer ORM' s-Protokollierung (Laravel Telescope, ActiveRecord-Protokolle), fügen Sie sie in die SQL-Formater, und lesen Sie, was das ORM tatsächlich gebaut hat, bevor Sie nach greifen EXPLAINdrohen
Funktioniert der Formatierer mit MySQL, PostgreSQL und SQL Server-Syntax?
Ja - praktische Formatierer verarbeiten die wichtigsten Dialekte' Macken, Beibehaltung von MySQL-Backticks, PostgreSQL-Doppelzitiererkennungen und :: CASTs und SQL Server-Klammern, anstatt sie neu zu schreiben. Der ANSI SQL-Standard definiert den gemeinsam genutzten Kern, aber keine Produktionsdatenbank spricht reine Standard-SQL, daher ist die Dialekttoleranz eine Voraussetzung, dass ein Formatierer für reale Abfragen nützlich ist.
Ist es sicher, Produktionsabfragen in einen Online-SQL-Formater einzufügen?
Nur in eine clientseitige, da SQL ungewöhnlich sensibel ist: Abfragen stellen Ihr Schema offen, und Abfragen, die aus Protokollen kopiert werden, enthalten häufig Literalwerte wie E-Mails oder IDs in WHERE Klauseln. der Toolz.dev SQL-Formater Verarbeitet alles in Ihrem Browser, ohne dass etwas übertragen oder gespeichert wird - überprüfen Sie es selbst, indem Sie beim Einfügen den Netzwerk-Tab ansehen Vermeiden Sie serverbasierte Formatierer für alles aus der Produktion.
Behält die Formatierung SQL-Kommentare bei?
Ja - beides -- Zeilenkommentare und /* */ Blockkommentare durchlaufen im Gegensatz zu Minifizierung, wodurch sie gelöscht werden. Dies macht die Formatierung für kommentierte Abfragen und gespeicherte Prozeduren sicher, wenn Kommentare Absichten enthalten. Verwenden Sie das: Ein einzeiliger Kommentar, der eine absichtliche Erklärung erklärt LEFT JOIN Oder eine ungewöhnliche Bedingung ist der billigste Schutz gegen den nächsten Entwickler "Fixing" etwas, das nicht kaputt war.



