SQL Formatter

Developer

Ayusin ang query para mabasa, hindi ginagalaw ang nasa panipi.

Inayos na SQL
SELECT u.name, COUNT(o.id) AS orders FROM users u LEFT JOIN orders o ON o.user_id = u.id WHERE u.active = TRUE AND u.note <> 'select one from the list' GROUP BY u.name ORDER BY 2 DESC
35 token · 1 statement
Mga token35
Mga statement1
Inilalatag nito ang SQL para mabasa. Hindi nito pina-parse, vina-validate o binabago ang SQL — ang formatter na nagsasabing nagva-validate ito ng SQL ay nagsasabing nagpapatupad ito ng isang dialect.
Iniwan nang eksakto ang tekstong nasa loob ng quotes. Ang formatter na nagpapalaki ng titik ng keyword gamit ang simpleng paghahanap ay gagawing kalokohang mukhang SQL ang note na "select one from the list" — tahimik na binabago ang datos sa loob ng query na ipinaayos mo lang.
Keyword lang ang pinalitan ng titik. Hindi kailanman ginagalaw ang mga identifier: sa PostgreSQL, nagiging maliit na titik ang identifier na walang quote pero hindi ang may quote, kaya ang pagpapalit ng titik nito ay puwedeng magpalit kung aling column ang tinutukoy nito.

Paano gamitin

Para saan ito

Ilatag ang mahabang database query para mabasa ng tao — may sariling linya ang bawat clause, naka-indent ang mga kondisyon sa ilalim ng WHERE — at gawing iisa ang laki ng titik ng mga keyword.

Bago magsimula

Ihanda ang query, kinopya mula sa code mo, sa log o sa database tool. Sa browser mo ito inaayos at walang ipinapadala kahit saan, na mahalaga kapag pinangangalanan ng query ang sarili mong mga table o may laman itong totoong value.

  1. I-paste ang query

    Palitan ng sarili mong SQL ang sample sa Query. Puwedeng iisang mahabang linya ito, o ilang statement na pinaghihiwalay ng semicolon.

  2. Piliin ang itsura ng keyword

    Ang keyword ay ang sariling salita ng SQL, gaya ng SELECT, FROM at WHERE. Sa Mga keyword, piliin ang MALAKING TITIK para mamukod sila sa mga pangalan mo, maliit na titik kung ganoon sumulat ang team mo, o Iwan kung paano isinulat para layout lang ang mabago.

  3. Piliin ang indent

    Itinatakda ng Indent kung gaano kalalim papasok ang mga linya — ang AND at OR sa ilalim ng WHERE, at ang query sa loob ng bracket: Dalawang espasyo, Apat na espasyo o Tab. Itugma sa iba mo pang code.

  4. I-format at kopyahin

    Pindutin ang I-format. Nasa band sa itaas ng card ang inayos na query — nagbabago rin ito habang nagta-type ka — at inilalagay ito ng Kopyahin sa clipboard mo.

Pagbasa ng resulta

  • Inayos na SQL: ang query mo, inilatag ulit. Iniiwan nang eksakto ang teksto sa loob ng quotes at ang mga pangalan ng table at column mo; keyword lang ang nagpapalit ng laki ng titik.
  • Mga token: kung ilang piraso ang pinaghatian ng query — mga salita, simbolo at value na nasa quotes.
  • Mga statement: kung ilang query ang laman nito, binilang ayon sa mga semicolon na nagtatapos sa kanila.

Kung may problema

  • In-format nito ang query na alam mong sira: sinadya iyon. Inilalatag nito ang query pero hindi sinusuri — sinasabi iyon ng note sa pahina — kaya makakatulong ang hugis para makita ang mali.
  • Basahin muna ang resulta bago ito patakbuhin, at kung may mukhang mali, patakbuhin ang query nang eksakto kung paano mo ito isinulat.
  • Nanatili ang kakaibang malaking titik ng pangalan ng column: hindi kailanman binabago ang mga pangalan, dahil sa ilang database ay puwedeng ibang column ang matukoy ng query kapag pinalitan ang laki ng titik.

Ano ito

