Če želite dobiti podatke iz zbirke podatkov, morate uporabiti jezik SQL (Structured Query Language). SQL je računalniški jezik, ki je precej podoben angleščini, vendar ga razumejo tudi programi zbirk podatkov. Vsaka poizvedba, ki jo zaženete, v ozadju uporablja SQL.
Če razumete delovanje jezika SQL, lahko ustvarite boljše poizvedbe, poleg tega pa lahko tudi popravite poizvedbo, ki ne vrača želenih rezultatov.
To je eden od člankov o strežniku SQL aplikacije Access. V tem članku je opisan osnovni način uporabe jezika SQL za izbor podatkov, za ponazoritev sintakse jezika SQL pa uporablja primere.
V tem članku
Kaj je SQL?
SQL je računalniški jezik za delo z nabori dejstev in relacijami med njimi. Relacijske zbirke podatkov, kot je Microsoft Office Access, uporabljajo jezik SQL za delo s podatki. Za razliko od številnih računalniških jezikov jezika SQL ni težko brati in razumeti, tudi za novince. Podobno kot številni drugi računalniški jeziki je jezik SQL mednarodni standard, ki ga upoštevajo organi, kot sta ISO in ANSI.
Z jezikom SQL opisujete nabore podatkov, s katerimi lahko odgovorite na vprašanja. Ko uporabljate jezik SQL, morate uporabiti pravilno sintakso. Sintaksa je nabor pravil, ki določa pravilno kombinacijo elementov jezika. Sintaksa jezika SQL temelji na sintaksi angleščine in uporablja veliko istih elementov kot sintaksa Visual Basic for Applications (VBA).
Preprosta izjava v jeziku SQL, ki pridobi seznam priimkov za stike z imenom Maja, je lahko podoben temu:
SELECT Last_Name
FROM Contacts WHERE First_Name = 'Mary';
Opomba: Jezik SQL ni uporaben le za upravljanje s podatki, omogoča tudi ustvarjanje in spreminjanje načrta predmetov zbirke podatkov, kot so tabele. Del jezika SQL, ki je uporabljen za ustvarjanje in spreminjanje predmetov zbirke podatkov, se imenuje jezik definicije podatkov (DDL). Ta članek ne obravnava jezika DDL. Če želite več informacij, glejte članek Ustvarjanje ali spreminjanje tabel ali kazal s poizvedbo za definicijo podatkov.
Stavki SELECT
Če želite opisati nabor podatkov z jezikom SQL, napišete stavek SELECT. V stavku SELECT je popoln opis nabora podatkov, ki jih želite dobiti iz zbirke podatkov. Vključeno:
-
V katerih tabelah so podatki.
-
Kakšna je relacija med podatki iz različnih virov.
-
Katera polja ali izračuni vrnejo podatke.
-
Pogoji, ki jih morajo podatki izpolniti, da so vključeni.
-
Odločitev o razvrščanju in način razvrščanja podatkov.
Stavki SQL
Podokno kot stavki ima tudi stavek SQL stavčne dele. Vsak stavčni del opravlja določeno funkcijo za stavek SQL. Nekateri deli so obvezni v stavku SELECT. V tej tabeli so najbolj pogosti stavki SQL.
Stavek SQL |
Kaj omogoča |
Zahtevano |
SELECT |
Navede polja z želenimi podatki. |
Da |
FROM |
Navede tabele s polji, ki so navedeni v stavku SELECT. |
Da |
WHERE |
Določi pogoje za polja, ki morajo biti izpolnjeni za vsak zapis, za katerega želite, da je vključen v rezultatih. |
Ne |
ORDER BY |
Določi, kako razvrstiti rezultate. |
Ne |
GROUP BY |
V izjavi SQL z združenimi funkcijami navaja polja, ki niso povzeta v stavku SELECT. |
Le, če so takšna polja |
HAVING |
V izjavi SQL, ki ima združene funkcije, določa pogoje za polja, povzeta v izjavi SELECT. |
Ne |
Pogoji SQL
Vsak stavčni del SQL je sestavljen iz pogojev – primerljive besedne vrste. V tej tabeli so vrste pogojev SQL.
Pogoj SQL |
Primerljive besedne vrste |
Definicija |
Primer |
identifikator |
samostalnik |
Ime, s katerim identificirate predmet zbirke podatkov, na primer ime polja. |
Stranke.[Telefonska številka] |
operator |
glagol ali prislov |
Ključna beseda, ki predstavlja dejanje ali ga spreminja. |
AS |
konstanta |
samostalnik |
Vrednost, ki se ne spreminja, kot je številka ali NULL. |
42 |
izraz |
pridevnik |
Kombinacija identifikatorjev, operaterjev, konstant in funkcij, s katerimi ocenjujete vrednost. |
>= Izdelki.[Cena enote] |
Osnovni stavki jezika SQL: SELECT, FROM in WHERE
Splošna oblika stavka SQL:
SELECT field_1
FROM table_1 WHERE criterion_1 ;
Opombe:
-
Access prezre prelome vrstice v stavku SQL. Vendar pa priporočamo, da uporabite vrstico za vsak stavek, saj tako izboljšate berljivost stavkov SQL zase in za druge.
-
Vsak stavek SELECT se konča s podpičjem (;). Podpičje se lahko prikaže na koncu zadnjega stavka ali v vrstici na koncu stavka SQL.
Primer v Accessu
Spodaj je prikazan stavek SQL za preprosto poizvedbo za izbor, kot je lahko videti v Accessu:
1. Stavčni del SELECT
2. Stavčni del FROM
3. Stavčni del WHERE
Ta vzorčni stavek SQL pravi »Izberi podatke, shranjene v poljih, imenovanih »E-poštni naslov« in »Podjetje« iz tabele »Stiki«, zlasti tiste zapise, v katerih je vrednost polja »Mesto« Seattle.«
Oglejmo si primer, vsak stavek posebej. Tako bomo videli, kako deluje sintaksa jezika SQL.
Stavčni del SELECT
SELECT [E-mail Address], Company
To je stavek SELECT. Sestavljen je iz operatorja (SELECT), kateremu sledita dva identifikatorja ([E-poštni naslov] in Podjetje).
Če identifikator vključuje presledke ali posebne znake (na primer »E-poštni naslov«), mora biti obdan z oglatimi oklepaji.
Ni nujno, da stavčni del SELECT določa, v katerih tabelah so polja, in ne more določiti pogojev, ki jih morajo podatki izpolniti, da so vključeni.
Stavčni del SELECT se vedno prikaže pred stavčnim delom FROM v stavku SELECT.
Stavčni del FROM
FROM Contacts
To je stavčni del FROM. Sestavljen je iz operatorja (FROM), kateremu sledi identifikator (Stiki).
Stavčni del FROM ne navaja polj, ki jih je treba izbrati.
Stavčni del WHERE
WHERE City="Seattle"
To je stavčni del WHERE. Sestavljen je iz operatorja (WHERE), kateremu sledi izraz (Mesto="Seattle").
Opomba: Za razliko od stavčnih delov SELECT in FROM, stavčni del WHERE ni obvezen element stavka SELECT.
Številna dejanja, ki jih omogoča jezik SQL, lahko naredite tako, da uporabite stavčne dele SELECT, FROM in WHERE. Več informacij o uporabi teh stavčnih delov najdete v teh člankih:
Razvrščanje rezultatov: ORDER BY
Podobno kot Microsoft Excel, tudi Access omogoča razvrščanje rezultatov poizvedbe na podatkovnem listu. V poizvedbi lahko določite tudi način razvrščanja rezultatov ob zagonu poizvedbe s stavkom ORDER BY. Če uporabite stavčni del ORDER BY, je to zadnji stavek v izjavi SQL.
V stavčnem delu ORDER BY je seznam polj, ki jih želite uporabiti za razvrščanje, v istem vrstnem redu, kot ga želite uporabiti za postopke razvrščanja.
Recimo, da želite rezultate najprej razvrstiti po vrednosti polja »Podjetje« v padajočem vrstnem redu in – če obstajajo zapisi z enako vrednostjo za »Podjetje«, razvrščene po vrednostih v polju E-poštni naslov v naraščajočem vrstnem redu. Vaš stavek ORDER BY bi bil podoben tem:
ORDER BY Company DESC, [E-mail Address]
Opomba: Access vrednosti privzeto razvrsti po padajočem vrstnem redu (A-Z, najmanjši do največji). S ključno besedo DESC lahko vrednosti namesto tega razvrstite po padajočem vrstnem redu.
Če želite več informacij o stavčnem delu ORDER BY, glejte članek Stavčni del ORDER BY.
Delo s povzetimi podatki: GROUP BY in HAVING
Včasih boste želeli delati s povzetimi podatki, na primer skupna vrednost prodaje v mesecu ali najdražji elementi na zalogi. To naredite tako, da uporabite združevalna funkcija za polje v stavčnem delu SELECT. Če na primer želite, da poizvedba pokaže število e-poštnih naslovov, navedenih za posamezno podjetje, je stavčni del SELECT lahko podoben temu:
SELECT COUNT([E-mail Address]), Company
Združevalne funkcije, ki jih lahko uporabite, so odvisne od vrste podatkov, ki so v polju ali izrazu, ki ga želite uporabiti. Če želite več informacij o razpoložljivih združevalnih funkcij, glejte članek Združevalne funkcije SQL.
Navajanje polj, ki niso uporabljena v združevalni funkciji: Stavčni del GROUP BY
Ko uporabite združevalne funkcije, morate običajno ustvariti tudi stavčni del GROUP BY. Stavčni del GROUP BY navede vsa polja, za katera ne uporabite združevalne funkcije. Če uporabite združevalne funkcije za vsa polja v poizvedbi, vam ni treba ustvariti stavčnega dela GROUP BY.
Stavčni del GROUP BY nemudoma sledi stavčnemu delu WHERE ali stavčnemu delu FROM, če ni stavčnega dela WHERE. Stavčni del GROUP BY navede vsa polja, kot so prikazana v stavčnem delu SELECT.
Če nadaljujemo prejšnji primer: če izbrani stavčni del SELECT uporabi združevalno funkcijo za [E-poštni naslov], vendar ne za polje »Podjetje«, je stavčni del GROUP BY podoben temu:
GROUP BY Company
Če želite več informacij o stavčnem delu GROUP BY, glejte članek Stavčni del GROUP BY.
Omejevanje združenih vrednosti po pogojih skupine: stavčni del HAVING
Če želite uporabiti pogoje za omejevanje rezultatov, vendar je polje, za katerega želite uporabiti pogoj, v združevalni funkciji, ne morete uporabiti stavčnega dela WHERE. Namesto tega uporabite stavčni del HAVING. Stavčni del HAVING deluje kot stavčni del WHERE, vendar je uporabljen za združene podatke.
Recimo, da uporabite funkcijo AVG (ki izračuna povprečno vrednost) s prvim poljem v stavčnem delu SELECT:
SELECT COUNT([E-mail Address]), Company
Če želite, da poizvedba omeji rezultate na podlagi vrednosti funkcije COUNT, ne morete uporabiti pogoja za to polje v stavčnem delu WHERE. Namesto tega postavite pogoje v stavčni del HAVING. Če želite, da poizvedba vrne vrstice le, če je s podjetjem povezan več kot en e-poštni naslov, je stavčni del HAVING podoben temu:
HAVING COUNT([E-mail Address])>1
Opomba: Poizvedba ima lahko stavčni del WHERE in stavčni del HAVING. Pogoji za polja, ki niso uporabljena v združevalni funkciji, gredo v stavčni del WHERE, pogoji za polja, uporabljena z združevalnimi funkcijami, gredo v stavčni del HAVING.
Če želite več informacij o stavčnem delu HAVING, glejte članek Stavčni del HAVING.
Kombiniranje rezultatov poizvedbe: UNION
Če želite pregledati vse podatke, ki jih vrnejo več podobnih izbranih poizvedb skupaj kot kombiniran nabor, uporabite operator UNION.
Z operatorjem UNION lahko dva stavka SELECT kombinirate v enega. Stavki SELECT, ki jih kombinirate, morajo imeti enako število izhodnih polj v istem vrstnem redu in z istimi ali kompatibilnimi vrstami podatkov. Ko poizvedbo zaženete, so podatki iz vsakega nabora pripadajočih polj kombinirani v eno izhodno polje, tako da ima izhod poizvedbe enako število polj kot vsak od izbranih stavkov.
Opomba: Za namene poizvedbe za združevanje sta vrsti podatkov »Število« in »Besedilo« združljivi
Ko uporabite operator UNION, lahko tudi določite, ali naj rezultati poizvedbe vključujejo podvojene vrstice, če obstajajo. To naredite tako, da uporabite ključno besedilo ALL.
Osnovna sintaksa jezika SQL za poizvedbo za združevanje, ki kombinira sva stavka SELECT:
SELECT field_1
FROM table_1 UNION [ALL] SELECT field_a FROM table_a ;
Recimo, da imate tabelo z imenom »Izdelki« in drugo tabelo z imenom »Storitve«. V obeh tabelah so polja z imenom izdelka ali storitve, ceno, jamstvom ali jamstvom za razpoložljivost in s tem, ali izdelek ali storitev ponujate izključno. Čeprav so v tabeli »Izdelki« shranjeni podatki o garanciji, v tabeli »Storitve« pa so shranjeni podatki o jamstvu, so osnovni podatki enaki (ali določen izdelek ali storitev vsebuje obljubo o kakovosti). Če želite združiti štiri polja iz dveh tabel, lahko uporabite poizvedbo za združevanje, kot je ta:
SELECT name, price, warranty_available, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee_available, exclusive_offer FROM Services ;
Če želite več informacij o tem, kako kombinirate stavke SELECT z operatorjem UNION, glejte Združevanje rezultatov več poizvedb za izbiranje s poizvedbo za združevanje.