Ja vēlaties izgūt datus no datu bāzes, pieprasāt datus, izmantojot strukturētu vaicājumu valodu (SQL). SQL ir datorvaloda, kas ir ļoti līdzīga angļu valodai, bet ko saprot datu bāzu programmas. Katrā vaicājumā, ko izpildāt, aizkulisēs tiek izmantots SQL.
Izpratne par to, kā darbojas SQL, var palīdzēt izveidot labākus vaicājumus un var atvieglot izpratni, kā labot vaicājumu, kas neatgriež vēlamos rezultātus.
Šis raksts ietilpst rakstu kopā par Access SQL. Šajā rakstā paskaidrota SQL valodas pamatizmantošana datu atlasē, kā arī sniegti piemēri, lai ilustrētu SQL sintaksi.
Tēmas šajā rakstā
- Kas ir SQL?
- SQL pamatklauzulas: SELECT, FROM un WHERE
- Rezultātu kārtošana: KĀRTOT PĒC
- Darbs ar apkopotiem datiem: GROUP BY un HAVING
- Vaicājumu rezultātu apvienošana: UNION
Kas ir SQL?
SQL ir datorvaloda darbam ar faktu kopām un to relācijām. Relāciju datu bāzu programmas, piemēram, Microsoft Office Access, izmanto SQL, lai strādātu ar datiem. Atšķirībā no daudzām datorvalodām, SQL nav grūti lasīt un saprast, pat iesācējiem. Tāpat kā daudzas datorvalodas, SQL ir starptautisks standarts, ko atzīst standartizācijas iestādes, piemēram, ISO un ANSI.
SQL kods tiek izmantots, lai aprakstītu datu kopas, kas var palīdzēt atbildēt uz jautājumiem. Izmantojot SQL, ir jāizmanto pareizā sintakse. Sintakse ir kārtulu kopums, ar kuru pareizi tiek apvienoti valodas elementi. SQL sintakses pamatā ir angļu valodas sintakse, un tajā tiek izmantota liela daļa no tiem pašiem elementiem, ko izmanto Visual Basic for Applications (VBA) sintakse.
Piemēram, vienkāršs SQL priekšraksts, kas izgūst uzvārdu sarakstu kontaktpersonām, kuru vārds ir Marija, varētu būt līdzīgs šim:
SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';
Piezīme
SQL kods tiek izmantots ne tikai datu apstrādei, bet arī datu bāzes objektu, piemēram, tabulu, izveidei un noformējuma mainīšanai. SQL daļu, kas tiek izmantota datu bāzes objektu izveidei un mainīšanai, sauc par datu definēšanas valodu (DDL). Šajā tēmā nav apskatīta DDL. Papildinformāciju skatiet rakstā Tabulu vai indeksu izveide vai modificēšana, izmantojot datu definīcijas vaicājumu.
Priekšraksti SELECT
Lai aprakstītu datu kopu, izmantojot SQL, uzrakstiet priekšrakstu SELECT. Priekšraksts SELECT satur pilnīgu aprakstu par datu kopu, ko vēlaties iegūt no datu bāzes. Tas ietver tālāk minēto.
- kuras tabulas satur datus;
- Kā dati no dažādiem avotiem ir saistīti.
- kuri lauki vai aprēķini radīs datus;
- Kritēriji, kuriem datiem jāatbilst, lai tie tiktu iekļauti.
- Vai un kā kārtot rezultātus.
SQL klauzulas
Tāpat kā teikumam, arī SQL priekšrakstam ir klauzulas. Katra klauzula izpilda SQL priekšraksta funkciju. Priekšrakstā SELECT ir obligāti jāiekļauj dažas klauzulas. Nākamajā tabulā ir norādītas visbiežāk izmantotās SQL klauzulas.
| klauzula SQL | Funkcija | Obligāts |
|---|---|---|
| SELECT | Uzskaita laukus, kuros ir vajadzīgie dati. | Jā |
| FROM | Uzskaita tabulas, kurās ir klauzulā SELECT uzskaitītie lauki. | Jā |
| WHERE | Norāda lauka kritērijus, kuriem jāatbilst katram ierakstam, lai tas tiktu iekļauts rezultātos. | Nē |
| KĀRTOŠANA PĒC | Norāda, kā kārtot rezultātus. | Nē |
| GROUP BY | SQL priekšrakstā, kas satur apkopošanas funkcijas, uzskaita laukus, kas nav apkopoti klauzulā SELECT. | Tikai tad, ja ir šādi lauki |
| HAVING | SQL priekšrakstā, kurā ir apkopošanas funkcijas, norāda nosacījumus, kas attiecas uz laukiem, kuri ir apkopoti priekšrakstā SELECT. | Nē |
SQL nosacījumi
Katra SQL klauzula sastāv no terminiem — tie ir salīdzināmi ar vārdšķirām. Nākamajā tabulā ir uzskaitīti SQL terminu tipi.
| SQL termins | Salīdzināma runas daļa | Definīcija | Piemērs |
|---|---|---|---|
| identifikators | lietvārds | Nosaukums, ko izmanto, lai identificētu datu bāzes objektu, piemēram, lauka nosaukums. | Klienti. [Tālruņa numurs] |
| operators | Darbības vārds vai apstākļa vārds | Atslēgvārds, kas apzīmē darbību vai modificē darbību. | AS |
| konstante | lietvārds | Vērtība, kas nemainās, piemēram, skaitlis vai NULL. | 42 |
| izteiksme | īpašības vārds | Identifikatoru, operatoru, konstanšu un funkciju apvienojums, kas tiek novērtēts kā viena vērtība. | >= Produkti. [Vienības cena] |
SQL pamatklauzulas: SELECT, FROM un WHERE
SQL priekšraksts ir vispārīgā formā:
SELECT field_1
FROM table_1
WHERE criterion_1
;
Piezīme
- Programma Access ignorē rindiņu pārtraukumus SQL priekšrakstā. Tomēr ieteicams katram klauzulam pievienot rindiņu, lai palīdzētu jums un citiem uzlabot SQL priekšrakstu lasāmību.
- Katrs priekšraksts SELECT beidzas ar semikolu (;). Semikols var būt redzams pēdējās teikuma beigās vai atsevišķā rindiņā SQL priekšraksta beigās.
Piemērs programmā Access
Tālāk ir parādīts, kā vienkārša atlases vaicājuma SQL priekšraksts varētu izskatīties programmā Access:
1. klauzula SELECT
2. Klauzula FROM
3. klauzula WHERE
Šajā SQL priekšraksta piemērā ir rakstīts: "Atlasiet datus, kas tiek glabāti laukos ar nosaukumu E-pasta adrese un Uzņēmums no tabulas ar nosaukumu Kontaktpersonas, īpaši tos ierakstus, kuros lauka Pilsēta vērtība ir Rīga."
Apskatīsim piemēru pa vienai klauzulai, lai uzzinātu, kā darbojas SQL sintakse.
Klauzula SELECT
SELECT [E-mail Address], Company
Tā ir klauzula SELECT. Tas sastāv no operatora (SELECT), kam seko divi identifikatori ([E-pasta adrese] un Uzņēmums).
Ja identifikatorā ir atstarpes vai speciālās rakstzīmes (piemēram, "E-pasta adrese"), tas jāiekļauj kvadrātiekavās.
Klauzulā SELECT nav jānorāda, kurās tabulās ir lauki, un tā nevar norādīt nekādus nosacījumus, kuriem jāatbilst iekļaujamajiem datiem.
Klauzula SELECT priekšrakstā SELECT vienmēr tiek rādīta pirms klauzulas FROM.
Klauzula FROM
FROM Contacts
Tā ir klauzula FROM. Tas sastāv no operatora (FROM), kam seko identifikators (Contacts).
Klauzula FROM neuzskaita atlasāmos laukus.
Klauzula WHERE
WHERE City="Seattle"
Tā ir klauzula WHERE. Tas sastāv no operatora (WHERE), kam seko izteiksme (City="Seattle").
Piezīme
Atšķirībā no klauzulām SELECT un FROM klauzula WHERE nav priekšraksta SELECT obligāts elements.
Daudzas darbības, ko ļauj veikt SQL, var paveikt, izmantojot klauzulas SELECT, FROM un WHERE. Papildinformācija par šo klauzulu lietošanu ir sniegta šajos papildu rakstos:
Rezultātu kārtošana: KĀRTOT PĒC
Līdzīgi kā Microsoft Excel, Access ļauj kārtot vaicājumu rezultātus datu lapā. Varat arī vaicājumā norādīt, kā vēlaties kārtot rezultātus, izpildot vaicājumu, izmantojot klauzulu ORDER BY. Ja izmantojat klauzulu ORDER BY, tā ir pēdējā klauzula SQL priekšrakstā.
Klauzula ORDER BY satur to lauku sarakstu, kurus vēlaties izmantot kārtošanai, tādā pašā secībā, kādā vēlaties lietot kārtošanas operācijas.
Piemēram, pieņemsim, ka rezultāti vispirms jāsakārto pēc lauka Uzņēmums vērtības dilstošā secībā un, ja ir ieraksti ar tādu pašu vērtību vērtībai Uzņēmums, pēc vērtības laukā E-pasta adrese augošā secībā. Klauzulai ORDER BY ir jāizskatās šādi:
ORDER BY Company DESC, [E-mail Address]
Piezīme
Pēc noklusējuma programma Access kārto vērtības augošā secībā (no A–Z, no mazākā līdz lielākajam). Tā vietā izmantojiet atslēgvārdu DESC, lai vērtības kārtotu dilstošā secībā.
Papildinformāciju par klauzulu ORDER BY skatiet tēmā Klauzula ORDER BY.
Darbs ar apkopotiem datiem: GROUP BY un HAVING
Dažreiz ir jāstrādā ar apkopotiem datiem, piemēram, mēneša pārdošanas kopsummām vai dārgākajām krājumos. Lai to izdarītu, klauzulas SELECT laukam lietojiet apkopošanas funkciju. Piemēram, ja vēlaties, lai vaicājumā tiktu parādīts katra uzņēmuma norādīto e-pasta adrešu skaits, klauzula SELECT var izskatīties šādi:
SELECT COUNT([E-mail Address]), Company
Apkopošanas funkcijas, kuras varat izmantot, ir atkarīgas no izmantojamā laukā vai izteiksmē esošo datu tipa. Papildinformāciju par pieejamajām apkopošanas funkcijām skatiet rakstā SQL apkopošanas funkcijas.
To lauku norādīšana, kas netiek izmantoti apkopošanas funkcijā: Klauzula GROUP BY
Izmantojot apkopošanas funkcijas, parasti ir jāizveido arī klauzula GROUP BY. Klauzula GROUP BY uzskaita visus laukus, kuriem netiek lietota apkopošanas funkcija. Ja apkopošanas funkcijas lietojat visiem vaicājuma laukiem, klauzula GROUP BY nav jāveido.
Klauzula GROUP BY nekavējoties seko pēc klauzulas WHERE vai klauzulas FROM, ja nav klauzulas WHERE. Klauzula GROUP BY uzskaita laukus, kā tie ir redzami klauzulā SELECT.
Piemēram, turpinot iepriekšējo piemēru, ja klauzula SELECT lieto apkopošanas funkciju sadaļai [E-mail Address], bet ne Company, klauzula GROUP BY jāizskatās šādi:
GROUP BY Company
Papildinformāciju par klauzulu GROUP BY skatiet tēmā Klauzula GROUP BY.
Apkopojošo vērtību ierobežošana, izmantojot grupēšanas kritērijus: klauzula HAVING
Ja vēlaties izmantot kritērijus, lai ierobežotu rezultātus, bet lauks, kuram vēlaties lietot kritērijus, tiek izmantots apkopošanas funkcijā, nevarat izmantot klauzulu WHERE. Tā vietā ir jāizmanto klauzula HAVING. Klauzula HAVING darbojas kā klauzula WHERE, bet tiek izmantota apkopotiem datiem.
Piemēram, pieņemsim, ka klauzulas SELECT pirmajā laukā izmantojat funkciju AVG (kura aprēķina vidējo vērtību):
SELECT COUNT([E-mail Address]), Company
Ja vēlaties, lai vaicājums ierobežotu rezultātus, pamatojoties uz attiecīgās funkcijas COUNT vērtību, klauzulā Where attiecīgajam laukam nevar izmantot kritēriju. Tā vietā kritēriji ir jāievieto klauzulā HAVING. Piemēram, ja vēlaties, lai vaicājums atgrieztu rindas tikai tad, ja ar uzņēmumu ir saistīta vairāk nekā viena e-pasta adrese, klauzula HAVING var izskatīties šādi:
HAVING COUNT([E-mail Address])>1
Piezīme
Vaicājumā var būt klauzula WHERE un HAVING — kritēriji laukiem, kas netiek izmantoti apkopošanas funkcijā, tiek iekļauti klauzulā WHERE, bet kritēriji laukiem, kuri tiek izmantoti kopā ar apkopošanas funkcijām, tiek iekļauti klauzulā HAVING.
Papildinformāciju par klauzulu HAVING skatiet tēmā Klauzula HAVING.
Vaicājumu rezultātu apvienošana: UNION
Ja vēlaties pārskatīt visus datus, ko atgriezuši vairāki līdzīgi atlases vaicājumi, kopā kā apvienotu kopu, izmantojiet operatoru UNION.
Operators UNION ļauj apvienot divus priekšrakstus SELECT vienā. Kombinētajiem priekšrakstiem SELECT jābūt ar vienādu izvades lauku skaitu, vienādā secībā un ar vienādiem vai saderīgiem datu tipiem. Izpildot vaicājumu, dati no katras atbilstošo lauku kopas tiek apvienoti vienā izvades laukā, lai vaicājuma izvadē būtu tāds pats lauku skaits kā katrā no select priekšrakstiem.
Piezīme
Apvienošanas vaicājumā datu tips Number un Text ir saderīgi.
Izmantojot operatoru UNION, varat arī norādīt, vai vaicājuma rezultātos jāiekļauj rindu dublikāti, ja tādi ir, izmantojot atslēgvārdu ALL.
Apvienošanas vaicājumam, kas apvieno divus priekšrakstus SELECT, SQL pamatsintakse ir šāda:
SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;
Piemēram, pieņemsim, ka jums ir tabula ar nosaukumu Produkti un tabula ar nosaukumu Pakalpojumi. Abās tabulās ir lauki, kuros ir norādīts produkta vai pakalpojuma nosaukums, cena, garantija vai garantijas pieejamība un tas, vai piedāvājat produktu vai pakalpojumu ekskluzīvi. Lai gan tabulā Produkti ir ietverta garantijas informācija, savukārt tabulā Pakalpojumi tiek glabāta garantijas informācija, pamatinformācija ir tā pati (vai konkrētais produkts vai pakalpojums ietver kvalitātes solījumu). Lai apvienotu četrus laukus no abām tabulām, varat izmantot apvienošanas vaicājumu, piemēram, tālāk norādīto:
SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;
Papildinformāciju par priekšrakstu SELECT kombinēšanu, izmantojot operatoru UNION, skatiet rakstā Vairāku atlases vaicājumu rezultātu apvienošana, izmantojot apvienošanas vaicājumu.