Presentation is loading. Please wait.

Presentation is loading. Please wait.

Structured Query Language

Similar presentations


Presentation on theme: "Structured Query Language"— Presentation transcript:

1 Structured Query Language
SQL Structured Query Language Strukturirani upitni jezik

2 Šta je SQL? SQL je standardizovan programski jezik namenjen za upravljanje podacima u relacionim bazama podataka. SQL je standardizovan od strane ANSI (American National Standards Institute).

3 SEQUEL- Structured English Query Language
SQL 1970.godina Donald Čemberlen Rejmond Bojs IBM SEQUEL- Structured English Query Language

4 SQL Neke implementacije SQL-a razvijene su za upotrebu na PC-ju i jednostavne su za upotrebu, druge su prilagođene 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šćenje. Uniformnost - svi podaci i rezultati operacija se prikazuju u vidu tabela. Neproceduralnost - korisnik određuje koje podatke treba uneti, prikazati ili ukloniti, a ne kako da se izvede operacija nad podacima.

6 Š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. ...

7 SQL Iako je SQL standardizovan od strane ANSI (American National Standards Institute), postoji mnogo različitih verzija SQL jezika. Međutim, da bi bila u skladu sa ANSI standardom, svaka verzija mora na sličan način da podržava barem glavne naredbe (kao što su SELECT, UPDATE, DELETE, INSERT, WHERE).

8 OPŠTA SINTAKSNA PRAVILA
Sintaksa SQL-a je prilično 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 logički se komponente odvajaju zarezom bitno je kakvim slovima su zapisani podaci koji su u bazi podataka unosi se tačka-zarez na kraju iskaza (ovaj interpunkcijski znak govori SQL programu da je upit završen)

9 Upiti Najvažnije element SQL-a. Vraćaju podatke na osnovu određenih kriterijuma

10 Sastavni deo UPITA su KLAUZULE
WHERE FROM HAVING ORDER BY GROUP BY

11 SQL naredbe Većina akcija nad bazom podataka izvode se pomoću SQL naredbe. Najčešće se koristi naredba SELECT. Naredba SELECT koristi se da se odaberu podaci iz baze podataka (iz jedne ili više tabela). Rezultat se smešta u rezultujuću 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.

12 SELECT naredba SELECT naziv_kolone (ili kolona) FROM naziv_tabele
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 određuje tabelu iz koje treba uzeti kolone.

13 SELECT naredba Zvezdica (*) u SELECT * , govori bazi podataka da vrati informacije iz svih kolona tabele koja je navedena u FROM klauzuli. Prethodni primer SQL iskaza koristi * da bi se izabrale sve kolone iz tabele, međutim, ukoliko želimo da prikažemo samo neke kolone, ili promenimo redosled njihovog prikaza, tada koristimo iskaz: SELECT naziv_kolone (ili kolona) FROM naziv_tabele

14 SELECT 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]

15 Zvezdica ukazuje da će biti prikazane sve kolone iz tabele Studenti
1. Primer SELECT naredbe 1.) Hoćemo da iz tabele Studenti dobijemo spisak svih studenata koji imaju prosečnu ocenu veću od 8,5 i želimo da budu sortirani po prezimenu. SELECT * FROM Studenti WHERE Prosecna ocena>8.5 ORDER BY Studenti.Prezime Zvezdica ukazuje da će biti prikazane sve kolone iz tabele Studenti

16 Zvezdica ukazuje da će biti prikazane sve kolone iz tabele Customers
SQL naredbe Na primer, sledeća SQL naredba će izdvojiti sve zapise iz tabele “Customers": Upit U1 SELECT * FROM Customers; Zvezdica ukazuje da će biti prikazane sve kolone iz tabele Customers

17

18 SELECT naredba Upit U2 Napraviti upit koji će prikazati kolone CustomerName i City iz tabele Customers. C SELECT CustomerName,City FROM Customers;

19 SELECT DISTINCT naredba
Naredba za eliminisanje duplikata, ukoliko želimo da prikažemo različite vrednosti iz kolone. Sintaksa: SELECT DISTINCT naziv_kolone(ili kolona) FROM naziv_tabele Upit U3 Napraviti upit koji će prikazati samo različite vrednosti kolone City iz tabele Customers. SELECT DISTINCT City FROM Customers;

20 WHERE <uslov pretrazivanja>
WHERE klauzula Ukoliko je potrebno pronaći određeni 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 <uslov pretrazivanja> SELECT naziv_kolone (ili kolona) FROM naziv_tabele WHERE naziv_kolone operator vrednost Upit U4 Napraviti upit koji će prikazati sve redove iz tabele Customers koji zadovoljavaju uslov Country= 'Mexico'; SELECT * FROM Customers WHERE Country='Mexico';

