Par šo rīku
SQL vaicājumi kļūst gari un ātri sarežģīti — savienojas daudzās tabulās, ligzdotie apakšvaicājumi, lielas WHERE klauzulas ar daudziem nosacījumiem, sarežģītas CASE izteiksmes. Kompaktais SQL, kas pieblīvēts dažās rindās, nav nolasāms; pareizi atkāpe SQL ar konsekventu lielo burtu lietojumu padara vaicājuma struktūru redzamu vienā mirklī. Formatēšana ir atšķirība starp vaicājumu, kuru varat atkļūdot, un vaicājumu, kuru nevarat atkļūdot.
Šis formatētājs parsē SQL un izstaro izvadi ar atkāpi, pareizi rakstītā burtā. SQL atslēgvārdi (SELECT, FROM, WHERE, JOIN, GROUP BY) parasti tiek rakstīti ar lielajiem burtiem, tabulu un kolonnu nosaukumi atbilst avotam, un atkāpe atspoguļo ligzdošanu (apakšvaicājumi ar atkāpi to vecāku iekšpusē, CASE zari ar atkāpi). Vairāku dialektu atbalsts apstrādā MySQL, PostgreSQL, SQL Server, Oracle un SQLite atšķirības.
Formatēšana ir nesagraujoša — formatētais vaicājums ir funkcionāli identisks ievadei. Mainās tikai atstarpes un reģistrs.
Kāpēc formatēt SQL
Blīvu neformatētu SQL lasīšana ir garīgi apgrūtinoša. Identificēt, kuri nosacījumi pieder pie kuriem JOIN, kur sākas un kur apakšvaicājumi beidzas un kā CASE zari ir saistīti, kļūst grūtāk, ja viss ir dažās rindās. Formatēts SQL ir ātrāk lasāms un samazina kļūdas, ko rada nepareiza struktūra.
Īpaši koda pārskatīšanas priekšrocības. Recenzenti var ātri saprast, ko vaicājums dara, kad tas ir formatēts; neformatēta SQL lasīšana pārskatīšanas laikā veicina izlaišanu vai gumijas štancēšanu. Formatēts SQL arī rada nozīmīgas atšķirības, kad vaicājumi mainās.
Tehniskās detaļas
SQL parsēšanai ir jāsaprot dialekts, jo dažādas datu bāzes gramatiku paplašina dažādos veidos. Formatētājs parasti izmanto marķieri, lai identificētu atslēgvārdus, identifikatorus, burtus un pieturzīmes, un pēc tam izveido izvadi ar atstarpēm un atkāpēm starp marķieriem.
Atkāpes noteikumi: SELECT, FROM, WHERE, GROUP BY, ORDER BY katrs savā rindā. Savienotas tabulas nākamajās rindās ar atkāpi zem FROM. Nosacījumi sadaļā WHERE atsevišķās rindiņās lasāmībai. Apakšvaicājumi savos atkāpes blokos.
Lietu apzīmējumi: atslēgvārdi visbiežāk ir lielie burti (SELECT, FROM, WHERE). Dažas komandas dod priekšroku mazajiem burtiem. Identifikatori (tabulu un kolonnu nosaukumi) saglabā avota reģistru.
Bieži uzdotie jautājumi
- Vai formatēšana maina vaicājuma darbību?
- Nē. SQL formatējums pielāgo tikai atstarpes, rindiņu pārtraukumus un atslēgvārdu lielos burtus. Vaicājuma loģika, izpildes plāns un rezultāti paliek identiski. Tas ir tikai lasāmības uzlabojums.
- Kuri SQL dialekti tiek atbalstīti?
- Šis rīks atbalsta standarta SQL un noteiktus dialektus: MySQL, PostgreSQL, SQLite, SQL Server (T-SQL) un Oracle PL/SQL. Dialektam raksturīgie atslēgvārdi un funkcijas tiek atpazītas pareizi.
- Vai tas apstrādā apakšvaicājumus un CTE?
- Jā. Kopējās tabulu izteiksmes (AR klauzulām), ligzdotie apakšvaicājumi, logu funkcijas un sarežģītas JOIN ķēdes tiek formatētas ar atbilstošiem atkāpes līmeņiem.
- Vai es varu to izmantot uzglabātajām procedūrām?
- Formatētājs vislabāk apstrādā atsevišķus SQL paziņojumus. Var darboties vairāku priekšrakstu procedūras, trigeri un funkcijas, taču sarežģītas procesuālās loģikas (IF/ELSE, cilpas) formatējums ir atkarīgs no dialekta.
- Vai atslēgvārdiem jābūt lielajiem vai mazajiem?
- Konvencija atšķiras. Atslēgvārdi ar lielajiem burtiem ir tradicionāli un izplatīti. Mūsdienu stila ceļvežos tiek pieņemti mazie burti. Izvēlieties vienu un saglabājiet konsekvenci kodu bāzē.
- Vai tas formatē saglabātās procedūras?
- Lielākā daļa formatētāju apstrādā saglabāto procedūru sintaksi (CREATE PROCEDURE, BEGIN/END bloki, vadības plūsma). Var tikt daļēji atbalstīti dialektam raksturīgi paplašinājumi.
- Vai mans SQL ir augšupielādēts?
- Nē. Formatēšana notiek jūsu pārlūkprogrammā.
- Vai es varu formatēt no komandrindas?
- Vairāki SQL formatētāji piedāvā CLI rīkus (sqlfluff, sql-formatter). Izmantojiet tos pakešu formatēšanai vai CI integrācijai. Pārlūkprogrammu formatētāji ir paredzēti vienreizējai ad hoc lietošanai.