Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL. SQL SQL Structured Query Language (SQL) predstavlja programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u sistemima.

Similar presentations


Presentation on theme: "SQL. SQL SQL Structured Query Language (SQL) predstavlja programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u sistemima."— Presentation transcript:

1

2 SQL

3 SQL Structured Query Language (SQL) predstavlja programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u sistemima za upravljanje relacionim bazama podataka (Relational Database Management Systems - RDBMS), za kreiranje i modifikacija šema relacione baze podataka i za kontrolu pristupa objektima baze podataka.

4 SQL Sve naredbe SQL jezika se mogu podeliti u četiri velike grupe:
1. Data Definition Language (DDL) - jezik koji se koristi za definisanje strukture relacione baze podataka 2. Data Manipulation Language (DML) - jezik za pribavljanje i ažuriranje podataka u relacionoj bazi podataka.

5 SQL 3. Pretraživanje - iskazi samo omogućuju prikazivanje postojećih podataka u bazi. Iskazi uvek počinju ključnom rečju SELECT iza koje slede željeni podaci, iskazi i sl. Iskazi pretraživanja ne menjaju podatke u bazi. 4. Kontrolu - jezik za kontrolu podataka (DCL - Data Control Language). DCL iskazi koriste se za dodelu ili oduzimanje privilegija za pristup bazi podataka.

6 DDL naredbe SQL DDL naredbe se koriste za kreiranje, izmenu i brisanje same relacione baze podataka. Centralni objekat svake relacione baze podataka jeste tabela. Za kreiranje tabele koristi se SQL naredba CREATE TABLE.

7 Kreiranje upita u Access-u

8 Kreiranje upita u Access-u

9 Kreiranje upita u Access-u

10 Prozor za pisanje upita

11 Prozor za pisanje upita

12 Rezultat upita

13

14 Prikaz upita

15 SELECT naredba Pretraživanje i pribavljanje podataka su najčešće operacije koje korisnici izvršavaju u relacionoj bazi podataka. Za pretraživanje i pribavljanje podataka SQL programski jezik obezbeđuje naredbu SELECT. Naredba SELECT pribavlja podatke iz jedne tabele ili više povezanih tabela koje se nalaze u relacionoj bazi podataka. U svom osnovnom obliku naredba SELECT ne može ni na koji način da izmeni podatke koji se nalaze u relacionoj bazi podataka.

16 SELECT Naredba SELECT je jedna od najkompleksnijih naredbi SQL programskog jezika. Uključuje veći broj ključnih reči klauzula:

17 SELECT SELECT - definiše listu kolona koje će biti uključene u rezultujuću tabelu FROM - definiše tabele iz kojih se pribavljaju podaci za potrebe generisanja rezultujuće tabele. Klauzula FROM može da uključi jednu ili više opcionih JOIN klauzula za povezivanje tabela na osnovu kriterijuma zadatih od strane korisnika. WHERE - definiše predikat na osnovu koga se ograničava broj vrsta u rezultujućoj tabeli. Ova klauzula iz rezultata eliminiše sve vrste za koje specificirani predikat ne vraća vrednost TRUE. GROUP BY - grupiše vrste koje u određenim kolonama imaju identične vrednosti. HAVING - definiše predikat na osnovu koga se elimišu vrste nakon što je klauzula GROUP BY primenjena na rezultujuću tabelu. ORDER BY - koristi se za sortiranje rezultujuće tabele. Korisnici specificiraju kolone po kojima se vrši sortiranje kao i smer sortiranja.

18 FROM WHERE GROUP BY HAVING ORDER BY
Klauzule GROUP BY i HAVING je moguće kombinovati sa WHERE klauzulom. Pri tome treba voditi računa o redosledu izvršavanja! Redosled je sledeći: SELECT FROM WHERE GROUP BY HAVING ORDER BY

19 Relacioni model baze podataka PREDUZEĆE

20 Primeri SELECT * FROM RADNIK;
Rezultat bi bio ekvivalenta da smo napisali upit kod koga su umesto * navedena imena svih kolona u tabeli. SELECT MatBr, ime, Sslovo, Prezime, DatRodj, Adresa, Pol, Plata, Rukovodilac, Sektor FROM RADNIK;