21 OPERATORI Operatori su elementi koji se koriste za izražavanje uslova pod kojima se pretražuju podaci. Operatori se dele po sledećim grupama: aritmetički operatori poređenja operatori za znakove (stringove) logički

22 Aritmetički operatori
Aritmetički operatori su: operator sabiranja (+), oduzimanja (-), deljenja (/), množenja (*) Operator sabiranja iskazom: SELECT [naziv_kolone], [naziv_kolone]+0.15 FROM [naziv tabele]; dobija se prikaz kolone [naziv_kolone] i kolone [naziv_kolone] uvećan za 0.15.

23 Aritmetički operatori
Operator sabiranja Upit O1 Napraviti upit koji će u prvoj kolini prikazati kolonu Price iz tabele Products, a u drugoj koloni vrednosti kolone Price uvećane za 0.15. SELECT Price, Price FROM Products;

24 Operator 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 računa njihovu razliku.

25 Aritmetički operatori
Operator oduzimanja Upit O2 Napraviti upit koji će u prvoj kolini prikazati kolonu Price iz tabele Products, a u drugoj koloni vrednosti kolone Price umanjene za 0.15. SELECT Price, Price FROM Products;

26 Operator 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 računa vrednosti iz [naziv_kolone2] podeljene sa 2.

27 Aritmetički operatori
Operator deljenja Upit O3 Napraviti upit koji će u prvoj kolini prikazati kolonu Price iz tabele Products, a u drugoj koloni vrednosti kolone Price podeljene sa 2. SELECT Price, Price / 2 FROM Products;

28 Operator množenja Iskazom:
SELECT [naziv_kolone1], [naziv_kolone2], ([naziv_kolone2]*0.9) FROM [naziv tabele]; dobija se prikaz kolona [naziv_kolone1],[naziv_kolone2], kao i kolone koja računa vrednosti iz kolone [naziv_kolone2] pomnožene sa 0.9.

29 Aritmetički operatori
Operator množenja Upit O4 Napraviti upit koji će u prvoj kolini prikazati kolonu Price iz tabele Products, a u drugoj koloni vrednosti kolone Price pomnožene sa 1.15. SELECT Price, Price * 1.15 FROM Products;

30 Operatori poređenja OPERATOR OPIS = JEDNAKO <> NIJE JEDNAKO >
VEĆE < MANJE >= VEĆE ILI JEDNAKO <= MANJE ILI JEDNAKO BETWEEN IZMEĐU GRANICA OPSEGA (UKLJUČUJUĆI GRANICE) LIKE PRETRAGA PO UZORKU IN DOZVOLJAVA NAVOĐENJE VIŠE VREDNOSTI U KLAUZULI WHERE

31 Operatori za stringove
Operator LIKE koristi se za pretragu kolone po određenom uzorku. Sintaksa: SELECT nazov_kolone(ili kolona) FROM naziv_tabele WHERE naziv_kolone LIKE uzorak

32 Operator LIKE Upit U5 Napraviti upit koji će prikazati sve redove iz tabele Customers koji zadovoljavaju uslov da naziv grada (kolona City) počinje slovom s. SELECT * FROM Customers WHERE City LIKE 's%'; % - džoker znak (zamenjuje nijedan, jedan ili više znakova) Napomena – U MS Access-u to je *

33 Operator LIKE Upit U6 Napraviti upit koji će prikazati sve redove iz tabele Customers koji zadovoljavaju uslov da naziv grada (kolona City) završava slovom s. SELECT * FROM Customers WHERE City LIKE '%s'; Upit U7 Napraviti upit koji će prikazati sve redove iz tabele Customers koji zadovoljavaju uslov da naziv grada (kolona City) sadrži slovo s. SELECT * FROM Customers WHERE Country LIKE '%land%';

34 Operator IN Sintaksa: SELECT naziv_kolone(ili kolona) FROM naziv_tabele WHERE naziv_kolone IN (vrednost1,vrednost2,...) Upit U8 Napraviti upit koji će prikazati sve redove iz tabele Customers koji u koloni City imaju sadržaj: Paris ili London. SELECT * FROM Customers WHERE City IN ('Paris','London');

