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 standardni jezik za pristup i dobijanje podataka iz relacionih baza 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 ažuriranje i brisanje podataka
→ 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. ...

8 SQL je standard – ali .... 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).

9 SISTEM ZA UPRАVLJANJE RЕLACIONIM BAZАMА PODATАKА
RDBMS (Relational Database Management System) SISTEM ZA UPRАVLJANJE RЕLACIONIM BAZАMА PODATАKА Podaci u RDBMS-u se čuvаju u оbјеktima baze podataka koji se nаzivaju tabele. Tabelа predstavlja kolekciju srоdnih podataka i sastoji se od kolona i redova.

10 Tabele 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.

11 SISTEM ZA UPRАVLJANJE RЕLACIONIM BAZАMА PODATАKА
RDBMS (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.

12 SISTEM ZA UPRАVLJANJE RЕLACIONIM BAZАMА PODATАKА
RDBMS (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

13 RDBMS TOP 5 Oracle Database - poslednja dostupna varijanta 12c.
2. MS SQL Server - član Microsoftove porodice, inicijalno razvijen kao konkurencija Oracle-u i IBM-u. Poslednja verzija SQL Server 2012. 3. IBM DB2 - Poslednja verzija 10.5. 4. Sybase - Poslednja verzija Od maja deo kompanije SAP (za 5,8 milijardi dolara). 5. MySql - Deo Oracle porodice od Januara Do nedavno besplatan. Sadašnja cena je od $2.000 do $ Postoje neke besplatne varijante i sada. Poslednja verzija 5.7.

14 POSLOVNA INTELIGENCIJA
Rast podataka nadmašuje mogućnosti korisnika da analizira, interpretira, razume i vizuelizuje podatke, te da im da adekvatan smisao. U uslovima velike raspoloživosti podataka sve je veća divergencija raspoloživih podataka i informacija potrebnih za donošenje adekvatnih odluka. Zatečeni brojnošću izvora podataka, savremeni menadžeri i istraživači sve više vremena troše na izbor relevantnih informacija.

15 Ogromno povećanje broja podataka dovelo je do prevaziđenosti tradicionalna rešenja
Many first generation warehouses are built with infrastructure similar to that used to run online transactions processing systems. A relational database such as Oracle Is deployed on a general purpose server for example from Sun attached to storage from a vendor such as EMC. This is COMPLEX with many parts to deploy, configure and manage. And complex systems are often expensive to own and operate. More problematical is that this architecture is simply not very good at analyzing big data. Transaction processing systems don’t need to move big data sets. They rely on an index to quickly find one or two records on disk and move them in to memory for update or delete by the database management system. Data warehouse workloads are very different, typically reading very large data sets and then analyzing to find threats and opportunities. Not designed for analytical workloads, the transaction processing architecture is forced to inefficiently shuffle data across internal interfaces. Poorly performing queries frustrate users attempting to solve challenging problems. Not rectifying this situation risks the business losing confidence in the warehouse.

16 Možemo da pojednostavimo stvar, sredimo ovaj nered...
Many first generation warehouses are built with infrastructure similar to that used to run online transactions processing systems. A relational database such as Oracle Is deployed on a general purpose server for example from Sun attached to storage from a vendor such as EMC. This is COMPLEX with many parts to deploy, configure and manage. And complex systems are often expensive to own and operate. More problematical is that this architecture is simply not very good at analyzing big data. Transaction processing systems don’t need to move big data sets. They rely on an index to quickly find one or two records on disk and move them in to memory for update or delete by the database management system. Data warehouse workloads are very different, typically reading very large data sets and then analyzing to find threats and opportunities. Not designed for analytical workloads, the transaction processing architecture is forced to inefficiently shuffle data across internal interfaces. Poorly performing queries frustrate users attempting to solve challenging problems. Not rectifying this situation risks the business losing confidence in the warehouse.

17 ... ako i analitiku prebacimo u skladište.
And Netezza is designed for analytics not just processing SQL queries. This means the algorithms used to detect fraud or create marketing campaigns based on previous behavior of an individual consumer run in the same powerful computing environment as the data warehouse. Technicians referred to this as in-database analytics.

18 Business Intelligence
Radi se o kategoriji informacione tehnologije koja korisnicima u poslovanju omogućava pristupanje, analizu i korišćenje podataka (Data Warehouse) u cilju sticanja neophodnih informacija za adekvatno odlučivanje i upravljanje, kao i o aplikativnim programima kojima se podržava odlučivanje, postavljaju upiti i formiraju izveštaji, vrši online analitička obrada (OLAP), zatim statističke analize, Data Mining, predviđanje itd.

19 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)

20 SQL naredbe Da li zarez iza naredbe?
Neki upravljački sistemi za upravljanje bazom podataka zahtevaju zarez na kraju svake SQL naredbe. Zarez je standardni način 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.

21 SQL 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

22 SQL 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

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

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

25 SQL naredbe Većina akcija nad bazom podataka izvode se pomoću SQL naredbe. Najčešće se koristi naredba SELECT. SELECT naredbom nalaže se preuzimanje podatke iz jedne ili više tabela. Upit sadrži spisak kolona koje će biti uključene u konačni rezultat odmah nakon SELECT. Zvezdica (*) se takođe može koristiti kada upit treba da upit vrati sve kolone izvorne tabele.

26 Zvezdica ukazuje da će biti prikazani 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 prikazani sve kolone iz tabele Studenti

27 2. Primer SELECT naredbe 2.) Ako želimo da dodamo novog studenta, koristimo naredbu INSERT INTO INSERT INTO Studenti (Ime, Prezime, ProsecnaOcena) VALUES (‘Petar', 'Petrović', 8.85);

28 SQL naredbe Na primer, sledeća SQL naredba će izdvojiti sve zapise iz tabele “Customers": The following SQL statement selects all the records in the "Customers" table: SELECT * FROM Customers; (alternativno iz tabele “Persons": SELECT * FROM Persons; )

