Ja vaicājumi pietiekami nepalīdz, pievienojot pamata priekšrakstus, SQL var labāk koncentrēties uz rezultātiem. Apskatīsim dažu veidu SQL priekšrakstus un klauzulas vai daļas, ko varat rediģēt, lai iegūtu vēlamos rezultātus.
Piezīme.: Šis raksts neattiecas uz Access tīmekļa lietojumprogrammām — tāda veida datu bāzi, kas tiek izstrādāta programmā Access un publicēta tiešsaistē.
Šajā rakstā
Priekšraksta Select izveide
SQL atlases priekšrakstam ir divas līdz trīs klauzulas. Klauzula SELECT norāda datu bāzei, kur meklēt datus, un pieprasa, lai tā atgriež konkrētu rezultātu.
Piezīme.: Priekšraksti SELECT vienmēr beidzas ar semikolu (;) vai nu pēdējās klauzulas beigās, vai arī uz rindas atsevišķi SQL priekšraksta beigās.
Šajā atlases priekšrakstā programma Access tiek aicināta iegūt informāciju no kolonnām E-pasta adrese un Uzņēmums no tabulas Kontaktpersonas, īpaši, ja kolonnā Pilsēta tā atrod "Sietla".
Iepriekš minētām vaicājumam ir trīs klauzulas SELECT, FROM un WHERE.
1. Klauzulā SELECT ir uzskaitītas kolonnas, kurās ir dati, ko vēlaties izmantot, un ir operators (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"), iekļaujiet identifikatoru kvadrātiekavās.
2. Klauzula FROM identificē avota tabulu. Šajā piemērā tam ir operators (FROM), kam seko identifikators (Kontaktpersonas).
3. Klauzula WHERE ir papildu klauzula. Piemērā ir operators (WHERE), kam seko izteiksme (City="Seattle").
Papildinformāciju par atlases vaicājumiem skatiet rakstā vienkārša atlases vaicājuma izveide.
Lūk, bieži lietoto SQL klauzulu saraksts:
SQL klauzula |
Funkcija |
Vai obligāts ? |
SELECT |
Uzskaita laukus, kuros ir interešu dati. |
Jā |
FROM |
Uzskaita 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ē |
Katru SQL klauzulu veido termini. Šeit ir saraksts ar dažiem bieži lietotiem SQL terminiem.
SQL termins |
Definīcija |
Piemērs |
identifikators |
Nosaukums, ko izmanto, lai identificētu datu bāzes objektu, piemēram, kolonnas nosaukums. |
[E-pasta adrese] un uzņēmums |
operators |
Atslēgvārds, kas apzīmē darbību vai modificē darbību. |
AS |
konstante |
Vērtība, kas nemainās, piemēram, skaitlis vai NULL. |
42 |
izteiksme |
Identifikatoru, operatoru, konstanšu un funkciju kombinācija, kas tiek novērtēta ar vienu vērtību. |
>= Produkti. [Vienības cena] |
Klauzulas SELECT pielāgošana
Pielāgošana |
Piemērs |
Lai skatītu tikai noteiktas vērtības. Klauzulā SELECT izmantojiet atslēgvārdu DISTINCT. |
Piemēram, ja klienti ir no vairākiem dažādiem filiālēm un dažiem ir viens tālruņa numurs, bet dažiem tālruņu numuri ir norādīti tikai vienu reizi, klauzula SELECT būtu šāda:
|
Lai mainītu veidu, kā identifikators tiek rādīts datu lapas skatā, lai uzlabotu lasāmību. Klauzulā SELECT izmantojiet operatoru AS (atslēgvārds, kas apzīmē darbību vai modificē darbību) ar lauka aizstājvārdu. Lauka aizstājvārds ir nosaukums, kas tiek piešķirts laukam, lai rezultāti būtu vieglāk lasāmi. |
|
Klauzulas FROM pielāgošana
Pielāgošana |
Piemērs |
Var izmantot tabulas aizstājvārdu vai citu nosaukumu, ko piešķirat tabulai atlases priekšrakstā. Tabulas aizstājvārds ir noderīgs, ja tabulas nosaukuma nosaukums ir garš, īpaši, ja ir vairāki lauki ar vienādu nosaukumu no dažādām tabulām. |
Lai atlasītu datus divos laukos, kuru nosaukums ir ID, viens no tiem ir tabulas tblCustomer, bet otra — tabulā tblOrder:
Izmantojiet operatoru AS, lai definētu tabulu aizstājvārdu klauzulā FROM:
Pēc tam varat izmantot šos tabulu aizstājvārdu klauzulā SELECT šādi:
|
Izmantojiet savienojumus, lai apvienotu ierakstu pārus no diviem datu avotiem vienā rezultātā vai norādītu, vai iekļaut ierakstus no abām tabulām, ja saistītajā tabulā nav atbilstoša ieraksta. Savienojiet tabulas, lai vaicājums apvienotu vienumus no tabulām, un izslēdz vienumus, ja otrā tabulā nav atbilstoša ieraksta. |
Klauzula FROM varētu izskatīties šādi:
|
Par savienojumu izmantošana
Pastāv divi savienojumu tipi: iekšējie un ārējie savienojumi. Iekšējie savienojumi vaicājumos ir izplatītāk. Izpildot vaicājumu ar iekšējo savienojumu, rezultāts parāda tikai tos vienumus, kuriem pastāv kopīga vērtība abās savienotās tabulās.
Ārējie savienojumi norāda, vai ietvert datus, ja nepastāv kopīga vērtība. Ārējie savienojumi ir virziena savienojums, kas nozīmē, ka var norādīt, vai ietvert visus ierakstus no savienojuma pirmās tabulas (dēvēts par kreiso savienojumu) vai ietvert visus ierakstus no savienojuma otrās tabulas (dēvēts par labo savienojumu). Ārējai savienojumam ir šāda SQL sintakse:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Skatiet papildinformāciju par savienojumu izmantošana vaicājumā sadaļā Tabulu un vaicājumu apvienošana.
Klauzulas WHERE pielāgošana
Klauzulā WHERE ir kritēriji, kas palīdz ierobežot vaicājumā atgriezto vienumu skaitu. Skatiet vaicājumu kritēriju piemērus un to darbību.
Piemērs, kā varat pielāgot pamata klauzulu WHERE, ir vaicājuma rezultātu ierobežošana. Pieņemsim, ka vēlaties atrast klienta tālruņa numuru un atceraties tikai viņa uzvārdu kā Bagel. Šajā piemērā uzvārdi tiek glabāti laukā LastName, tāpēc SQL sintakse būtu:
WHERE [LastName]='Bagel'
Izmantojiet klauzulu WHERE, lai apvienotu datu avotus kolonnām, kurās ir atbilstīgi dati, bet atšķirīgi datu tipi. Tas ir noderīgs, jo nevar izveidot savienojumu starp laukiem, kuriem ir atšķirīgi datu tipi. Izmantojiet vienu lauku kā kritēriju otram laukam ar atslēgvārdu LIKE . Piemēram, ja vēlaties izmantot datus no tabulas Līdzekļi un tabulas Darbinieki, tikai tad, ja līdzekļa tips tabulas Līdzekļi laukā Līdzekļu tips ir skaitlis 3 tabulas Darbinieki laukā Daudzums, lūk, kā izskatīsies klauzula Where:
WHERE field1 LIKE field2
Svarīgi!: Nevar norādīt kritērijus laukam, ko klauzulā WHERE izmanto ar apkopošanas funkciju. Tā vietā ir jāizmanto klauzula HAVING, lai norādītu kritērijus apkopotiem laukiem.
Pielāgošana ar operatoru UNION
Izmantojiet operatoru UNION, ja vēlaties skatīt vairāku līdzīgu atlases vaicājumu rezultātu kombinēto skatu. Piemēram, ja datu bāzē ir tabula Produkti un pakalpojumu tabula un tajās ir trīs lauki: ekskluzīvs piedāvājums vai produkts vai pakalpojums, cena, garantija vai garantija. Lai gan tabulā Produkti tiek glabāta garantijas informācija, un pakalpojumu tabulā tiek glabāta garantijas informācija, pamatinformācija ir tā pati. Apvienošanas vaicājumu var izmantot, lai apvienotu trīs laukus no divām tabulām šādi:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
Vaicājuma izpildes laikā dati no katras atbilstošo lauku kopas tiek apvienoti vienā izvades laukā. Lai rezultātos iekļautu dublētas rindas, izmantojiet operatoru ALL.
Piezīme.: Priekšrakstam 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. Ar savienojuma vaicājumu datu tipi Skaitlis un Teksts ir saderīgi.
Papildinformāciju par apvienošanas vaicājumiem skatiet rakstā Apvienošanas vaicājuma izmantošana, lai skatītu vienotu rezultātu no vairākiem vaicājumiem.