Formatēt un atkāpt SQL vaicājumu
- Vadības panelis
- Dokumentācija
- API
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īkusGET https://cdrn.fr/api/v1/tools/sql-formatter- iegūst šī rīka shēmuPOST https://cdrn.fr/api/v1/tools/sql-formatter/execute- izpilda šo rīku ar JSON payload