Ja vēlaties izgūt datus no datu bāzes, pieprasiet datus, izmantojot strukturētu vaicājumu valodu vai SQL. SQL ir datora valoda, kas ir ļoti līdzīga angļu valodai, taču datu bāzu programmas saprot. Katrs palaistais vaicājums izmanto SQL ainas.
Izprotot SQL darbību, varat izveidot labākus vaicājumus un vieglāk saprast, kā izlabot vaicājumu, kas neatgriež vēlamos rezultātus.
Šis raksts ietilpst rakstu kopā par Access SQL. Šajā rakstā ir aprakstīta SQL pamatiešana datu atlasei un sniegti piemēri SQL sintakses attēlošanai.
Šajā rakstā
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, darbam ar datiem izmanto SQL. Atšķirībā no daudzām datora valodām, SQL nav grūti lasīt un saprast pat iesācējiem. Tāpat kā daudzas datora valodas, ARĪ SQL ir starptautisks standarts, ko atpazīst standartiem, piemēram, ISOun ANSI.
Izmantojiet SQL, lai aprakstītu datu kopas, kas var palīdzēt atbildēt uz jautājumiem. Izmantojot SQL, jāizmanto pareizā sintakse. Sintakse ir kārtulu kopa, kas nodrošina pareizas valodas elementu kombinēšanu. SQL sintakses pamatā ir angļu valodas sintakse, un tā izmanto daudzus tos pašus elementus, kas visual Basic for Applications (VBA) sintaksē.
Piemēram, vienkāršs SQL priekšraksts, kas izgūst sarakstu ar uzvārdiem kontaktpersonām, kuru vārds ir Marija, varētu izskatīties šādi:
SELECT Last_Name
FROM Contacts WHERE First_Name = 'Mary';
Piezīme.: SQL tiek izmantots ne tikai darbībām ar datiem, bet arī datu bāzes objektu, piemēram, tabulu, izveidošanai un maiņai. SQL daļa, kas tiek izmantota datu bāzes objektu izveidei un maiņai, tiek dēvēta par datu definēšanas valodu (DDL). Šī tēma neattiecas uz 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, ir jāraksta priekšraksts SELECT. Priekšraksts SELECT satur pilnu datu kopas aprakstu, kuru vēlaties iegūt no datu bāzes. Tas ietver:
-
Kādās tabulās ir dati.
-
Kā ir saistīti dati no dažādiem avotiem.
-
Kuri lauki vai aprēķini izveidos datus.
-
Kritēriji, kuriem datiem jāatbilst, ir jāiekļauj.
-
Vai un kā kārtot rezultātus.
SQL klauzulas
Līdzīgi teikumam SQL priekšrakstam ir klauzulas. Katra klauzula izpilda SQL priekšraksta funkciju. Priekšrakstā SELECT ir obligāti dažas klauzulas. Nākamajā tabulā ir norādītas visbiežāk lietotās SQL klauzulas.
SQL klauzula |
Funkcija |
Obligāts |
SELECT |
Saraksti laukiem, kuros ir interešu dati. |
Jā |
FROM |
Saraksti tabulas, kurās ir klauzulā SELECT uzskaitītie lauki. |
Jā |
WHERE |
Norāda lauku kritērijus, kas jāizpilda katram ierakstam, lai tie tiktu iekļauti rezultātos. |
Nē |
ORDER BY |
Norāda, kā kārtot rezultātus. |
Nē |
GROUP BY |
SQL priekšrakstā, kurā ir apkopošanas funkcijas, uzskaita laukus, kas nav summēti 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
Katru SQL klauzulu veido termini, kas ir līdzīgi runas daļām. Tālāk sniegtajā tabulā ir uzskaitīti SQL terminu tipi.
SQL termins |
Līdzīga runas daļa |
Definīcija |
Piemērs |
identifikators |
lietvārds |
Nosaukums, ko izmanto, lai identificētu datu bāzes objektu, piemēram, lauka nosaukumu. |
Klienti. [Tālruņa numurs] |
operators |
darbības vārds vai adverb |
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 kombinācija, kas tiek novērtēta ar vienu vērtību. |
>= Produkti. [Vienības cena] |
Pamata SQL klauzulas: SELECT, FROM un WHERE
SQL priekšrakstam ir vispārīga forma:
SELECT field_1
FROM table_1 WHERE criterion_1 ;
Piezīmes.:
-
Programma Access SQL priekšrakstā ignorē rindiņu pārtraukumus. Tomēr apsveriet iespēju izmantot līniju katrai klauzulai, lai uzlabotu SQL priekšrakstu lasāmību gan sev, gan citiem.
-
Katrs priekšraksts SELECT beidzas ar semikolu (;). Semikols var tikt parādīts pēdējās klauzulas beigās vai rindā pašā SQL priekšraksta beigās.
Piemērs programmā Access
Tālāk ir parādīts, kā sql priekšraksts vienkāršam atlases vaicājumam var izskatīties programmā Access:
1. Klauzula SELECT
2. Klauzula FROM
3. Klauzula WHERE
Šis SQL priekšraksta piemērs lasa "Atlasiet datus, kas tiek glabāti laukos ar nosaukumu E-pasta adrese un Uzņēmums no tabulas Kontaktpersonas, īpaši tie ieraksti, kuros lauka Pilsēta vērtība ir Sietla."
Apskatīsim piemēru ar vienu klauzulu, lai uzzinātu, kā SQL sintakse darbojas.
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.
Klauzulai SELECT nav jānorāda, kurās tabulās ir lauki, un tā nevar norādīt nosacījumus, kuriem ir jāatbilst iekļaujamajiem datiem.
Klauzula SELECT vienmēr tiek parādīta priekšraksta SELECT klauzulas FROM priekšā.
Klauzula FROM
FROM Contacts
Tā ir klauzula FROM. Tas sastāv no operatora (FROM), kam seko identifikators (Kontaktpersonas).
Klauzulā FROM nav saraksts ar atlasītajiem laukiem.
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 obligāts priekšraksta SELECT elements.
Daudzas DARBĪBAS, kuras var veikt SQL, var veikt, izmantojot klauzulas SELECT, FROM un WHERE. Papildinformācija par to, kā izmantojat šīs klauzulas, ir sniegta šajos rakstos:
Rezultātu kārtošana: ORDER BY
Tāpat kā Microsoft Excel, arī Access ļauj kārtot vaicājuma rezultātus datu lapā. Vaicājumā varat arī norādīt, kā vēlaties kārtot rezultātus vaicājuma izpildes laikā, izmantojot klauzulu ORDER BY. Ja izmantojat klauzulu ORDER BY, tā ir pēdējā klauzula SQL priekšrakstā.
Klauzulā ORDER BY ir to lauku saraksts, kurus vēlaties izmantot kārtošanai, tādā pašā secībā, kādā jālieto kārtošanas darbības.
Piemēram, pieņemsim, ka vēlaties, lai rezultāti vispirms tiek kārtoti pēc lauka Uzņēmums vērtības dilstošā secībā, un, ja pastāv ieraksti ar tādu pašu vērtību uzņēmumam, tie tiek sakārtoti blakus vērtībām laukā E-pasta adrese augošā secībā. Klauzulai ORDER BY ir līdzīgai šādai klauzulai:
ORDER BY Company DESC, [E-mail Address]
Piezīme.: Pēc noklusējuma programma Access kārto vērtības augošā secībā (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žkārt jūs vēlaties strādāt ar apkopotiem datiem, piemēram, kopējos pārdošanas apjomus mēnesī vai visdārgākās preces krājumos. Lai to izdarītu, klauzulā SELECT laukam apkopošanas funkcija attēlu. Piemēram, ja vēlaties, lai vaicājumā tiktu rādīts katram uzņēmumam norādīto e-pasta adrešu skaits, klauzula SELECT varētu būt līdzīgai šādai:
SELECT COUNT([E-mail Address]), Company
Apkopošanas funkcijas, kuras varat izmantot, ir atkarīgas no tā, kāda tipa dati atrodas laukā vai izteiksmē, kuru vēlaties izmantot. 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 neizmantojat apkopošanas funkciju. Ja lietojat apkopošanas funkcijas visiem vaicājuma laukiem, klauzula GROUP BY nav jāizveido.
Klauzula GROUP BY ir uzreiz aiz 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 uz [E-pasta adrese], bet ne uz Uzņēmums, klauzulai GROUP BY ir līdzīga šī informācija:
GROUP BY Company
Papildinformāciju par klauzulu GROUP BY skatiet tēmā Klauzula GROUP BY.
Vērtību apkopošanas ierobežošana, izmantojot grupas 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 apkopotajiem datiem.
Piemēram, pieņemsim, ka izmantojat funkciju AVG (kas aprēķina vidējo vērtību) ar pirmo lauku klauzulā SELECT:
SELECT COUNT([E-mail Address]), Company
Ja vēlaties, lai vaicājums ierobežotu rezultātus, pamatojoties uz šīs funkcijas COUNT vērtību, nevarat izmantot kritēriju šim laukam klauzulā WHERE. Tā vietā ievietojiet kritērijus klauzulā HAVING. Piemēram, ja vēlaties, lai vaicājums atgrieztu rindas tikai tad, ja ir vairākas ar uzņēmumu saistītas e-pasta adreses, klauzula HAVING varētu būt līdzīgai šādai:
HAVING COUNT([E-mail Address])>1
Piezīme.: Vaicājumam var būt klauzula WHERE un klauzula HAVING — kritēriji laukiem, kas netiek izmantoti apkopošanas funkcijā, atrodas klauzulā WHERE, bet kritēriji laukiem, kas tiek izmantoti ar apkopošanas funkcijām, atrodas klauzulā HAVING.
Papildinformāciju par klauzulu HAVING skatiet tēmā Klauzula HAVING.
Vaicājumu rezultātu apvienošana: UNION
Ja vēlaties kopā pārskatīt visus datus, ko atgriež vairāki līdzīgi atlases vaicājumi, kā kombinēto kopu, izmantojiet operatoru UNION.
Operators UNION ļauj apvienot divus priekšrakstus SELECT vienā. Apvienotajiem priekšrakstiem SELECT jābūt vienādam izvades lauku skaitam vienā un tajā pašā secībā un ar tiem pašiem 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ā katram atlases priekšrakstam.
Piezīme.: Ar savienojuma vaicājumu datu tipi Skaitlis un Teksts 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ēgas vārdu ALL.
Apvienošanas vaicājuma, kas apvieno divus priekšrakstus SELECT, pamata SQL sintakse 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 cita tabula ar nosaukumu Pakalpojumi. Abās tabulās ir lauki, kuros ir produkta vai pakalpojuma nosaukums, cena, garantija vai garantijas pieejamība, kā arī informācija par produktu vai pakalpojumu tikai par produktu vai pakalpojumu. Lai gan tabulā Produkti tiek glabāta garantijas informācija, un pakalpojumu tabulā tiek glabāta garantijas informācija, pamatinformācija ir tā pati (neatkarīgi no tā, vai konkrētam produktam vai pakalpojumam ir garantēta kvalitāte). Apvienošanas vaicājumu, piemēram, tālāk norādīto, var izmantot, lai apvienotu četrus laukus no abām tabulām:
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.