29

30 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.

31 5. U meniju View odabrati SQL View.

32 6. Upisati iskaz SELECT * from Persons;
7. U meniju Query odabrati Run. Pojaviće se tražena tabela.

33 Rezultat ovog iskaza je prikaz svih naziva polja i podataka unutar tabele “Persons”. (upit U1)

34 SELECT naredba Naredba SELECT koristi se da se odaberu podaci iz baze podataka. 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.

35 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.

36 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]

37 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

38 SELECT naredba npr.: Upit U2 Napraviti upit koji će prikazati kolone CustomerName i City iz tabele Customers. SELECT Column Example The following SQL statement selects the "CustomerName" and "City" columns from the "Customers" table: C SELECT CustomerName,City FROM Customers;

39 SELECT naredba Alternativno: Upit U2 Napraviti upit koji će prikazati kolone LastName i FirstName iz tabele Persons. SELECT LastName, FirstName FROM Persons

40 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 npr.: Upit U3 SELECT DISTINCT City FROM Customers; Alternativno: SELECT DISTINCT City FROM Persons

41 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 Primer uslova: Upit U4 SELECT * FROM Customers WHERE Country='Mexico'; SELECT * FROM Persons WHERE City='Sandnes'

42 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

43 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.

44 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.

45 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.

46 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.

47 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

48 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

49 Operator LIKE npr.: Upit U5 SELECT * FROM Customers 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 Customers WHERE City LIKE '%s‘; npr.: Upit U7 SELECT * FROM Customers WHERE Country LIKE '%land%';

50 Operator 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%'

51 Operator IN Sintaksa: SELECT naziv_kolone(ili kolona) FROM naziv_tabele WHERE naziv_kolone IN (vrednost1,vrednost2,...) npr.: Upit U8 SELECT * FROM Customers WHERE City IN ('Paris','London'); SELECT * FROM Persons WHERE LastName IN ('Hansen','Pettersen');

52 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. npr.: Upit U9 SELECT * FROM Products WHERE Price BETWEEN 10 AND 20; SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen'

53 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. npr.: Upit U10 SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin'; SELECT * FROM Persons WHERE FirstName='Tove' AND LastName='Svendson'

54 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). npr.: Upit U11 SELECT * FROM Customers WHERE City='Berlin' OR City='München'; SELECT * FROM Persons WHERE FirstName='Tove' OR FirstName='Ola'

55 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 npr.: Upit U12 SELECT * FROM Customers ORDER BY Country; SELECT * FROM Persons ORDER BY LastName npr.: Upit U13 SELECT * FROM Customers ORDER BY Country DESC; SELECT * FROM Persons ORDER BY LastName DESC

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

57 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.

58 Funkcija AVG Izračunava srednju vrednost odabrane numeričke kolone. Sintaksa: SELECT AVG(ime_kolone) FROM ime_tabele Npr.: Upit14. SELECT AVG(Price) AS PriceAverage FROM Products; SELECT AVG(OrderPrice) AS OrderAverage FROM Orders

