Title: SQL
1SQL Structured Query Language
Strukturirani upitni jezik
2Šta je SQL?
SQL je standardni jezik za pristup i dobijanje
podataka iz relacionih baza podataka. SQL je
standardizovan od strane ANSI (American National
Standards Institute).
3SQL
1970.godina
Donald Cemberlen
Rejmond Bojs
IBM
SEQUEL- Structured English Query Language
4SQL
Neke implementacije SQL-a razvijene su za
upotrebu na PC-ju i jednostavne su za upotrebu,
druge su prilagodene za rad sa veoma velikim
bazama podataka.
5 Osnovne karakteristike SQL-a
1.) jednostavnost 2.) uniformnost 3.)
neproceduralnost
Jednostavnost se odnosi na to da se relacije
kreiraju jednom naredbom i odmah su dostupne za
korišcenje.
Uniformnost - svi podaci i rezultati operacija se
prikazuju u vidu tabela.
Neproceduralnost - korisnik odreduje koje podatke
treba uneti, prikazati ili ukloniti, a ne kako da
se izvede operacija nad podacima.
6? SQL (Structured Query Language) je programski
jezik namenjen za upravljanje podacima u
relacionim sistemima za upravljanje bazama
podataka.
SQL obuhvata
unos podataka
ažuriranje i brisanje podataka
šeme kreiranja i menjanja
kontrolu pristupa
7Šta može SQL da uradi?
- Da izvrš?v? upit? n?d b?zom p?dat?k?.
- Da pr?uzm? p?d?tk? iz b?z? p?d?t?k?.
- Da umetne zapise u bazu podataka.
- Da ažurira zapise u bazi podataka.
- Da izbriše zapise iz baze podataka.
- Da kreira novu bazu podataka.
- Da kreira novu tabelu u bazi podataka.
- Da kreira prikaze u bazi podataka.
- ...
8SQL je standard ali ....
Iako je SQL standardizovan od strane ANSI
(American National Standards Institute), postoji
mnogo razlicitih verzija SQL jezika. Medutim,
da bi bila u skladu sa ANSI standardom, svaka
verzija mora na slican nacin da podržava barem
glavne naredbe (kao što su SELECT, UPDATE,
DELETE, INSERT, WHERE).
9RDBMS (Relational Database Management
System) SISTEM ZA UPR?VLJANJE R?LACIONIM BAZ?M?
PODAT?K?
Podaci u RDBMS-u se cuv?ju u ?b??ktima baze
podataka koji se n?zivaju tabele. Tabel?
predstavlja kolekciju sr?dnih podataka i sastoji
se od kolona i redova.
10Tabele
Baza podataka sadrži jednu ili više tabela.
Svaka tabela se identifikuje po imenu (npr.
"Kupci" ili "Prodavci"). Tabele sadrže zapise
(redove) sa podacima.
11RDBMS (Relational Database Management
System) SISTEM ZA UPR?VLJANJE R?LACIONIM BAZ?M?
PODAT?K?
RDBMS je osnova za SQL i za sve moderne baze
podataka kao što su MS SQL Server, IBM DB2,
Oracle, MySQL, Sybase i Microsoft Access.
12RDBMS (Relational Database Management
System) SISTEM ZA UPR?VLJANJE R?LACIONIM BAZ?M?
PODAT?K? TOP 5
1. Oracle 2. SQL
Server 3. DB2
4. Sybase
5. MySQL
13RDBMS TOP 5
- Oracle Database - poslednja dostupna varijanta
11g Release 2. - 2. MS SQL Server - clan Microsoftove porodice,
inicijalno razvijen kao konkurencija Oracle-u i
IBM-u. - Poslednja verzija SQL Server 2012.
- 3. IBM DB2 - Poslednja verzija 10.
- 4. Sybase - Poslednja verzija 15.7. Od maja 2010.
deo kompanije SAP (za 5,8 milijardi dolara). - 5. MySql - Deo Oracle porodice od Januara 2010.
Do nedavno besplatan. Sadašnja cena je od 2.000
do 30.000. Postoje neke besplatne varijante i
sada. - Verzija 5.6.
-
14OPŠTA SINTAKSNA PRAVILA
- Sintaksa SQL-a je prilicno fleksibilna, mada
postoje pravila kojih se treba pridržavati, kao i
u svakom drugom programskom jeziku - komande SQL-a se mogu pisati i velikim i malim
slovima - logicki se komponente odvajaju zarezom
- bitno je kakvim slovima su zapisani podaci koji
su u bazi podataka - unosi se tacka-zarez na kraju iskaza (ovaj
interpunkcijski znak govori SQL programu da je
upit završen)
15SQL naredbe Da li zarez iza naredbe?
Neki upravljacki sistemi za upravljanje bazom
podataka zahtevaju zarez na kraju svake SQL
naredbe. Zarez je standardni nacin za odvajanje
SQL naredbi u sistemima za upravljanje bazama
podataka koji dopuštaju izvršavanje više od
jednog SQL iskaza u istom pozivu servera. Kada
koristimo MS Access ili SQL Server 2012 ne moramo
da stavimo zarez iza svake SQL naredbe.
16SQL DML i DDL
SQL se može podeliti u dva dela - Jezik za
manipulaciju podacima (DML - The Data
Manipulation Language) i - Jezik za definisanje
podataka (DDL - The Data Definition Language
(DDL). Najvažnije DML komande SELECT za
odabir podataka iz baze podataka UPDATE za
ažuriranje podataka u bazi podataka DELETE za
brisanje podataka iz baze podataka INSERT INTO
za umetanje novih podataka u bazu podataka
17SQL DML i DDL
Najvažnije DDL naredbe CREATE DATABASE za
kreiranje nove baze podataka ALTER DATABASE za
modifikovanje baze podataka CREATE TABLE za
kreiranje nove tabele ALTER TABLE za
modifikovanje tabele DROP TABLE za brisanje
tabele CREATE INDEX za kreiranje indeksa DROP
INDEX za brisanje indeksa
18Upiti
- Najvažnije element SQL-a.
- Vracaju podatke na osnovu odredenih kriterijuma
19Sastavni deo UPITA su KLAUZULE
Klauzule
WHERE
FROM
HAVING
ORDER BY
GROUP BY
20SQL naredbe
- Vecina akcija nad bazom podataka izvode se
pomocu SQL naredbe. - Najcešce se koristi naredba SELECT.
- SELECT naredbom nalaže se preuzimanje podatke iz
jedne ili više tabela. - Upit sadrži spisak kolona koje ce biti ukljucene
u konacni rezultat odmah nakon SELECT. - Zvezdica () se takode može koristiti kada upit
treba da upit vrati sve kolone izvorne tabele.
211. Primer SELECT naredbe
1.) Hocemo da iz tabele Studenti dobijemo spisak
svih studenata koji imaju prosecnu ocenu vecu od
8,5 i želimo da budu sortirani po
prezimenu. SELECT FROM Studenti WHERE Prosecna
ocenagt8.5 ORDER BY Studenti.Prezime
Zvezdica ukazuje da ce biti prikazani sve kolone
iz tabele Studenti
222. Primer SELECT naredbe
2.) Ako želimo da dodamo novog studenta,
koristimo naredbu INSERT INTO INSERT INTO
Studenti (Ime, Prezime, ProsecnaOcena)
VALUES (Petar', 'Petrovic', 8.85)
23 SQL naredbe Na primer, sledeca SQL naredba ce
izdvojiti sve zapise iz tabele
Persons" SELECT FROM Persons
24- Primer. Prikazati sve podatke iz tabele
Persons. - U bazi podataka SQL W3Schools odabrati Queries.
- Kliknuti na New a zatim na Design View.
- Odabrati tabelu Persons.
- Kliknuti na dugme Add, zatim na Close.
255. U meniju View odabrati SQL View.
266. Upisati iskaz SELECT from Persons 7. U
meniju Query odabrati Run. Pojavice se tražena
tabela.
27 Rezultat ovog iskaza je prikaz svih naziva polja
i podataka unutar tabele Persons. (upit U1)
1
28SELECT naredba Naredba SELECT koristi se da se
odaberu podaci iz baze podataka. Rezultat se
smešta u rezultujucu tabelu. U najjednostavnijem
obliku, naredba SELECT odabira kolone iz jedne
tabele. Može se uzeti jedna kolona, više kolona
ili sve kolone iz tabele.
29SELECT naredba Sintaksa SELECT naziv_kolone
(ili kolona) FROM naziv_tabele SELECT FROM
naziv_tabele SELECT ukazuje na spisak kolona
koje treba da se prikažu, a FROM odreduje tabelu
iz koje treba uzeti kolone.
30SELECT naredba SELECT kolone FROM
tabele JOIN spajanja WHERE
uslov_za_pretraživanje GROUP BY
kolone_za_grupisanje HAVING
uslov_za_pretraživanje ORDER BY
kolone_za_sortiranje
31SELECT naredba Zvezdica () u SELECT , govori
bazi podataka da vrati informacije iz svih kolona
tabele koja je navedena u FROM klauzuli. Prethodn
i primer SQL iskaza koristi da bi se izabrale
sve kolone iz tabele, medutim, ukoliko želimo da
prikažemo samo neke kolone, ili promenimo
redosled njihovog prikaza, tada koristimo
iskaz SELECT naziv_kolone (ili kolona) FROM
naziv_tabele
32SELECT naredba npr. Upit U2 Napraviti upit koji
ce prikazati kolone LastName i FirstName iz
tabele Persons. SELECT LastName, FirstName FROM
Persons
33 SELECT DISTINCT naredba Naredba za eliminisanje
duplikata. Ukoliko želimo da prikažemo razlicite
vrednosti iz kolone. Sintaksa SELECT DISTINCT
naziv_kolone(ili kolona)FROM naziv_tabele npr.
Upit U3 SELECT DISTINCT City FROM Persons
34WHERE klauzula Ukoliko je potrebno pronaci
odredeni objekat ili grupu objekata u bazi
podataka, potreban je jedan ili više uslova.
Uslovi se navode u WHERE klauzuli. Sintaksa
WHERE klauzule je WHERE ltuslov
pretrazivanjagt SELECT naziv_kolone (ili kolona)
FROM naziv_tabeleWHERE naziv_kolone operator
vrednost Primer uslova Upit U4 SELECT FROM
Persons WHERE City'Sandnes'
35- OPERATORI
- Operatori su elementi koji se koriste za
izražavanje uslova pod kojima se pretražuju
podaci. Operatori se dele po sledecim grupama - aritmeticki
- operatori poredenja
- operatori za znakove (stringove)
- logicki
36Aritmeticki operatori
- Aritmeticki operatori su
- operator sabiranja (), oduzimanja (-), deljenja
(/), množenja () - Operator sabiranja
- iskazom
- SELECT naziv_kolone, naziv_kolone0.15 FROM
naziv tabele - dobija se prikaz kolone naziv_kolone i kolone
naziv_kolone uvecan za 0.15.
37Operator oduzimanja Iskazom SELECT
naziv_kolone1, naziv_kolone2,
(naziv_kolone1-naziv_kolone2)
FROM naziv_tabele dobija se prikaz kolona
naziv_kolone1,naziv_kolone2, kao i kolone
koja racuna njihovu razliku.
38Operator deljenja Iskazom SELECT
naziv_kolone1, naziv_kolone2,
(naziv_kolone2/2) FROM naziv tabele dobija
se prikaz kolona naziv_kolone1,naziv_kolone2,
kao i kolone koja racuna vrednosti iz
naziv_kolone2 podeljene sa 2.
39Operator množenja Iskazom SELECT
naziv_kolone1, naziv_kolone2,
(naziv_kolone20.9) FROM naziv tabele dobija
se prikaz kolona naziv_kolone1,naziv_kolone2,
kao i kolone koja racuna vrednosti iz kolone
naziv_kolone2 pomnožene sa 0.9.
40Operatori poredenja
OPERATOR OPIS
JEDNAKO
ltgt NIJE JEDNAKO
gt VECE
lt MANJE
gt VECE ILI JEDNAKO
lt MANJE ILI JEDNAKO
BETWEEN IZMEÐU GRANICA OPSEGA (UKLJUCUJUCI GRANICE)
LIKE PRETRAGA PO UZORKU
IN DOZVOLJAVA NAVOÐENJE VIŠE VREDNOSTI U KLAUZULI WHERE
41Operatori za stringove
Operator LIKE koristi se za pretragu kolone po
odredenom uzorku. Sintaksa SELECT
nazov_kolone(ili kolona)FROM naziv_tabeleWHERE
naziv_kolone LIKE uzorak
42Operator LIKE
npr. Upit U5 SELECT FROM Persons WHERE City
LIKE 's' - džoker znak (zamenjuje nijedan,
jedan ili više znakova) Napomena U MS Access-u
to je npr. Upit U6 SELECT FROM Persons
WHERE City LIKE 's' npr. Upit U7 SELECT
FROM Persons WHERE City LIKE 's'
43Operator IN
Sintaksa SELECT naziv_kolone(ili kolona)FROM
naziv_tabeleWHERE naziv_kolone IN
(vrednost1,vrednost2,...) npr. Upit U8 SELECT
FROM Persons WHERE LastName IN
('Hansen','Pettersen')
44Operator BETWEEN
Sintaksa SELECT naziv_kolone (ili kolona) FROM
naziv_tabeleWHERE naziv_kolone BETWEEN vrednost1
AND vrednost2 napomena Operator BETWEEN se
razlicito ponaša u razlicitim bazama podataka.
npr. Upit U9 SELECT FROM Persons WHERE
LastNameBETWEEN 'Hansen' AND 'Pettersen'
45Logicki operatori
Logicki operatori odvajaju dva ili više uslova u
WHERE klauzuli SQL iskaza.
Operator AND Ovaj operator zahteva da izrazi sa
obe strane operatora moraju biti tacni. Ukoliko
je neki od izraza netacan, rezultat je takode
netacan. npr. Upit U10 SELECT FROM Persons
WHERE FirstName'Tove'AND LastName'Svendson'
46Logicki operatori
Operator OR Kod ovog operatora, ukoliko bilo koji
od uslova poredenja vraca kao rezultat vrednost
tacno (TRUE), rezultat operatora OR je tacan
(TRUE). npr. Upit U11 SELECT FROM Persons
WHERE FirstName'Tove'OR FirstName'Ola'
47ORDER BY kljucna rec
Koristi se za sortiranje rezultujuce
tabele. Sintaksa SELECT naziv_kolone (ili
kolona) FROM naziv_tabeleORDER BY naziv kolone
(ili kolona) ASCDESC npr. Upit U12 SELECT
FROM Persons ORDER BY LastName npr. Upit
U13 SELECT FROM Persons ORDER BY LastName DESC
48FUNKCIJE U SQL-u
- Vrste funkcija
- agregatne funkcije
- funkcije za datum i vreme
- aritmeticke funkcije
- funkcije za rad sa karakterima
49 AGREGATNE FUNKCIJE Ove funkcije se nazivaju još
i funkcijama grupe. Kao rezultat daju vrednost
baziranu na vrednostima iz kolone. Prvih pet
agregatnih funkcija COUNT, SUM, AVG, MAX i MIN
definisane su ANSI (American National Standards
Institute) standardom. Vecina implementacija
(programi u kojima se koristi) SQL-a ima
proširenja ovih agregatnih funkcija.
50- Funkcija AVG
- Izracunava srednju vrednost odabrane numericke
kolone. - Sintaksa
- SELECT AVG(ime_kolone) FROM ime_tabele
- Npr. Upit14.
- SELECT AVG(OrderPrice) AS OrderAverage
FROM Orders - Npr. Upit15.
- SELECT Customer FROM OrdersWHERE
OrderPricegt(SELECT AVG(OrderPrice) FROM Orders)
51Funkcija COUNT Funkcija COUNT vraca broj
vrednosti (NULL vrednosti nece se racunati)
navedene kolone. Sintaksa SELECT
COUNT(ime_kolone) FROM ime_tabele Npr.
Upit16 SELECT COUNT(Customer) AS CustomerNilsen
FROM Orders WHERE Customer'Nilsen'
52Funkcija COUNT COUNT () funkcija vraca broj
slogova u tabeli. Sintaksa SELECT COUNT() FROM
ime_tabele Npr. Upit17 SELECT COUNT() AS
NumberOfOrders FROM Orders
53Funkcija SUM Kao rezultat vraca zbir svih
vrednosti iz kolone. Argumenti funkcije Sum mogu
biti samo numericki podaci. Ukoliko se pokuša sa
podacima koji nisu numericki, dobice se poruka o
grešci. Sintaksa SELECT SUM(ime_kolone) FROM
ime_tabele Npr. Upit18 SELECT SUM(OrderPrice) AS
OrderTotal FROM Orders
54- Funkcija MAX
- Vraca najvecu vrednost u okviru odabrane kolone.
- Sintaksa
- SELECT MAX(ime_kolone) FROM ime_tabele
- Npr. Upit19
- SELECT MAX(OrderPrice) AS LargestOrderPrice FROM
Orders
55- Funkcija MIN
- Vraca najmanju vrednost u okviru odabrane
kolone. - Sintaksa
- SELECT MIN(ime_kolone) FROM ime_tabele
- Npr. Upit20
- SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM
Orders
56 GROUP BY naredba Naredba GROUP BY se koristi u
sprezi s agregatnim funkcijama za grupisanje u
okviru jedne ili više kolona u rezultujucoj
tabeli. Sintaksa SELECT naziv_kolone,
agregatna_funkcija(naziv_kolone)FROM
naziv_tabeleWHERE naziv_kolone operator
vrednostGROUP BY naziv_kolone Npr.
Upit21 SELECT Customer, SUM(OrderPrice) FROM
OrdersGROUP BY Customer
57 HAVING klauzula HAVING klauzula je ugradena u
SQL jer kljucna rec WHERE ne mož? da s? koristi
?a agreg?tnim funkcijama. Sintaksa SELECT
naziv_kolone, agregatna_funkcija(naziv_kolone)FRO
M naziv_tabeleWHERE naziv_kolone operator
vrednostGROUP BY naziv_koloneHAVING
agregatna_funkcija(naziv_kolone) operator
vrednost
58 HAVING klauzula Npr. Upit22 SELECT
Customer,SUM(OrderPrice) FROM OrdersGROUP BY
CustomerHAVING SUM(OrderPrice)lt2000 Npr.
Upit23 SELECT Customer,SUM(OrderPrice) FROM
OrdersWHERE Customer'Hansen' OR
Customer'Jensen'GROUP BY CustomerHAVING
SUM(OrderPrice)gt1500
59 INNER JOIN kljucna rec Formira tabelu koja se
sastoji od kolona iz dve tabele, na osnovu odnosa
izmedu pojedinih kolona u ovim tabelama.
Sintaksa SELECT naziv_kolone(ili kolona) FROM
naziv_tabele1INNER JOIN naziv_tabele2 ON
naziv_tabele1.naziv_kolonenaziv_tabele2.naziv_kol
one Npr. Upit24 SELECT Persons.LastName,
Persons.FirstName, Orders1.OrderNo FROM
PersonsINNER JOIN Orders1 ON Persons.P_IdOrders1
.P_IdORDER BY Persons.LastName
60 UNION Operator UNION operator se koristi za
formiranje rezultujuce tabele kombinovanjem dva
ili više SELECT iskaza. Napomenasvaki SELECT
iskaz unutar UNION-a mora imati isti broj kolona.
Kolone moraju moraju imati isti tip podataka.
Takode, kolone u svakom SELECT iskazu moraju biti
u istom redosledu. UNION operator odabira samo
razlicite vrednosti. Ako je potrebno omoguciti
dvostruke vrednosti, koristiti se UNION
ALL Sintaksa SELECT naziv_kolone(a) FROM
naziv_tabele1UNION SELECT ime_kolone(a) FROM
naziv_tabele2
61 UNION Operator Npr. Upit25 SELECT E_Name FROM
Employees_NorwayUNIONSELECT E_Name FROM
Employees_USA
62 UNION ALL Operator Sintaksa SELECT
naziv_kolone(a) FROM naziv_tabele1UNION ALL
SELECT naziv_kolone(a)
FROM naziv_tabele2 Npr. Upit26 SELECT
E_Name FROM Employees_NorwayUNION SELECT E_Name
FROM Employees_USA