21 Primeri Ukoliko želimo da eliminišemo duplikate koristićemo ključnu reč DISTINCT. SELECT DISTINCT Rukovodilac FROM RADNIK; SELECT Rukovodilac FROM RADNIK;

22 WHERE klauzula Klauzula WHERE specificira uslov na osnovu koga se kreira rezultujuća tabela. U rezultujuću tabelu će biti uključene samo one vrste koje zadovoljavaju specificirani uslov. U uslovu se mogu javiti:

23 WHERE Relacioni operatori Logički operatori Operator BETWEEN
1. = Jednako 2. <> Nije jednako (različito) 3. < Manje od 4. > Veće od 5. <= Manje ili jednako od 6. >= Veće ili jednako od Relacioni operatori Logički operatori Operator BETWEEN Operator IN Operator LIKE Operator IS NULL

24 Primeri U ovom primeru dat je SQL upit koji prikazuje podatke o radnicima koji se prezivaju Petrović. SELECT * FROM RADNIK WHERE Prezime = "Petrović";

25 Logički operatori SQL omogućava korišćenje standardnih logičkih operatore AND, OR i NOT, ali i operatore IN i BETWEEN koji omogućavaju jednostavnije korišćenje prethodno navedenih operatora u nekim slučajevima. Prioritet logičkih operatora je sledeći: NOT AND OR

26 Primeri Ukolimo želimo da prikažemo podatke o radnicima koji se prezivaju Petrović i čija je plata jednaka ili veća od možemo koristiti SQL upit koji je dat u nastavku. SELECT * FROM RADNIK WHERE Prezime = "Petrović" AND Plata >= 40000;

27 Primeri Korišćenjem operatora IN, NOT IN izdvajaju se samo radnici koji se prezivaju Petrović ili Jovanović. SELECT * FROM RADNIK WHERE Prezime IN ("Petrović","Jovanović");

28 LIKE Operator LIKE(NOT LIKE) omogućava poređenje vrednosti kolone sa zadatim šablonom. Kod definisanja šablona koristi se procenat (%) i znak pitanja (?). Procenat (%) predstavlja bilo koji mogući znak (broj, slovo, interpunkcijski znak) ili skup znakova. Znak pitanja (?) zamenjuje samo jedan znak.

29 Primeri Za nalaženje svih radnika koji imaju "J" na početku prezimena, može se koristiti šablon "J%". SELECT * FROM RADNIK WHERE Prezime LIKE "J*";

30 ORDER BY Klauzula ORDER BY specificira redosled prikazivanja vrste rezultujuće tabele, sortiranjem po vrednosti nekih kolona u rastući (ASC) (predefinisana vrednost) ili opadajući redosled (DESC). Ukoliko klauzula ORDER BY nije navedena vrste u rezultujućoj tabeli su poređane po slučajnom principu i ne postoji nikakva garancije da će isti upit uvek generisati rezultujuću tabelu čije su vrste poređane na isti način.

31 Primeri SQL upit koji prikazuje podatke o radnicima i sortira ih prema prezimenu u opadajućem i rastućem redosledu. SELECT * FROM RADNIK ORDER BY Prezime;

32 Aritmetičke funkcije SQL dozvoljava korišćenje matematičkih funkcija u SELECT i WHERE klauzulama. Na taj način se kao rezultat pretraživanja mogu prikazati rezultati izračunavanja nekog matematičkog izraza.

33 Primeri SQL upit koji prikazuje imena i prezimena radnika kao i njihove plate uvećane za bonus od SELECT Ime, Prezime, Plata AS PlataSaBonusom FROM RADNIK;

34 Funkcije agregacije Funkcije agregacije su dobile naziv po tome što vrše agregaciju rezultata upita. Korišćenje ovih funkcija je jednostavno, pošto se navode u listi kolona SELECT klauzule koje se prikazuju. Značenje funkcija je sledeće: AVG(kolona) - izračunava srednju vrednost datog atributa SUM(kolona) - izračunava sumu svih vrednosti atributa MIN(kolona) - nalazi minimalnu vrednost atributa MAX(kolona) - nalazi najveću vrednost atributa COUNT(*) - nalazi broj vrsta u tabeli (grupi) COUNT(kolona) - nalazi broj broj vrsta sa ne NULL vrednostima kolone

