1 / 13

SQL Structured Query Language

SQL Structured Query Language. GRUPNI UPITI. SELECT [ALL|DINSTICT] nazivi kolona, agregatne kolone FROM nazivi_tablica|join veze [WHERE uvjetni izraz] [GROUP BY nazivi kolona] [HAVING uvjetni izraz] [ORDER BY sort_izraz]

Download Presentation

SQL Structured Query Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQLStructured Query Language

  2. GRUPNI UPITI • SELECT [ALL|DINSTICT] nazivi kolona, agregatne kolone FROM nazivi_tablica|join veze [WHERE uvjetni izraz] [GROUP BY nazivi kolona] [HAVING uvjetni izraz] [ORDER BY sort_izraz] GROUP BY – određuje grupe po kojima se dijele izlazni rezultati, dobiveni pomoću select izraza, te primjenu agregatnih funkcija nad pojedinim grupama • redovi izlaznog rezultata select izraza koji u svim kolonama navedenim u GROUP BY izrazu imaju iste vrijednosti povezuju se u istu grupu, nad kojom se može zadati agregatna funkcija SELECT STUDENT.STUDENT_ID, IME, PREZIME, BROJ=COUNT(SEM) FROM STUDENT INNER JOIN UPISNI_LIST ON STUDENT.STUDENT.ID=UPISNI_LIST.STUDENT_ID GROUP BY STUDENT.STUDENT_ID, IME, PREZIME

  3. GRUPNI UPITI • HAVING uvjetni izraz • ograničenje izlaznih rezultata po zadanom uvjetu nakon izvršenja GROUP BY operacije • WHERE – ograničava izlazne rezultate prije grupiranja (uvjetuje broj redova koji ulaze u grupiranje) • HAVING - ograničava izlazne rezultate poslije grupiranja pogrešno: SELECT STUDENT.STUDENT_ID, IME, PREZIME, BROJ=COUNT(SEM) FROM STUDENT INNER JOIN UPISNI_LIST ON STUDENT.STUDENT.ID=UPISNI_LIST.STUDENT_ID GROUP BY STUDENT.STUDENT_ID, IME, PREZIME HAVING SK_GOD>’1997/98’

  4. UGNJEŽĐENI UPITI - PODUPITI • SELECT izraz uključen u glavni SELECT, INSERT, UPDATE ili DELETE upit • upit koji uključuje podupit, svoj uvjetni dio izraza temelji na rezultatima koji su dobiveni izvršenjem podupita • podupit se uključuje u glavni upit u uvjetnom dijelu izraza (WHERE ili HAVING) • SELECT [ALL|DINSTICT] nazivi kolona, agregatne kolone FROM nazivi_tablica|join veze [WHERE uvjet=subquery] [GROUP BY nazivi kolona] [HAVING uvjet=subquery] • najprije se izvršava podupit, a rezultati koje da je podupit postaju dio uvjetnog izraza glavnog upita

  5. UGNJEŽĐENI UPITI - PODUPITI • PODUPITI LISTE • vraća niz rezultata (listu), koju glavni upit koristi u svom uvjetnom izrazu preko predikata liste (IN) SELECT STUDENT_ID, IME, PREZIME FROM STUDENT WHERE STUDENT_ID IN (SELECT STUDENT_ID FROM UPISNI_LIST WHERE SK_GOD=‘1999’ AND SEM=1) ORDER BY PREZIME, IME

  6. UGNJEŽĐENI UPITI - PODUPITI 2. PODUPITI SA OPERATOROM USPOREDBE • rezultat podupita uključuje se u glavni upit preko jednog od predikata usporedbe (=, <>,<…) • podupit vraća samo jednu vrijednost, a ne kao pod 1. listu vrijednosti SELECT STUDENT_ID, IME, PREZIME FROM STUDENT WHERE MJESTU_ID=(SELECT MJESTO_ID FROM STUDENT WHERE IME=‘X’ AND PREZIME=‘Y’) ORDER BY PREZIME, IME DELETE UPISNI_LIST WHERE STUDENT_ID=(SELECT STUDENT_ID FROM STUDENT WHERE IME=‘X’ AND PREZIME=‘Y’) AND SEM=1

  7. UGNJEŽĐENI UPITI - PODUPITI 3. KORELIRANI PODUPITI • izračunavanje podupita ovisi o glavnom upitu, tj. podupit se izvodi za svaki podatak glavnog upita • podupit nezavisan od glavnog upita i izvodi se samo jednom: SELECT * FROM STUDENT WHERE MJESTO_ID= (SELECT MJESTO_ID FROM MJESTO WHERE IME_MJESTA=‘OSIJEK’) • isto pomoću koreliranog upita: SELECT * FROM STUDENT WHERE ‘OSIJEK’=(SELECT IME_MJESTA FROM MJESTO WHERE STUDENT.MJESTO_ID=MJESTO.MJESTO_ID)

  8. UGNJEŽĐENI UPITI - PODUPITI • PODUPITI SA PREDIKATOM POSTOJANJA (EXISTS, NOT EXISTS) • operator EXISTS ispituje postojanje podataka uz navedene uvjete • uvjetni izraz glavnog upita ispituje postojanje podataka koje vraća podupit SELECT STUDENT_ID, IME, PREZIME FROM STUDENT WHERE NOT EXISTS (SELECT * FROM UPISNI_LIST WHERE STUDENT.STUDENT_ID=UPISNI_LIST.STUDENT_ID) SELECT * FROM MJESTO WHERE EXISTS (SELECT * FROM STUDENT WHERE MJESTO.MJESTO_ID=STUDENT.MJESTO_ID)

  9. UNIJA • upit_1 UNION [ALL] upit_2…ORDER BY sort • povezuje rezultate više upita u jedinstveni skup rezultata • uklanja duplicirane redove rezultata obaju upita • ALL - za prikaz svih redova, bez eliminacije duplikata • mora vrijediti: - upit_1 i upit_2 imaju jednak broj izlaznih kolona - izlazne kolone za upit_1 i upit_2 moraju biti istog tipa T1 T2 SELECT *FROM T1 UNION SELECT* FROM T2

  10. POGLED (VIEW) • KREIRANJE POGLEDA CREATE VIEW ime AS SELECT ...select query [WITH CHECK] CREATE VIEW V_UPISNI_LIST AS SELECT IME, PREZIME, MAT_BR, SEM, SK_GOD,OBR_PROG_IME FROM STUDENT INNER JOIN UPISNI_LIST ON STUDENT.STUDENT_ID=UPISNI_LIST.STUDENT_ID INNER JOIN OBR_PROG ON UPISNI_LIST.OBR_PROG_ID=OBR_PROG.OBR_PROG_ID SELECT * FROM V_UPISNI_LIST WHERE IME=‘X’ AND PREZIME=‘Y’

  11. POGLED (VIEW) • PREIMENOVANJE ATRIBUTA POGLEDA 1. novi_naziv=atribut CREATE VIEW V_STUDENTI AS SELECT IME, PREZIME,UPISANI_SEMESTAR=SEM FROM STUDENT INNER JOIN UPISNI_LIST ON STUDENT.STUDENT_ID=UPISNI_LIST.STUDENT_ID 2. atribut AS novi_naziv CREATE VIEW V_STUDENTI AS SELECT IME, PREZIME, SEM AS UPISANI_SEMESTAR FROM STUDENT INNER JOIN UPISNI_LIST ON STUDENT.STUDENT_ID=UPISNI_LIST.STUDENT_ID 3. CREATE VIEW naziv_pogleda (naziv atributa) AS CREATE VIEW V_STUDENTI (IME,PREZIME,UPISANI_SEMESTAR) AS SELECT IME,PREZIME,SEM FROM STUDENT INNER JOIN UPISNI_LIST ON STUDENT.STUDENT_ID=UPISNI_LIST.STUDENT_ID

  12. POGLED (VIEW) • AŽURIRANJE, UNOS I BRISANJE PODATAKA - za razliku od stvarnih tablica, pogled podliježe znatnim ograničenjima - mijenjanje, unos i brisanje podataka zabranjeno je za poglede: - formirane iz više od jedne tablice - formirane grupnim upitom (GROUP BY) - koji sadrže bar jedan atribut stvoren pomoću agregatne funkcije - formirane pomoću opcije DINSTICT - formirane kao UNION query - formirane pomoću složenog upita sa podupitom

  13. POGLED (VIEW) • UKLANJANJE POGLEDA DROP VIEW naziv_pogleda DROP VIEW V1_STUDENT

More Related