Utilia

Formatues SQL

Formato query SQL për PostgreSQL, MySQL, SQL Server, Oracle, BigQuery, Snowflake e të tjera, me opsione për fjalët kyçe dhe hapësirat, në shfletues.

Si ta formatosh një query SQL

  1. Ngjit një ose më shumë query, ose kliko Hap një skedar për të ngarkuar një skedar .sql (deri në 10 MB).
  2. Zgjidh Dialektin e bazës së të dhënave tënde, për shembull PostgreSQL, MySQL ose SQL Server (T-SQL).
  3. Zgjidh si shkruhen Fjalët kyçe (SHKRONJA TË MËDHA, shkronja të vogla ose Si i kam shkruar) dhe Hapësirat në fillim.
  4. Shëno Pa hapësira rreth operatorëve nëse preferon a=b+1 në vend të a = b + 1.
  5. Kliko Formato SQL, pastaj kopjo ose shkarko rezultatin. Ndryshimi i një opsioni e riformaton query-n.

Query riformatohet vetëm si tekst. Nuk ekzekutohet kurrë dhe nuk dërgohet te një bazë të dhënash apo te një server.

Çfarë bën formatuesi

Mjeti përdor bibliotekën me burim të hapur sql-formatter. E ndan çdo deklaratë në klauzola dhe e vendos fjalën kyçe të secilës klauzolë (SELECT, FROM, WHERE, GROUP BY, ORDER BY…) në rreshtin e vet, me përmbajtjen e klauzolës të zhvendosur poshtë saj. Kolonat në një listë SELECT vendosen një për rresht, kushtet AND dhe OR fillojnë rreshta të rinj, dhe nënquery-t e shprehjet CASE zhvendosen sipas nivelit të ndërthurjes. Shprehjet e shkurtra në kllapa qëndrojnë në një rresht. Disa deklarata të ndara me pikëpresje mbahen veçmas me një rresht bosh.

Ndryshojnë vetëm hapësirat dhe shkronjat e mëdha/vogla. Vargjet literale, identifikuesit në thonjëza dhe komentet mbahen saktësisht siç janë, ndaj query-ja e formatuar jep të njëjtin rezultat me origjinalen.

Pse ka rëndësi dialekti

Bazat e të dhënave SQL e ndajnë gjuhën bazë, por ndryshojnë në detaje, dhe një formatues duhet t’i njohë për ta lexuar saktë query-n:

  • identifikuesit vendosen në "thonjëza të dyfishta" në SQL standard dhe PostgreSQL, në `backticks` në MySQL, MariaDB dhe BigQuery, dhe në [kllapa katrore] në SQL Server;
  • operatorë si ->> dhe kastimet :: të PostgreSQL, ose qasja me : e Snowflake, ekzistojnë vetëm në disa dialekte;
  • vendmbajtësit e parametrave ndryshojnë: ?, $1, :name ose @name;
  • çdo dialekt ka fjalët e rezervuara dhe funksionet e veta, që opsioni Fjalët kyçe i ndryshon.

Nëse merr “Query nuk u analizua dot”, së pari kontrollo që dialekti i zgjedhur përputhet me bazën tënde. Gabimi tregon rreshtin dhe kolonën ku u ndal analiza. SQL standard është zgjedhja më kufizuese; zgjidh bazën tënde të vërtetë kurdo që të jetë e mundur.

Shkronjat e fjalëve kyçe dhe këshilla stili

Fjalët kyçe me shkronja të mëdha mbeten konventa më e zakonshme sepse e veçojnë gjuhën nga emrat e tabelave e kolonave me një shikim. Shkronjat e vogla janë të njohura te ekipet që e kanë më të lehtë për t’u lexuar, dhe Si i kam shkruar e lë pa prekur zgjedhjen tënde. Emrat e tabelave, kolonave dhe funksioneve nuk ndryshohen kurrë: vetëm fjalët e rezervuara ndjekin opsionin. Për skedarë të gjatë, formatimi i qëndrueshëm i bën edhe ndryshimet mes versioneve shumë më të lehta për t’u shqyrtuar.

Pyetje të shpeshta

Cilat dialekte mbështeten?

SQL standard, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle (PL/SQL), Google BigQuery, Snowflake, Amazon Redshift, IBM Db2, Db2 for i, Apache Hive, Spark SQL, Trino/Presto, DuckDB, ClickHouse, SingleStoreDB, TiDB dhe Couchbase N1QL.

A kontrollon mjeti nëse query-ja ime është e vlefshme?

Jo. Kontrollon që query-ja mund të lexohet në dialektin e zgjedhur, por jo që tabelat ose kolonat ekzistojnë apo që query-ja do të ekzekutohej. Këtë mund ta konfirmojë vetëm baza jote e të dhënave.

A mund të formatojë procedura të ruajtura?

Pjesërisht. Deklaratat brenda procedurave formatohen, por blloqet procedurale (BEGIN … END, cikle, DECLARE) shtrohen më thjesht se në një IDE të dedikuar.

A dërgohet query-ja ime te një server?

Jo. Formatimi ekzekutohet në shfletuesin tënd, ndaj query-t me emra tabelash ose të dhëna mbeten në kompjuterin tënd.

Pse komenti im është në një vend tjetër?

Komentet mbahen, por një koment në fund të rreshtit mund të lëvizë me elementin që ndjek kur ai element kalon në një rresht të ri.