SQL
SQL (no angļu: Structured Query Language "strukturēto vaicājumu valoda") - vaicājumu valoda, kas paredzēta datu manipulēšanai relāciju datubāžu pārvaldības sistēmās. Tas ir ANSI/ISO standarts. SQL parasti izrunā kā es kjū el.
SQL atšķiras no standarta procedurālajām programmēšanas valodām ar to, ka tā darbojas ar ierakstu kopām, nevis apstrādā ierakstu pa ierakstam. Daudzi datu bāzu pārvaldības sistēmu izstrādātāji ir ieviesuši savās DBPS arī procedurālos papildinājumus un speciālas valodas, piemēram, Oracle - PL/SQL, Microsoft un Sybase - T-SQL, PostgreSQL - PL/pgSQL.
Standarti
SQL standartu revīzijas:
Gada | Nosaukums | Cits nosaukums | Komentāri |
---|---|---|---|
1986 | SQL-86 | SQL-87 | Pirmoreiz publicējis ANSI 1986. gadā. ISO ratificējusi 1987. gadā. |
1989 | SQL-89 | FIPS 127-1 | Nelielas izmaiņas |
1992 | SQL-92 | SQL2 | Lielākas izmaiņas (ISO 9075). |
1999 | SQL:1999 | SQL3 | Pievienotas regulārās izteiksmes, rekursīvie vaicājumi, trigeri, neskalārie tipi un dažas objektorinetētās īpašības. |
2003 | SQL:2003 | Ar XML saistīti jauninājumi, loga funkcijas, standartizētas secības un kolonas ar aotoģenerētām vērtībām. | |
2006 | SQL:2006 | Palielināta funkcionalitāte, parādījās iespēja izmantot XQuery SQL pieprasījumos. | |
2008 | SQL:2008 | Uzlabotas logu funkcijas. |
SQL standarti nav brīvi pieejami. SQL:2003 var iegadāties ISO vai ANSI. Vairums datu bāzu pārvaldības sistēmu izstrādātāji ir ieviesuši savus papildinājumus un modifikācijas, kas neatbilst standartam.
Valodas elementi
SQL valoda ir iedalīta vairākos valodu elementos:
- Nosacījumi, kas ir sastāvdaļa no paziņojumiem un vaicājumiem. (Atsevišķos gadījumos nav obligāti.)
- Izteiksmēs, kas var radīt skalāras vērtības vai arī tabulas, kas sastāv no datu kolonām un rindām.
- Predikātos, kas ir nosacījumi(komplementārā loģika un Būla patiesību vērtības), kuri ietekmē ne tikai pārskatu un vaicājumu rezultātus, bet arī programmas plūsmu.
- Vaicājumos, kuri atgriež datus atkarībā no sniegtā kritērija.
- Priekšraksti, kurām var būt noturīga ietekme uz shēmām un datiem, vai arī kuras var kontrolēt darījumus, programmas plūsmu, savienojumus, sesijas un diagnostiku.
- SQL komandas parasti satur semikolu(";"), kā komandas terminatoru. Kaut arī tas nav vajadzīgs visām platformām.
- Nenozīmīgas atstarpes SQL komandās un vaicājumos tiek ignorētas, lai atvieglotu SQL koda pārskatāmību.
Vaicājumi
Visbiežākā operācija SQL ir vaicājums, ko veic ar deklaratīvo paziņojumu SELECT. SELECT atgriež datus no vienas vai vairākām tabulām vai vienādībām. Standarta SELECT pieprasījumiem nav ilgstošu seku uz datubāzi, bet tās var būt izmantojot nestandarta SELECT paveidus, piemēram, SELECT INTO.
Vaicājumi atļauj lietotājam aprakstīt vēlamos datus, atstājot datu bāzu vadības sistēmu (database management system (DBMS)) atbildīgu par plānošanu, optimizēšanu, un fizisko darbību veikšanu, kas ir nepieciešams, lai saņemtu rezultātu.
Vaicājums ietver sarakstu ar kolonnām, kas būs ietvertas rezultātā tūlīt pēc SELECT atslēgvārda. "Zvaigznīte" ("*"), var tikt lietota lai norādītu, ka vaicājumam jāatgriež visas kolonnas vaicātajās tabulās. SELECT ir vissarežģītākais priekšraksts SQL valodā, ar izvēles atslēgvārdiem un nosacījumiem, kas ietver:
- Nosacījums FROM - norāda tabulu/tabulas no kuras dati jāiegūst. Nosacījums FROM var iekļaut izvēles apakšnosacījumu JOIN, lai precizētu noteikumus tabulu savienošanai.
- Nosacījums WHERE - ietver salīdzinājuma predikātu, kas ierobežo atgrieztās rindas no vaicājuma. Nosacījums WHERE likvidē visas rindas no rezultātu kopas, kuras salīdzinājuma predikāts nenovērtē, kā "Patiesas" ("True").
- Nosacījums GROUP BY - tiek bieži lietots kopā ar SQL apkopšanas funkcijām, vai arī lai atbrīvotos no dublētām rindām rezultātu kopā. Nosacījums WHERE tiek piemērots pirms nosacījuma GROUP BY.
- Nosacījums HAVING - ietver predikātu, kas tiek lietots lai filtrētu rindas, kas izriet no nosacījuma GROUP BY. Tāpēc, ka tas darbojas uz nosacījuma GROUP BY rezultātiem, apkopšanas funkcijas var tikt lietotas izmantojot nosacījuma HAVING predikātu.
- Nosacījums ORDER BY - identificē kuras kolonnas tiek lietotas lai sakārtotu iegūtos datus, un kurā virzienā tie būtu jākārto (augošā vai dilstošā secībā). Bez ORDER BY nosacījuma, rindu secība kuru atgriež SQL vaicājums ir nenoteikts.
SQL vaicājumus var iedalīt 4 daļās:
- Datu manipulēšanas vaicājumi (SELECT, INSERT, UPDATE, DELETE, MERGE)
- Datu definēšanas vaicājumi (CREATE, DROP, TRUNCATE, ALTER)
- Datu kontroles vaicājumi (GRANT, REVOKE)
- Transakciju kontroles vaicājumi (BEGIN WORK vai START TRANSACTION, COMMIT, ROLLBACK).
Analītiskās funkcijas
- Sintakse
Vienkāršota analītisko funkciju sintakse ir šāda: funkcija> ([<arguments>]) OVER ([PARTITION BY <kolonu saraksts>] ORDER BY <kolonu saraksts> ) Elementu nozīme:
- <funkcija> – konkrētā izmantojamā analītiskā funkcija. Šeit der lielākā daļa no grupēšanas funkcijām, piemēram, Min, Max, Sum, Avg, kā arī dažas citas jaunas funkcijas, kas parasti nav pieejamas, piemēam, row_number, rank, dense_rank utt.
- OVER – atslēgas vārds, kas norāda, ka šī ir analītiskā f-ja, piemēram, atšķirība no parastas grupēšanas funkcijas.
- PARTITION BY <kolonu saraksts> – nodalījums, kādā tiek sadalīts viss vaicājuma rezultāts. Kā redzams šī klauza ir neobligāta, tādā gadījumā nodalījums ir viens – viss vaicājuma rezultāts. Ja šī klauza eksistē, tad tiklīdz kā kolonu sarakstā minētās kolonas vērtība mainās, tā tas ir nākošais nodalījums – skat. nākošajā attēlā.
- ORDER BY – kārtība kādā ieraksti tiks sakārtoti katra nodalījuma ietvaros. Sakārtojumam vēlams būt viennozīmīgam, pretējā gadījumā nav garantijas, kurš no ierakstiem būs pirmais, kurš nākošais. Pie tam ļoti svarīgi atcerēties – šis sakārtojums nenozīmē kā rindas būs sakārtotas gala rezultātā, gala rezultāta definētu sakārtojumu nodoršina tikai un vienīgi Select teikuma Order By klauza.
Ārējās saites
![]() | Šis ar informācijas tehnoloģijām saistītais raksts ir nepilnīgs. Jūs varat dot savu ieguldījumu Vikipēdijā, papildinot to. |