Formatēt un atkāpt SQL vaicājumu

formatē jūsu SQL vaicājumus, lai padarītu tos lasāmus un saprotamus, atvieglojot izstrādi un apkopi

Kāpēc SQL formatējums?

SQL formatējums palīdz padarīt SQL vaicājumus lasāmākus un saprotamākus izstrādātājiem un datu bāzes administratoriem. Tas atvieglo atkļūdošanu, koda pārskatīšanu un optimizāciju pieprasījumus. Labi formatēta SQL ir būtiska koda kvalitātes uzturēšanai un efektīvai sadarbībai izstrādes komandas ietvaros.

Atbalstītie SQL vaicājumu veidi

Šis rīks atbalsta visu veidu SQL vaicājumus, tostarp SELECT, INSERT, UPDATE, DELETE, kā arī tabulas izveides un modifikācijas instrukcijas (CREATE, ALTER, DROP).

Kā formatēt SQL vaicājumus

Formatēšanas lapā varat formatēt savu SQL vaicājumu, ielīmējot to norādītajā tekstlodziņā šim nolūkam.

Tiklīdz SQL vaicājums ir iesniegts, tas tiks formatēts un parādīts rezultātu lodziņā. Ja vaicājums ir nederīgs, tiks parādīts kļūdas ziņojums ar norādi par problēmas būtību.

Izmantojiet formatētu SQL

Varat kopēt formatēto SQL, izmantojot šim nolūkam paredzēto kopēšanas pogu. Tas atvieglos SQL vaicājumu integrēšana savos projektos vai atskaitēs.

Jūsu SQL kodam vajadzētu izskatīties šādi:

IZVĒLĒTIES u.id, u.name, u.e-pasts, p.product_name, p.price, o.order_date, o.quantity, (ATLASĪT SUMMU(p2.cena * o2.daudzums) NO pasūtījumiem o2 JOIN produktiem p2 ON o2.product_id = p2.id WHERE o2.user_id = u.id) kā kopējais_iztērētais NO lietotājiem u JOIN pasūtījumiem o ON u.id = o.user_id PIEVIENOTIES produktiem p ON o.product_id = p.id KUR u.id IN ( SELECT user_id NO pasūtījumiem WHERE pasūtījuma_datums >= '2023-01-01' UN pasūtījuma_datums <= '2023-12-31' GROUP BY user_id AR SKAITĪJUMU(*) > 5 ) UN p.cena > 50 ORDER BY u.name ASC, o.order_date DESC IEROBEŽOTS 10;

Bieži uzdotie jautājumi

Kuri SQL dialekti tiek atbalstīti: MySQL, PostgreSQL, SQL Server?

Treneris atpazīst standarta SQL sintaksi (ANSI), kā arī galvenos MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) un SQLite paplašinājumus. Katram dzinējam raksturīgie atslēgvārdi (MySQL un PostgreSQL LIMIT, SQL Server TOP, PostgreSQL RETURNING, MERGE) ir ievilkti pareizi. Dzinējam raksturīgās sākotnējās funkcijas tiek saglabātas bez validācijas.

Vai formatētājs apstrādā CTE un rekursīvos vaicājumus?

Jā. CTE (kopējās tabulas izteiksmes), kas deklarētas ar WITH ... AS (...), tiek ievilktas savā blokā, un tiek atpazīti rekursīvie CTE (WITH RECURSIVE). Tas padara sarežģītus vaicājumus daudz lasāmākus, tostarp hierarhijas (kokus, grafikus) un bīdāmos logus. Korelētie apakšvaicājumi tiek saskaņoti arī ar to vecāktvērumu.

Kāda ir atšķirība starp SQL formatētāju un vaicājumu optimizētāju?

SQL formatētājs nemaina vaicājuma semantiku: tas vienkārši vizuāli pārkārto kodu (rindas pārtraukumi, atkāpe, atslēgvārda reģistrs). Lai uzlabotu veiktspēju, optimizētājs pārraksta vaicājumu vai ierosina izmaiņas (trūkst indeksu, apvienojumus, lai tos pārkārtotu, apakšvaicājumus pārveidot par savienojumiem). Lai analizētu izpildes plānu, izmantojiet EXPLAIN vai EXPLAIN ANALIZĒT atkarībā no programmas.

Vai SQL komentāri tiek saglabāti?

Jā. Iekļautie komentāri — komentārs un vairākrindu komentāri /* ... */ tiek glabāti to sākotnējā atrašanās vietā. Tas ir būtiski, lai dokumentētu sarežģītu vaicājumu vai atzīmētu sadaļas (TODO, optimizētāja padoms, migrācijas versija). Ja vaicājumu nododat programmai, kas interpretē komentētos ieteikumus (/*+ INDEX(...) */ Oracle), tie arī tiek saglabāti.

Kāpēc SQL atslēgvārdi tiek rakstīti ar lielo burtu?

Lielo burtu rakstīšana atslēgvārdos (SELECT, FROM, WHERE, JOIN) ir vēsturiska metode, kas vizuāli atšķir tos no identifikatoriem (tabulu nosaukumiem, kolonnām). Šī prakse atvieglo lasīšanu, īpaši garu vaicājumu gadījumā. Tomēr tabulu un kolonnu nosaukumi tiek saglabāti to sākotnējā reģistra formātā, lai ievērotu shēmas konvencijas (jo īpaši PostgreSQL, kur reģistrs ir jutīgs pret pēdiņām norādītajiem identifikatoriem).

Vai formatētājs apstiprina SQL sintaksi?

Formatētājs veic vieglu sintaktisko analīzi, kas atklāj rupjas kļūdas (nelīdzsvarotas iekavas, priekšraksta beigās trūkst semikola, nekonsekventi atslēgvārdi). Tas neapstiprina ne tabulu un kolonnu esamību, ne atbilstību noteiktai shēmai. Lai to izdarītu, palaidiet vaicājumu savā datu bāzē režīmā EXPLAIN vai izmantojiet speciālu līniju, piemēram, sqlfluff.

Pieprasījuma piemērs

curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
  -H "Content-Type: application/json" \
  -d '{"input":"..."}'

Ievades shēma

Lauks Tips Obligāts Noklusējums
input text

Endpoint

  • GET https://cdrn.fr/api/v1/tools - uzskaita visus pieejamos rīkus
  • GET https://cdrn.fr/api/v1/tools/sql-formatter - iegūst šī rīka shēmu
  • POST https://cdrn.fr/api/v1/tools/sql-formatter/execute - izpilda šo rīku ar JSON payload