Access SQL: osnovni koncepti, vokabular i sintaksa

Primjenjuje se na
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Kada želite dohvatiti podatke iz baze podataka, tražite podatke pomoću SQL-a (Structured Query Language. SQL je računalni jezik vrlo sličan engleskom, ali ga programi za baze podataka razumiju. Svaki upit koji pokrenete u pozadini koristi SQL.

Razumijevanje funkcioniranja SQL-a može vam pomoći pri stvaranju boljih upita i može vam olakšati razumijevanje rješavanja upita koji ne vraća željene rezultate.

Ovo je jedan iz niza članaka o jeziku Access SQL. U ovom se članku opisuje osnovno korištenje SQL-a za odabir podataka te se koriste primjeri za ilustraciju sintakse SQL-a.

Sadržaj članka

Što je SQL?

SQL je računalni jezik za rad sa skupovima činjenica i vezama među njima. Relacijski programi za baze podataka, kao što je Microsoft Office Access, koriste SQL za rad s podacima. Za razliku od mnogih računalnih jezika, SQL nije teško čitati i razumjeti, čak ni za početnike. Kao i mnogi drugi računalni jezici, SQL je međunarodni standard koji priznaju standardizacijske ustanove, primjerice ISO i ANSI.

SQL se koristi za opisivanje skupova podataka koji vam mogu pomoći odgovoriti na pitanja. Kada koristite SQL, morate upotrijebiti ispravnu sintaksu. Sintaksa je skup pravila po kojima se elementi jezika pravilno kombiniraju. Sintaksa programa SQL temelji se na sintaksi engleskog jezika i koristi mnoge iste elemente kao i sintaksa modula programskog jezika Visual Basic for Applications (VBA).

Primjerice, jednostavna SQL naredba koja prikazuje popis prezimena kontakata čije je ime Marija izgleda ovako:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Napomena

SQL se ne koristi samo za obradu podataka, već i za stvaranje i izmjenu dizajna objekata baze podataka, primjerice tablica. Dio SQL-a koji se koristi za stvaranje i izmjenu objekata u bazama podataka zove se jezik za definiranje podataka (Data-Definition Language, DDL). Ova tema ne opisuje jezik za definiranje podataka (DDL). Dodatne informacije potražite u članku Stvaranje i izmjena tablica ili indeksa pomoću upita za definiranje podataka.

Naredbe SELECT

Da biste opisali skupove podataka pomoću SQL-a, morate napisati naredbu SELECT. Naredba SELECT sadrži potpun opis skupova podataka koje želite dohvatiti iz baze podataka. Popis obuhvaća sljedeće:

  • Koje tablice sadrže te podatke?
  • Kako se podaci iz različitih izvora povezuju?
  • Koja će polja ili izračuni dati te podatke?
  • S kojim se kriterijima podaci moraju podudarati da bi bili obuhvaćeni.
  • Treba li sortirati rezultate i kako?

SQL uvjeti

SQL naredba ima sastavne dijelove – uvjete. Svaki uvjet obavlja funkciju za SQL naredbu. Neki uvjeti su obavezni u SQL naredbi. U sljedećoj su tablici navedeni najčešći SQL uvjeti.

SQL uvjet Funkcija Obavezno
SELECT Daje popis polja koja sadrže relevantne podatke. Da
FROM Navodi tablice koje sadrže polja navedena u uvjetu SELECT. Da
WHERE Određuje kriterije polja s kojima se svaki zapis mora podudarati da bi bio uvršten u rezultate. Ne
POREDAJ PO Pobliže opisuje način sortiranja rezultata. Ne
GROUP BY U SQL naredbi koja sadrži agregatne funkcije popisuje polja koja nisu sažeta u uvjetu SELECT. Samo ako ima takvih polja
HAVING U SQL naredbi koja sadrži agregatne funkcije navodi uvjete koji se primjenjuju na polja sažeta u naredbi SELECT. Ne

SQL izrazi

Svaka se SQL naredba sastoji od izraza, koji se mogu usporediti s vrstama riječi. U sljedećoj su tablici popisane vrste SQL izraza.

SQL izraz Vrsta riječi kojoj je sličan Definicija Primjer
identifikator imenica Naziv koji se koristi za prepoznavanje objekta baze podataka, primjerice naziv polja. Kupci. [Telefonski broj]
operator glagol ili prilog Ključna riječ koja predstavlja akciju ili mijenja akciju. AS
konstanta imenica Vrijednost koja se ne mijenja, primjerice broj ili NULL. 42
izraz pridjev Kombinacija identifikatora, operatora, konstanti i funkcija koje se svode na jednu vrijednost. >= Proizvodi. [Jedinična cijena]

Vrh stranice

Osnovni SQL uvjeti: SELECT, FROM i WHERE

SQL naredba ima sljedeći općeniti oblik:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Napomena

  • Access ignorira prijelome retka u SQL naredbi. No da biste poboljšali čitljivost svojih SQL naredbi sebi i drugima, preporučuje se da svaku naredbu pišete u zaseban redak.
  • Svaka naredba SELECT završava točkom sa zarezom (;). Točka sa zarezom može se pojaviti na kraju zadnje naredbe ili u zasebnom retku na kraju SQL naredbe.

Primjer u programu Access

Sljedeći primjer pokazuje kako bi mogao izgledati jednostavan upit odabiranja u programu Access:

Tablica SQL objekata koja prikazuje naredbu SELECT

1. Uvjet SELECT

2. FROM (uvjet)

3. izraz WHERE

Ovaj primjer SQL naredbe znači "Odaberi podatke spremljene u poljima pod nazivom Adresa e-pošte i Tvrtka, iz tablice Kontakti, točnije one zapise u kojima vrijednost u polju Grad glasi Sisak".

Pogledajte primjer, uvjet po uvjet, da biste vidjeli kako funkcionira sintaksa SQL-a.

Uvjet SELECT

SELECT [E-mail Address], Company

Ovo je uvjet SELECT. Sastoji se od operatora (SELECT) nakon kojeg slijede dva identifikatora ([Adresa e-pošte] i Tvrtka).

Ako identifikator sadrži razmake ili posebne znakove (primjerice, "Adresa e-pošte"), mora se nalaziti u uglatim zagradama.

U uvjetu SELECT ne mora biti navedeno koje tablice sadrže polja niti se u njemu smiju navoditi uvjeti koje podaci moraju ispuniti da bi bili uvršteni.

U naredbi SELECT uvjet SELECT uvijek se pojavljuje ispred uvjeta FROM.

Uvjet FROM

FROM Contacts

Ovo je uvjet FROM. Sastoji se od operatora (FROM) nakon kojeg slijedi identifikator (Contacts).

U uvjetu FROM ne navode se polja koja treba odabrati.

Uvjet WHERE

WHERE City="Seattle"

Ovo je uvjet WHERE. Sastoji se od operatora (WHERE) nakon kojeg slijedi izraz (Grad="Sisak").

Napomena

Za razliku od uvjeta SELECT i FROM, uvjet WHERE nije obavezan element naredbe SELECT.

Pomoću uvjeta SELECT, FROM i WHERE možete izvršiti mnoge akcije koje SQL omogućuje. Dodatne informacije o načinu korištenja tih uvjeta navedene su u sljedećim dodatnim člancima:

Vrh stranice

Sortiranje rezultata: ORDER BY

Kao i Microsoft Excel, Access omogućuje sortiranje rezultata u podatkovnoj tablici. Pomoću uvjeta ORDER BY u upitu možete i pobliže opisati način na koji želite sortirati rezultate kada se upit pokrene. Ako koristite uvjet ORDER BY, to mora biti posljednji uvjet u SQL naredbi.

Uvjet ORDER BY sadrži popis polja koja želite koristiti za sortiranje, u istom poretku u kojem želite primijeniti operacije sortiranja.

Pretpostavimo, primjerice, da najprije želite sortirati rezultate po vrijednosti u polju Tvrtka silaznim redoslijedom te ih – ako nema zapisa s istom vrijednošću za polje Tvrtka – zatim sortirati po vrijednostima u polju Adresa e-pošte uzlaznim redoslijedom. Vaš uvjet ORDER BY izgledat će ovako:

ORDER BY Company DESC, [E-mail Address]

Napomena

Po zadanom, Access sortira vrijednosti uzlaznim redoslijedom (A – Ž, od manjeg prema većem). Koristite ključnu riječ DESC da biste vrijednosti sortirali silaznim redoslijedom.

Dodatne informacije o uvjetu ORDER BY potražite u temi Uvjet ORDER BY.

Vrh stranice

Rad sa sažetim podacima: GROUP BY i HAVING

Ponekad vam odgovara raditi sa sažetim podacima, primjerice podacima o ukupnoj mjesečnoj prodaji ili najskupljim artiklima na zalihama. Da biste to učinili, na polje u uvjetu SELECT primijenite agregatnu funkciju. Ako, primjerice, želite da vaš upit prikaže broj adresa e-pošte navedenih za svaku tvrtku, uvjet SELECT izgledat će ovako:

SELECT COUNT([E-mail Address]), Company

Agregatne funkcije koje možete koristiti ovise o vrsti podataka u polju ili izrazu koji želite koristiti. Dodatne informacije o dostupnim agregatnim funkcijama potražite u članku Agregatne SQL funkcije.

Određivanje polja koja se ne koriste u agregatnoj funkciji: uvjet GROUP BY

Kada koristite agregatne funkcije, obično morate stvoriti uvjet GROUP BY. Uvjet GROUP BY popisuje sva polja na koja ne primjenjujete agregatnu funkciju. Ako na sva polja u upitu primjenjujete agregatne funkcije, ne morate stvarati uvjet GROUP BY.

Uvjet GROUP BY dolazi neposredno nakon uvjeta WHERE, odnosno uvjeta FROM ako nema uvjeta WHERE. Uvjet GROUP BY popisuje sva polja koja se pojavljuju u uvjetu SELECT.

Primjerice, da se nadovežemo na prethodni primjer, ako vaš uvjet SELECT primjenjuje agregatnu funkciju na polje [Adresa e-pošte], ali ne i na polje Tvrtka, vaš će uvjet GROUP BY izgledati ovako:

GROUP BY Company

Dodatne informacije o uvjetu GROUP BY potražite u temi Uvjet GROUP BY.

Ograničavanje agregatnih vrijednosti pomoću grupnih kriterija: uvjet HAVING

Ako želite koristiti kriterije za ograničavanje rezultata, ali se polje na koje želite primijeniti kriterij koristi u agregatnoj funkciji, ne možete koristiti uvjet WHERE. Umjesto toga, koristite uvjet HAVING. Uvjet HAVING funkcionira isto kao uvjet WHERE, ali se koristi za agregirane podatke.

Pretpostavimo, primjerice, da želite koristiti funkciju AVG (koja računa prosječnu vrijednost) na prvom polju u uvjetu SELECT:

SELECT COUNT([E-mail Address]), Company

Ako upit želite ograničiti na rezultate koji se temelje na funkciji COUNT, ne možete koristiti kriterij za to polje u uvjetu WHERE. Umjesto toga, stavite kriterij u uvjet HAVING. Ako, primjerice, želite da upit prikaže retke samo ako postoji više adresa e-pošte pridruženih tvrtki, uvjet HAVING izgledat će ovako:

HAVING COUNT([E-mail Address])>1

Napomena

Upit može imati uvjet WHERE i uvjet HAVING – kriteriji za polja koja se ne koriste u agregatnoj funkciji idu u uvjet WHERE, a kriteriji za polja koja se koriste u agregatnoj funkciji idu u uvjet HAVING.

Dodatne informacije o uvjetu HAVING potražite u temi Uvjet HAVING.

Vrh stranice

Spajanje rezultata upita: UNION

Kada želite zajedno, kao kombinirani skup, pregledati sve podatke koje je vratilo više sličnih upita odabiranja, koristite operator UNION.

Operator UNION omogućuje spajanje dviju naredbi SELECT u jednu. Naredbe SELECT koje spajate moraju imati jednak broj izlaznih polja, u istom poretku i s istim ili kompatibilnim vrstama podataka. Kada pokrenete upit, podaci iz svakog skupa odgovarajućih polja spajaju se u jedno izlazno polje da bi izlaz upita imao isti broj polja kao i svaka naredba odabira.

Napomena

Za potrebe upita s unijom, vrste podataka Broj i Tekst smatraju se kompatibilnima.

Kada koristite operator UNION, pomoću ključne riječ ALL možete odrediti želite li da rezultati upita sadrže dvostruke retke, ako postoje.

Osnovna SQL sintaksa za upit s unijom koji spaja dvije naredbe SELECT jest sljedeća:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

Pretpostavimo, primjerice, da imate tablicu naziva Proizvodi i drugu tablicu naziva Usluge. Obje tablice imaju polja u kojima su zapisani naziv proizvoda ili usluge, cijena, jamstvo ili dostupnost jamstva te nudite li proizvod ili uslugu ekskluzivno. Iako su u tablici Proizvodi spremljeni podaci o jamstvu, a u tablici Usluge informacije o garanciji, osnovna informacija je ista (isporučuje li se uz proizvod ili usluga jamstvo kvalitete). Upit s unijom možete koristiti za spajanje četiriju polja iz dvije tablice, kao što je to navedeno u sljedećem primjeru:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

Dodatne informacije o spajanju naredbi SELECT pomoću operatora UNION potražite u članku Spajanje rezultata nekoliko upita odabiranja pomoću upita s unijom.

Vrh stranice