35 Operator BETWEEN Sintaksa: SELECT naziv_kolone (ili kolona) FROM naziv_tabele WHERE naziv_kolone BETWEEN vrednost1 AND vrednost2 napomena: Operator BETWEEN se različito ponaša u različitim bazama podataka. Upit U9 Napraviti upit koji će prikazati sve redove iz tabele Products koji u koloni Price imaju vrednost između 10 i 20. SELECT * FROM Products WHERE Price BETWEEN 10 AND 20;

36 Logički operatori Logički 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 tačni. Ukoliko je neki od izraza netačan, rezultat je takođe netačan. Upit U10 Napraviti upit koji će prikazati sve redove iz tabele Customers koji u koloni Country imaju vrednost Germany i u koloni City vrednost Berlin. SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin';

37 Logički operatori Operator OR
Kod ovog operatora, ukoliko bilo koji od uslova poređenja vraća kao rezultat vrednost tačno (TRUE), rezultat operatora OR je tačan (TRUE). Upit U11 Napraviti upit koji će prikazati sve redove iz tabele Customers koji u koloni City imaju vrednost Berlin ili München. SELECT * FROM Customers WHERE City='Berlin' OR City='München';

38 ORDER BY ključna reč Koristi se za sortiranje rezultujuće tabele.
Sintaksa: SELECT naziv_kolone (ili kolona) FROM naziv_tabele ORDER BY naziv kolone (ili kolona) ASC|DESC Upit U12 Napraviti upit koji će prikazati podatke iz tabele Customers sortirane po vrednostima iz kolone Country u rastućem redosledu. SELECT * FROM Customers ORDER BY Country;

39 ORDER BY ključna reč Upit U13 Napraviti upit koji će prikazati podatke iz tabele Customers sortirane po vrednostima iz kolone Country u opadajućem redosledu. SELECT * FROM Customers ORDER BY Country DESC;

40 ORDER BY ključna reč Upit U13A Napraviti upit koji će prikazati podatke iz tabele Customers sortirane po vrednostima iz kolone Country u rastućem redosledu, i po vrednostima iz kolone CustomerName u opadajućem redosledu. SELECT * FROM Customers ORDER BY Country ASC, CustomerName DESC;

41 FUNKCIJE U SQL-u Vrste funkcija: agregatne funkcije
funkcije za datum i vreme aritmetičke funkcije funkcije za rad sa karakterima

42 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. Većina implementacija (programi u kojima se koristi) SQL-a ima proširenja ovih agregatnih funkcija.

43 Funkcija AVG Izračunava srednju vrednost odabrane numeričke kolone. Sintaksa: SELECT AVG(ime_kolone) FROM ime_tabele Upit U14: Napraviti upit koji će prikazati prosečnu vrednost kolone Price iz tabele Products. SELECT AVG(Price) AS PriceAverage FROM Products;

44 Funkcija AVG Sintaksa: SELECT AVG(ime_kolone) FROM ime_tabele Upit U15: Napraviti upit koji će prikazati nazive proizvoda (kolona ProductName) i njihove cene (kolona Price), pod uslovom da je cena tog proizvoda veća od prosečne cene svih proizvoda. SELECT ProductName, Price FROM Products WHERE Price>(SELECT AVG(Price) FROM Products);

45 Funkcija COUNT Funkcija COUNT vraća broj vrednosti (NULL vrednosti neće se računati) navedene kolone. Sintaksa: SELECT COUNT(ime_kolone) FROM ime_tabele Upit U16: Napraviti upit koji će izračunati ukupan broj porudžbina kupca sa identifikacionim brojem 7 (CustomerID=7). SELECT COUNT(CustomerID) FROM Orders WHERE CustomerID=7;

46 Funkcija COUNT COUNT (*) funkcija vraća broj slogova u tabeli. Sintaksa: SELECT COUNT(*) FROM ime_tabele Upit U17: Napraviti upit koji će izračunati ukupan broj porudžbina iz tabele Orders. SELECT COUNT(*) FROM Orders;

47 Funkcija SUM Kao rezultat vraća zbir svih vrednosti iz kolone. Argumenti funkcije Sum mogu biti samo numerički podaci. Ukoliko se pokuša sa podacima koji nisu numerički, dobiće se poruka o grešci. Sintaksa: SELECT SUM(ime_kolone) FROM ime_tabele Upit U18: Napraviti upit koji će izračunati ukupnu naručenu količinu (kolona Quantity) iz iz tabele OrderDetails. SELECT SUM(Quantity) FROM OrderDetails;