35 Count Funkcija COUNT određuje broj vrsta u rezultujućoj tabeli.
SELECT COUNT(*) AS PlataSaBonusom FROM RADNIK;

36 Obratiti pažnju!!! Posebno je bitno zapamtiti da funkcije agregacije nije moguće koristiti u WHERE klauzuli. To je posledica činjenice da se rezultat funkcija agregacija izračunava nakon što se odrede vrste koje ulaze u sastav rezultujuće tabele, odnosno nakon obrade predikta koji je zadata u WHERE klauzuli. U nastavku je dat SQL upit koji se NE MOŽE IZVRŠITI i koji će GENERISATI GREŠKU.

37 Loš upit SELECT Ime, Prezime, Plata FROM RADNIK WHERE Plata > AVG(Plata). WHERE Plata>(SELECT AVG(Plata) FROM RADNIK); GREŠKA !!! Ispravno bi bilo:

38 Klauzule GROUP BY i HAVING
U prethodnim primerima upoznali smo se sa funkcijama agregacije. Ove funkcije imaju zadatak da omoguće generisanje sumarnih informacija na osnovu podataka u relacionoj bazi podataka. Klauzula GROUP BY ima zadatak da omogući grupisanje vrsta u rezultujućoj tabeli na osnovu zajedničkih vrednosti.

39 Primeri SQL upit koji za svaki sektor računa broj radnika koji rade u njemu. Za grupisanje radnika po broju sektora u kome radi iskorišćena je GROUP BY klauzula. SELECT Sektor, COUNT(*) FROM RADNIK GROUP BY Sektor;

40 HAVING klauzula Klauzula HAVING omogućava filtriranje rezultata dobijenih korišćenjem GROUP BY klauzule. Ova klauzula primenjuje uslov filtriranje na formirane grupe.

41 Primeri SQL upit iz prethodnog primera je modifikovan, korišćenjem HAVING klauzule, tako da su prikazani podaci samo o sektorima koji imaju više od jednog radnika. SELECT Sektor, COUNT(*) FROM RADNIK GROUP BY Sektor HAVING COUNT(*) > 1;

42 Redosled klauzula Klauzule GROUP BY i HAVING je moguće kombinovati sa WHERE klauzulom. Pri tome treba voditi računa o redosledu izvršavanja (isti je redosled po kome se klauzule ređaju prilikom pisanja SELECT naredbe). Prilikom korišćenja klauzule GROUP BY, sve kolone koje su navedene u klauzuli SELECT a na koje nije primenjena neka funkcija agregacije, MORAJU BITI NAVEDENE U GROUP BY KLAUZULI. U suprotnom SQL upit neće moći da se izvrši.

43 Primeri SELECT Sektor, COUNT(*) AS BrojRadnika FROM RADNIK WHERE Pol = 'Ž' GROUP BY Sektor HAVING COUNT(*) > 1;

44 Spajanje tabela Svi SQL upiti koje smo do sada razmatrali su koristili podatke iz samo jedne tabele. Često se javlja situacija da se tražena informacija nalazi u većem broju tabela. U takvim situacijama potrebno je izvršiti spajanje vrsta iz različitih tabela i generisanje rezultujuće tabele. Za pribavljanje podataka iz većeg broja tabela dovoljno je u klauzuli FROM navesti imena tabela iz kojih želimo da pribavimo podatke.

45 Linkovi Ekonomski fakultet u Nišu, online vežbanje upita preko ORACLE Express sistema na Web-u: Online aplikacija za vežbanje SQL jezika: ORACLE Academy

46 Informacije Sve informacije o ovom webinaru moći ćete naći na blog sajtu: Prezentacije, projekat, program SharpEER


Download ppt "SQL. SQL SQL Structured Query Language (SQL) predstavlja programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u sistemima."

Similar presentations


Ads by Google