SQL korelisani podupit SELECT I NAZIV FROM I





























- Slides: 29
SQL: korelisani podupit SELECT I. NAZIV FROM I WHERE ‘k 3’ IN (SELECT KI. K_SIF FROM KI WHERE KI. I_SIF = I. I_SIF)
SQL: korelisani podupit nad jednom tabelom Šifre svih knjiga koje izdaje više od jednog izdavača: SELECT DISTINCT KIX. K_SIF FROM KI KIX WHERE KIX. K_SIF IN (SELECT KIY. K_SIF FROM KI KIY WHERE KIY. I_SIF <> KIX. I_SIF)
SQL: podupiti - egzistencijalni kvantor SELECT I. NAZIV FROM I WHERE EXISTS (SELECT * FROM KI WHERE KI. I_SIF = I. I_SIF AND KI. K_SIF = ‘k 3’)
SQL: podupiti - univerzalni kvantor l Naći nazive izdavača koji izdaju sve knjige Branka Ćopića
SQL: podupiti - univerzalni kvantor l Nazivi knjiga Branka Ćopića:
SQL: podupiti - univerzalni kvantor l Nazivi izdavača koji su izdali sve knjige B. Ć.
SQL: skalarne funkcije l l l Konverzione, npr. DECIMAL(), DIGITS(), FLOAT(), INTEGER() Opšte, npr. LENGTH() – dužina podataka u bajtovima Aritmetičke, npr. ABS(), TAN(), SQRT(), TRUNC() Obrada znakovnih podataka: SUBSTR(), POSSTR() Nad specifičnim tipovima, npr. TIME(), YEAR(), DATE(), DAY() nad tipovima TIME, DATE, TIMESTAMP
SQL: skalarne funkcije, CASE-WHEN l SELECT NAZIV, CASE SUBSTR(DRZAVA, 1, 1) WHEN 'J' THEN 'Yugoslavia' WHEN 'A' THEN 'USA' WHEN 'E' THEN 'UK' END AS DRZAVA_ENG FROM I
SQL: agregatne funkcije l l l l l COUNT SUM AVG MAX MIN -------------------STD(expr) STDDEV(expr) VARIANCE(expr)
SQL: agregatne funkcije - count SELECT COUNT (DISTINCT I_SIF) FROM KI (rezultat? ) SELECT COUNT(*) FROM KI WHERE KI. K_SIF = ‘k 6’ (rezultat? )
Tabele KI, I
SQL: agregatne funkcije – sum, max SELECT SUM(TIRAZ) FROM KI WHERE KI. K_SIF = ‘k 6’ l (rezultat? ) Agregatna funkcija u where liniji? ? ? SELECT I. I_SIF FROM I WHERE STATUS < (SELECT MAX(STATUS) FROM I) l (rezultat? )
SQL: agregatne funkcije – avg SELECT IX. I_SIF, IX. STATUS, IX. DRZAVA FROM I IX WHERE IX. STATUS >= (SELECT AVG(STATUS) FROM I IY WHERE IY. DRZAVA = IX. DRZAVA)
SQL: agregatne funkcije – avg rezultat
SQL: GROUP BY SELECT K_SIF, SUM(TIRAZ) FROM KI GROUP BY K_SIF
SQL: HAVING SELECT K_SIF FROM KI GROUP BY K_SIF HAVING COUNT(*) > 1
SQL: UNION, INTERSECT, EXCEPT SELECT K_SIF FROM K WHERE OBLAST = ‘roman’ UNION SELECT K_SIF FROM KI WHERE I_SIF = ‘i 2’
SQL: tabela K
SQL: UNION, INTERSECT, EXCEPT SELECT DRZAVA FROM I INTERSECT SELECT DRZAVA FROM P
SQL: tabela P
SQL: UNION, INTERSECT, EXCEPT SELECT DRZAVA FROM I INTERSECT ALL SELECT DRZAVA FROM P
SQL: UNION, INTERSECT, EXCEPT SELECT DRZAVA FROM P EXCEPT SELECT DRZAVA FROM I EXCEPT ALL? ? ?
SQL: ORDER BY - 1 SELECT I_SIF, STATUS FROM I ORDER BY STATUS DESC
SQL: ORDER BY - 2 SELECT K_SIF, IZDANJE, ‘Tiraz u hiljadama =’, TIRAZ/1000 FROM KI ORDER BY 5, I_SIF
SQL: ORDER BY – 2 - rezultat
SQL: operator WITH l Iz tabele sa parovima (IME, NAZIV) koja sadrži imena pisaca i nazive izdavača koji izdaju knjige tih pisaca, izdati nazive svih izdavača Branka Ćopića. l WITH PI AS (SELECT DISTINCT IME, NAZIV FROM P, I, KP, KI WHERE P. P SIF=KP. P SIF AND KP. K SIF=KI. K SIF AND KI. I SIF=I. I SIF) SELECT NAZIV FROM PI WHERE IME='B. Copic'
SQL: operator WITH - rezultat
SQL: Način izvršavanja SELECT iskaza SELECT. . . FROM. . . WHERE. . . GROUP BY. . . HAVING. . . ORDER BY. . . 1. 2. 3. 4. 5. 6. Dekartov proizvod (FROM) Restrikcija (WHERE) Grupisanje (GROUP BY) Izbor grupa (HAVING) Projekcija (SELECT) Uređenje (ORDER BY)
SQL: relaciona kompletnost l l l 1. Unija, presek, razlika – direktno 2. Dekartov proizvod: FROM 3. Projekcija: SELECT 4. Restrikcija: WHERE 5. Spajanje: SELECT-FROM-WHERE 6. deljenje: R(A; B) : S(C) SELECT A FROM R RX WHERE NOT EXISTS (SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM R WHERE R. B = S. C AND R. A = RX. A))