48 Funkcija MAX Vraća najveću vrednost u okviru odabrane kolone. Sintaksa: SELECT MAX(ime_kolone) FROM ime_tabele Upit U19: Napraviti upit koji će prikazati maksimalnu vrednost kolone Price iz tabele Products. SELECT MAX(Price) FROM Products;

49 Funkcija MIN Vraća najmanju vrednost u okviru odabrane kolone. Sintaksa: SELECT MIN(ime_kolone) FROM ime_tabele Upit U20: Napraviti upit koji će prikazati minimalnu vrednost kolone Price iz tabele Products. SELECT MIN(Price) FROM Products;

50 GROUP BY naredba Naredba GROUP BY se koristi u sprezi s agregatnim funkcijama za grupisanje u okviru jedne ili više kolona u rezultujućoj tabeli. Sintaksa: SELECT naziv_kolone, agregatna_funkcija(naziv_kolone) FROM naziv_tabele WHERE naziv_kolone operator vrednost GROUP BY naziv_kolone

51 GROUP BY naredba Upit U21: Napraviti upit koji će prikazati ukupnu naručenu količinu po proizvodima iz tabele OrderDetails. SELECT ProductID, SUM(Quantity) FROM OrderDetails Group By ProductID; Upit U22: Napraviti upit koji će prikazati ukupnu naručenu količinu po proizvodima, pod uslovom da u zbir ulaze samo naručene količine veće od 70. SELECT ProductID, SUM(Quantity) FROM OrderDetails WHERE Quantity > 70 Group By ProductID;

52 HAVING klauzula HAVING klauzula je ugrađena u SQL jer ključna reč WHERE ne možе da sе koristi сa agregаtnim funkcijama. Sintaksa: SELECT naziv_kolone, agregatna_funkcija(naziv_kolone) FROM naziv_tabele WHERE naziv_kolone operator vrednost GROUP BY naziv_kolone HAVING agregatna_funkcija(naziv_kolone) operator vrednost

53 HAVING klauzula Upit U23: Napraviti upit koji će prikazati ukupnu naručenu količinu po proizvodima, pod uslovom da je ukupna naručena količina veća od 100. SELECT ProductID, SUM(Quantity) FROM OrderDetails Group By ProductID Having SUM(Quantity)>100;

54 INNER JOIN ključna reč Formira tabelu koja se sastoji od kolona iz dve tabele, na osnovu odnosa između pojedinih kolona u ovim tabelama. Sintaksa: SELECT naziv_kolone(ili kolona) FROM naziv_tabele1 INNER JOIN naziv_tabele2 ON naziv_tabele1.naziv_kolone=naziv_tabele2.naziv_kolone Napomena: INNER JOIN I JOIN imaju isti efekat.

55 INNER JOIN ključna reč

56 INNER JOIN ključna reč Upit U24: Napraviti upit koji će prikazati sve kupce (kolona CustomerName iz tabele Customers) koji imaju porudžbine (prikazati njihove šifre – kolona OrderID iz tabele Orders). Sortirati po nazivu kupca (kolona CustomerName). SELECT Customers.CustomerName, Orders.OrderID FROM Customers INNER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName;

57 UNION Operator UNION operator se koristi za formiranje rezultujuće tabele kombinovanjem dva ili više SELECT iskaza. Napomena:svaki SELECT iskaz unutar UNION-a mora imati isti broj kolona. Kolone moraju moraju imati isti tip podataka. Takođe, kolone u svakom SELECT iskazu moraju biti u istom redosledu. UNION operator odabira samo različite vrednosti. Ako je potrebno omogućiti dvostruke vrednosti, koristiti se UNION ALL Sintaksa: SELECT naziv_kolone(a) FROM naziv_tabele1 UNION SELECT ime_kolone(a) FROM naziv_tabele2

58 UNION Operator Upit U25: Napraviti upit koji će izlistati sva različita imena gradova koja se nalaze u tabelama Customers i Suppliers. Imena gradova sortirati u rastućem redosledu. SELECT City FROM Customers UNION SELECT City FROM Suppliers ORDER BY City;

59 UNION ALL Operator Sintaksa: SELECT naziv_kolone(a) FROM naziv_tabele1 UNION ALL SELECT naziv_kolone(a) FROM naziv_tabele2 Upit U26: Napraviti upit koji će izlistati sva imena gradova (sa ponavljanjem) koja se nalaze u tabelama Customers i Suppliers. Imena gradova sortirati u rastućem redosledu. SELECT City FROM Customers UNION ALL SELECT City FROM Suppliers ORDER BY City;


Download ppt "Structured Query Language"

Similar presentations


Ads by Google