SQL SQL Structured Query Language SQL predstavlja programski

  • Slides: 46
Download presentation

SQL

SQL

SQL • Structured Query Language (SQL) predstavlja programski jezik koji je projektovan za potrebe

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.

SQL • Sve naredbe SQL jezika se mogu podeliti u četiri velike grupe: •

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.

SQL 3. Pretraživanje - iskazi samo omogućuju prikazivanje postojećih podataka u bazi. Iskazi uvek

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.

DDL naredbe • SQL DDL naredbe se koriste za kreiranje, izmenu i brisanje same

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.

Kreiranje upita u Access-u

Kreiranje upita u Access-u

Kreiranje upita u Access-u

Kreiranje upita u Access-u

Kreiranje upita u Access-u

Kreiranje upita u Access-u

Prozor za pisanje upita

Prozor za pisanje upita

Prozor za pisanje upita

Prozor za pisanje upita

Rezultat upita

Rezultat upita

Prikaz upita

Prikaz upita

SELECT naredba • Pretraživanje i pribavljanje podataka su najčešće operacije korisnici izvršavaju u relacionoj

SELECT naredba • Pretraživanje i pribavljanje podataka su najčešće operacije 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.

SELECT • Naredba SELECT je jedna od najkompleksnijih naredbi SQL programskog jezika. Uključuje veći

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

SELECT - definiše listu kolona koje će biti uključene u rezultujuću tabelu FROM -

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.

Klauzule GROUP BY i HAVING je moguće kombinovati sa WHERE klauzulom. Pri tome treba

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

Relacioni model baze podataka PREDUZEĆE

Relacioni model baze podataka PREDUZEĆE

Primeri • SELECT * FROM RADNIK; Rezultat bi bio ekvivalenta da smo napisali upit

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

Primeri Ukoliko želimo da eliminišemo duplikate koristićemo ključnu reč DISTINCT. • SELECT DISTINCT Rukovodilac

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

WHERE klauzula • Klauzula WHERE specificira uslov na osnovu koga se kreira rezultujuća tabela.

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:

WHERE • • • Relacioni operatori Logički operatori Operator BETWEEN Operator IN Operator LIKE

WHERE • • • Relacioni operatori Logički operatori Operator BETWEEN Operator IN Operator LIKE Operator IS NULL 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

Primeri U ovom primeru dat je SQL upit koji prikazuje podatke o radnicima koji

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

Logički operatori • SQL omogućava korišćenje standardnih logičkih operatore AND, OR i NOT, ali

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

Primeri Ukolimo želimo da prikažemo podatke o radnicima koji se prezivaju Petrović i čija

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

Primeri Korišćenjem operatora IN, NOT IN izdvajaju se samo radnici koji se prezivaju Petrović

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ć");

LIKE Operator LIKE(NOT LIKE) omogućava poređenje vrednosti kolone sa zadatim šablonom. Kod definisanja šablona

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.

Primeri Za nalaženje svih radnika koji imaju "J" na početku prezimena, može se koristiti

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*";

ORDER BY Klauzula ORDER BY specificira redosled prikazivanja vrste rezultujuće tabele, sortiranjem po vrednosti

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.

Primeri SQL upit koji prikazuje podatke o radnicima i sortira ih prema prezimenu u

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;

Aritmetičke funkcije SQL dozvoljava korišćenje matematičkih funkcija u SELECT i WHERE klauzulama. Na taj

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.

Primeri SQL upit koji prikazuje imena i prezimena radnika kao i njihove plate uvećane

Primeri SQL upit koji prikazuje imena i prezimena radnika kao i njihove plate uvećane za bonus od 5000. SELECT Ime, Prezime, Plata + 5000 AS Plata. Sa. Bonusom FROM RADNIK;

Funkcije agregacije su dobile naziv po tome što vrše agregaciju rezultata upita. Korišćenje ovih

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 vrsta sa ne NULL vrednostima kolone

Count Funkcija COUNT određuje broj vrsta u rezultujućoj tabeli. • SELECT COUNT(*) AS Plata.

Count Funkcija COUNT određuje broj vrsta u rezultujućoj tabeli. • SELECT COUNT(*) AS Plata. Sa. Bonusom • FROM RADNIK;

Obratiti pažnju!!! Posebno je bitno zapamtiti da funkcije agregacije nije moguće koristiti u WHERE

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.

Loš upit SELECT Ime, Prezime, Plata FROM RADNIK WHERE Plata > AVG(Plata). GREŠKA !!!

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

Klauzule GROUP BY i HAVING U prethodnim primerima upoznali smo se sa funkcijama agregacije.

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.

Primeri SQL upit koji za svaki sektor računa broj radnika koji rade u njemu.

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;

HAVING klauzula Klauzula HAVING omogućava filtriranje rezultata dobijenih korišćenjem GROUP BY klauzule. Ova klauzula

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

Primeri SQL upit iz prethodnog primera je modifikovan, korišćenjem HAVING klauzule, tako da su

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;

Redosled klauzula Klauzule GROUP BY i HAVING je moguće kombinovati sa WHERE klauzulom. Pri

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.

Primeri SELECT Sektor, COUNT(*) AS Broj. Radnika FROM RADNIK WHERE Pol = 'Ž' GROUP

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

Spajanje tabela Svi SQL upiti koje smo do sada razmatrali su koristili podatke iz

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.

Linkovi Ekonomski fakultet u Nišu, online vežbanje upita preko ORACLE Express sistema na Web-u:

Linkovi Ekonomski fakultet u Nišu, online vežbanje upita preko ORACLE Express sistema na Web-u: • http: //dualpiii. eknfak. ni. ac. rs: 8080/apex/f? p= 4550: 11: 3887440157444690: : NO: Online aplikacija za vežbanje SQL jezika: • http: //www. w 3 schools. com/sql/default. asp ORACLE Academy

Informacije • Sve informacije o ovom webinaru moći ćete naći na blog sajtu: •

Informacije • Sve informacije o ovom webinaru moći ćete naći na blog sajtu: • http: //midusware. wordpress. com • Prezentacije, projekat, program Sharp. EER