59 Funkcija AVG Izračunava srednju vrednost odabrane numeričke kolone. Sintaksa: SELECT AVG(ime_kolone) FROM ime_tabele Npr.: Upit15. SELECT ProductName, Price FROM Products WHERE Price>(SELECT AVG(Price) FROM Products); SELECT Customer FROM Orders WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

60 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 Npr.: Upit16 SELECT COUNT(CustomerID) AS OrdersFromCustomerID7 FROM Orders WHERE CustomerID=7; SELECT COUNT(Customer) AS CustomerNilsen FROM Orders WHERE Customer='Nilsen'

61 Funkcija COUNT COUNT (*) funkcija vraća broj slogova u tabeli. Sintaksa: SELECT COUNT(*) FROM ime_tabele Npr.: Upit17 SELECT COUNT(*) AS NumberOfOrders FROM Orders

62 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 Npr.: Upit18 SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails; SELECT SUM(OrderPrice) AS OrderTotal FROM Orders

63 Funkcija MAX Vraća najveću vrednost u okviru odabrane kolone. Sintaksa: SELECT MAX(ime_kolone) FROM ime_tabele Npr.: Upit19 SELECT MAX(Price) AS HighestPrice FROM Products; SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders

64 Funkcija MIN Vraća najmanju vrednost u okviru odabrane kolone. Sintaksa: SELECT MIN(ime_kolone) FROM ime_tabele Npr.: Upit20 SELECT MIN(Price) AS SmallestOrderPrice FROM Products; SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders

65 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 Npr.: Upit21 SELECT ProductID, SUM(Quantity) FROM OrderDetails Group By ProductID;

66 GROUP BY naredba Sintaksa: SELECT naziv_kolone, agregatna_funkcija(naziv_kolone) FROM naziv_tabele WHERE naziv_kolone operator vrednost GROUP BY naziv_kolone Npr.: Upit21a SELECT ProductID, SUM(Quantity) FROM OrderDetails WHERE Quantity > 70 Group By ProductID;

67 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

68 HAVING klauzula Npr.: Upit22 SELECT ProductID, SUM(Quantity) FROM OrderDetails Group By ProductID Having SUM(Quantity)>100; Npr.: Upit23: WHERE Quantity > 70

69 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 Npr.: Upit24: SELECT Customers.CustomerName, Orders.OrderID FROM Customers INNER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName;

70 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

71 UNION Operator Npr.: Upit25: SELECT City FROM Customers UNION SELECT City FROM Suppliers ORDER BY City;

72 UNION ALL Operator Sintaksa: SELECT naziv_kolone(a) FROM naziv_tabele1 UNION ALL SELECT naziv_kolone(a) FROM naziv_tabele2 Npr.: Upit26: SELECT City FROM Customers UNION ALL SELECT City FROM Suppliers ORDER BY City;

73 UNION ALL sa Where Sintaksa: Npr.: Upit27 SELECT City, Country FROM Customers WHERE Country='Germany' UNION ALL SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City;

74 GROUP BY i JOIN 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

75 Upit 29: Prebrojati porudžbenice po prevoziocima:
GROUP BY i JOIN Sintaksa: SELECT naziv_kolone, agregatna_funkcija(naziv_kolone) FROM naziv_tabele WHERE naziv_kolone operator vrednost GROUP BY naziv_kolone Upit 29: Prebrojati porudžbenice po prevoziocima: SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders LEFT JOIN Shippers ON Orders.ShipperID=Shippers.ShipperID GROUP BY ShipperName;

76 HAVING i INNER JOIN Npr.: Upit29 Napraviti SQL upit gde će biti prikazana imena zaposlenih i broj njihovih porudžbenica, pod uslovom da je taj broj veći od 10. SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders INNER JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID) GROUP BY LastName HAVING COUNT(Orders.OrderID) > 10;

77 HAVING i INNER JOIN Npr.: Upit 30: Napraviti SQL upit da li zaposleni Davolio ili Fuller imaju više od 25 narudžbenica. SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders INNER JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID) WHERE LastName='Davolio' OR LastName='Fuller' GROUP BY LastName HAVING COUNT(Orders.OrderID) > 25;


Download ppt "Structured Query Language"

Similar presentations


Ads by Google