Ang nasa loob ng panipi ay hindi code, at iyon ang buong hirap. Ang formatter na naglalaki ng keyword gamit ang basta paghahanap ay ginagawang 'SELECT one FROM the list' ang talang nagsasabing 'select one from the list' — tahimik na binabago ang datos sa query na ipinaayos lang sana.

Kaya tinotoken muna ito, at keyword lang ang binabago ang case. Ganoon din ang komento.

Hindi rin ginagalaw ang pangalan ng column. Sa PostgreSQL, ang identifier na walang panipi ay bumababa sa maliit na titik at ang may panipi ay hindi — kaya ang pagbabago ng case ay puwedeng magpalit kung aling column ang tinutukoy.

At hindi ito nagpa-parse o nagve-validate. Inaayos nito ang anyo para mabasa ng tao. Ang formatter na nag-aangking nagve-validate ng SQL ay nag-aangking ipinatupad nito ang isang dialect.

Mga tanong

Babaguhin ba nito ang teksto sa loob ng panipi ko?

Hindi, at iyon ang pangunahing tinatamaan ng tool na ito. Ang formatter na nagpapalaki ng keyword gamit ang payak na paghahanap ay ginagawang mukhang SQL na walang kuwenta ang notang nagsasabing “select one from the list” — tahimik na binabago ang datos sa loob ng query na pinaayos mo lang sana. Nagto-token muna ito, kaya ang nakilalang keyword lang ang binabago ang anyo. Iniiwan ang komento sa parehong dahilan.

Bakit hindi nito pinapalaki ang pangalan ng column ko?

Dahil puwedeng may kahulugan ang anyo ng titik. Sa PostgreSQL, ang identifier na walang panipi ay bumabagsak sa maliit na titik at ang may panipi ay hindi, kaya magkaibang column ang "Order" at ang Order — ang pagbabago sa anyo ng isa ay puwedeng magpalit kung aling column ang ibig sabihin ng query. Keyword lang ang ginagalaw.

Kaya ba nito ang backtick at square bracket?

Oo. Ang double quote ang karaniwang pananda ng identifier, ang backtick ay MySQL at ang square bracket ay SQL Server, at ang tatlo ay pinapanatiling eksakto sa pagkakasulat. Iyon ang dahilan kung bakit gumagana ang column na tinatawag na order, at ang pagkakamali dito ang paraan ng pagsira ng formatter sa perpektong wastong query.

Sinusuri ba nito kung wasto ang SQL ko?

Hindi. Inilalatag nito ang pahayag para mabasa ng tao, at iyon ang kailangan mo kapag nakatitig ka sa 400-karakter na linya mula sa ORM. Hindi ito nagpaparse, nagpapatunay o nagsusulat muli — ang formatter na nagsasabing pinapatunayan nito ang SQL ay nagsasabing ipinapatupad nito ang isang dialect, at ilan silang hindi magkasundo.

Ano ang mangyayari sa sirang query?

Inaayos pa rin ito. Ang may query na hindi tatakbo ay gusto pa ring makita ang hugis nito, at ang pagtangging ilatag ito ay nag-aalis ng iisang bagay na puwedeng magturo sa kanila kung saan nagkamali.

Ipinapadala ba kahit saan ang query ko?

Hindi. Sa browser mo nangyayari ang lahat at walang ipinapadala o itinatago — at mahalaga iyon dito, dahil madalas na may dalang pangalan ng talahanayan, pangalan ng column at minsan ay tunay na halaga mula sa sarili mong database ang query.

Ang komputasyon

Ano ang binabago at ano ang hindi
Keywordbinabago ang case
Pangalan ng columnhindi ginagalaw
Teksto sa loob ng panipihindi ginagalaw
Komentohindi ginagalaw
Tatlong dialect, tatlong panipi
"order"pamantayan, PostgreSQL
`order`MySQL
[order]SQL Server

Lahat ay pinapanatili kung paano isinulat. Iyan ang nagpapagana sa column na tinawag na order.

Ituloy pa

Mahalaga

Runs entirely in your browser; nothing is transmitted. This lays a query out to be read — it does not parse, validate or rewrite it. Only keywords are recased; identifiers and anything inside quotes are left exactly as written. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.