29
Baze podataka SQL – Structured Query Language Nastavnik: Prof.dr.sc. Dražena Gašpar Datum: 15.04.2013.

SQL Manual

Embed Size (px)

DESCRIPTION

sql manual

Citation preview

  • Baze podataka

    SQL Structured Query Language

    Nastavnik: Prof.dr.sc. Draena Gapar

    Datum: 15.04.2013.

  • Podupiti (Subqueries)

    Podupit je SELECT iskaz ugnjeen u drugom SELECT iskazu.

    Rezultat ovog unutarnjeg SELECT iskaza koristi se u vanjskom SELECT-tu kako bi se odredio sadraj konanog rezultata.

    Podupit se moe koristiti na WHERE i HAVING iskazu, kao i u INSERT, UPDATE I DELETE iskazima.

  • Podupiti (Subqueries)

    Opi oblik podupita:

    SELECT stupac1, stupac2, FROM tablicaWHERE stupac {neki od operatora}

    (SELECT stupacFROM tablicaWHERE uvjet)

  • Podupiti (Subqueries)

    Tri tipa podupita:

    - skalarni (scalar)vraa jedan stupac i jedan redak, tj. jednu vrijednost

    - redak (row)vraa vie stupaca, ali jedan redak

    - tablica (table)vraa jedan ili vie stupaca i vie redaka

  • Podupiti (Subqueries)

    P R I M J E R :

    SELECT ImePrezime, RadnoMjesto, plaa FROM djelatniciWHERE plaa=(SELECT MIN(plaa)

    FROM djelatnici);

  • Podupiti (Subqueries)

    Nain izvravanja ugnjeenih podupita:

    1. unutarnji upit se izvrava jedanput i pronalazi vrijednost

    2. vanjski upit se izvrava jedanput koristei vrijednost na desnoj strani uvjeta

  • Podupiti (Subqueries)

    P R I M J E R :

    Pronai sve uposlenike koji imaju isti posao kao Ana Ani:

    SELECT ImePrezime, RadnoMjesto FROM djelatniciWHERE Radnomjesto=(SELECT RadnoMjesto

    FROM djelatniciWHERE ImePrezime like Ana Ani);

  • Podupiti (Subqueries)

    Podupiti koji vraaju vie od jednog retka:

    ne mogu koristiti operator jednakosti (=)

    koriste operator IN

    operator IN oekuje listu vrijednosti IN(lista vrijednosti)

  • Podupiti (Subqueries)

    P R I M J E R :

    Pronai sve uposlenike koji imaju najniu plau u svom odjeljenjuSELECT ImePrezime, plaa, ifraOdjela FROM djelatniciWHERE plaa IN (SELECT MIN(plaa)

    FROM djelatniciGROUP BY ifraOdjela);

  • Podupiti (Subqueries)

    P R I M J E R nastavak:

    SELECT ImePrezime, plaa, ifraOdjela FROM djelatniciWHERE (plaa,ifraOdjela) IN

    (SELECT MIN(plaa),ifraOdjela FROM djelatniciGROUP BY ifraOdjela);

  • Podupiti (Subqueries)

    Najee pogreke na podupitima:

    podupit vraa vie od jednog retka, a koristi se operator jednakosti (=)

    podupit ne vraa niti jedan redak

  • Podupiti (Subqueries)

    P R I M J E R za HAVING:

    Prikazati odjeljenja koja imaju prosjenu plau veu od prosjene plae odjeljenja 30

    SELECT ifraOdjela ,AVG(plaa)FROM djelatniciHAVING AVG(plaa) > (SELECT AVG(plaa)

    FROM djelatniciWHERE ifraOdjela=30)

    GROUP BY ifraOdjela;

  • Podupiti (Subqueries)P R I M J E R (razine ugnjeivanja do 255):

    Prikazati ime, posao i datum uposlenja uposlenika ija je plaa vea od najvee plae u bilo kojem Marketing odjeljenju

    SELECT ImePrezime,RadnoMjesto,DatumUposlenja,plaaFROM djelatniciWHERE plaa > (SELECT MAX(plaa)

    FROM djelatniciWHERE ifraOdjela=(SELECT ifraOdjela

    FROM odjeliWHERE NazivOdjela like

    Marketing));

  • Podupiti (Subqueries)

    Korelacijski podupiti

    -Za obradu redak po redak -Svaki SELECT se izvrava jedanput za svaki redak-Redoslijed izvravanja:

    - uzima kandidat red iz vanjskog upita- izvrava unutarnji upit koristei podatke iz kandidat

    reda- koristi vrijednosti iz unutarnjeg upita da kvalificira ili

    diskalificira kandidat red- ponavlja dok ne obradi sve kandidat retke iz vanjskog

    upita

  • Podupiti (Subqueries)P R I M J E R :

    Pronai sve uposlenike koji imaju plau veu od prosjene u njihovom odjeljenju

    SELECT ifra,ImePrezime,plaa,ifraOdjela FROM djelatnici dWHERE plaa > (SELECT AVG(plaa)

    FROM djelatniciWHERE ifraOdjela=d.ifraOdjela)

    ORDER BY ifraOdjela;

  • Podupiti (Subqueries)

    Operator EXIST

    -koristi se za testiranje postojanja reda s podupitom-ako postoji vrae se TRUE-ako ne postoji FALSE

  • Podupiti (Subqueries)

    P R I M J E R :

    Pronai sve uposlenike koji imaju bar jednu osobu koja im je podreena SELECT ifra,ImePrezime,RadnoMjesto,ifraOdjela FROM djelatnici dWHERE EXISTS (SELECT 1

    FROM djelatnici d1WHERE d1.ifraNadreenog=d.ifra)

    ORDER BY ifra;

  • Podupiti (Subqueries)

    P R I M J E R :

    Pronai odjeljenje koje nema nijednog uposlenika

    SELECT ifraOdjela,NazivOdjela FROM odjeli oWHERE NOT EXISTS (SELECT 1

    FROM djelatnici dWHERE d.ifraOdjela=o.ifraOdjela);

  • Podupiti (Subqueries)

    Upute za pisanje podupita

    -unutarnji upit mora biti u () i na desnoj strani uvjeta-mogu se usporeivati grupe stupaca -server prvo izvrava najdublji upit -mogu se koristiti operatori

  • Podupiti (Subqueries)

    Osnovne znaajke podupita

    -vraaju jedan ili vie redaka ili stupaca-mogu se koristiti u WHERE iskazu s AND/OR uvjetima-moe ukljuivati spajanja, set operatore i korelaciju-moe uzimati podatke iz tablice koja je razliita nego ona u vanjskom/drugom upitu -ne moe imati ORDER BY iskaz

  • Za vjebu

    3.Prikazati sve koautore koji su suraivali na manjem broju radova od prosjenog broja radova po koautorima. Izgled izvjea:Ime koautora Prezime koautora Institucija Broj radova

    4. Prikazati koautore koji nisu objavili niti jedan rad u inozemnom asopisu. Izgled izvjea:Ime koautora Prezime koautora Institucija Podruje zanimanja

  • Rjeenje

    3.Prikazati sve koautore koji su suraivali na manjem broju radova od prosjenog broja radova po koautorima. Izgled izvjea:Ime koautora Prezime koautora Institucija Broj radova

    SELECT k.ime, k.prezime, k.institucija,COUNT(*) BrRadovaFROM koautor k, suradnja sWHERE s.id_koautor=k.ifraGROUP BY k.ime, k.prezime, k.institucijaHAVING COUNT(*) (SELECT AVG(COUNT(*))

    FROM projektUesnikGROUP BY id_projekt)

  • 2. Prikazati sve profesore koji nisu vodili niti jedan projekt. Izgled izvjea:

    Ime profesora Naziv profesora Titula Funkcija

    SELECT pr.ime, pr.prezime, pr.titula, pr.funkcija FROM profesor prWHERE NOT EXISTS

    (SELECT 1FROM projekt pWHERE p.id_profesor= pr.ifra)

  • P I T A NJ A ???