BAZE PODATAKA. Neđeljko Lekić.

Podobne dokumenty
Baze podataka (vježbe) SQL - uvod i osnove naredbe SELECT. Sveučilište u Zagrebu PMF Matematički odsjek

BAZE PODATAKA. Neđeljko Lekić.

PARCIJALNE DIFERENCIJALNE JEDNAČINE. , odnosno

BAZE PODATAKA. Model Objekti/Veze. Neđeljko Lekić. Dr. Peter Chen

Neprekidnost i limes. Definicija. Neka je I R otvoreni interval i c I. Funkcija. f : I {c} R

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Grupowanie i funkcje agregujące

Wykład 6. SQL praca z tabelami 3

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Konstruowanie Baz Danych DQL agregacja danych

Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

ACESS- zadania z wykorzystaniem poleceń SQL

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Bazy danych. dr inż. Arkadiusz Mirakowski

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Paweł Rajba

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podstawy języka SQL cz. 2

Relacyjne bazy danych. Podstawy SQL

Podzapytania. Podzapytania nieskorelowane i skorelowane

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

SQL (ang. Structured Query Language)

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Autor: Joanna Karwowska

Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

Technologie baz danych

Map Reduce Proste zliczanie słów i zapytania SQL

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

Relacyjne bazy danych. Podstawy SQL

Podzapytania do tabel W miejscu w którym możemy użyć nazwy tabeli, możemy użyć podzapytania

SQL Structured Query Language

Darko Drakulić. Osnove programskog jezika C sa zbirkom zadataka -skripta-

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Krok 1. SELECT Symbol AS KS INTO Dzielnik FROM Towary WHERE (Nazwa='Orzeszki solone') OR (Nazwa = 'Zupy CHOISE') OR (Nazwa = 'Kawa BURG');

Wprowadzenie do języka SQL

POTREBNI STE STRUCI TEHNIČARA MOTORNIH VOZILA!

3. Podzapytania, łączenie tabel i zapytań

PODZAPYTANIE (SUBSELECT)

Podyplomowe Studia Systemy informatyczne w logistyce

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Bazy danych 10. SQL Widoki

Język SQL, zajęcia nr 2

NORTHWIND. Anonco.pl. ćwiczenia praktyczne. KiK s Tutorials. NORTHWIND dwiczenia praktyczne. ANONCO.PL/SQL SQLSERVERDLAOPORNYCH.WORDPRESS.

a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy)

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Bazy danych Język SQL część 2 Wykład dla studentów matem

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

BAZY DANYCH JĘZYK ZAPYTAŃ BAZ DANYCH SQL. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

1. UVOD U TEORIJU FORMALNIH JEZIKA

Laboratorium nr 10. Temat: Połączenia relacji

Podstawowe zapytania SELECT (na jednej tabeli)

Vježba 2 Regularni izrazi I (eng. regex)

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Microsoft SQL Server Podstawy T-SQL

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Wykład 5. SQL praca z tabelami 2

Marek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

LAB 3 (część 1 Projektu)

Projektowanie Systemów Inf.

Bazy danych SQL Server 2005

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Bazy Danych. SQL Podstawy języka II: zapytania. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Współczesne systemy baz danych

Język SQL. Rozdział 8. Język manipulowania danymi DML

Algoritmi i strukture podataka

Wstęp do relacyjnych baz danych. Jan Bartoszek

Systemy GIS Tworzenie zapytań w bazach danych

Laboratorium Bazy danych SQL 2

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Współczesne systemy baz danych

Operacja PIVOT w języku SQL w środowisku Oracle

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Bazy danych wykład trzeci. Konrad Zdanowski

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

Instrukcje DQL: SELECT. Zastosowanie SELECT, opcje i warianty

Transkrypt:

BAZE PODATAKA SQL SELECT (I dio) Neđeljko Lekić Irena Orović ć www.etf.ac.me www.elektronika.t-com.me t me

U OVOJ LEKCIJI SQL SELECT WHERE klauzula SELECT iz više tabela Povezivanje tabela

SELECT SQL SELECT: PREGLED [DISTINCT ALL] <columnlist> FROM <table-names> [WHERE <condition>] [ORDER BY <column-list>] [GROUP BY <column-list>] [HAVING <condition>] ([]- optional, -or)

PRIMJERI TABELA Student ID Ime Prezime 103 Jovan Simić 104 Marina Jokić 105 Jana Brkić 106 Marko Jokić 107 Jovan Brkić Predmeti Kod Naziv BPD Baze podataka PR1 Programiranje 1 PR2 Programiranje 2 RHD Računarski hardver Rezultati ID Kod Bodovi 103 BPD 72 103 RHD 58 104 PR1 68 104 RHD 65 106 PR2 43 107 PR1 76 107 PR2 60 107 RHD 35

DISTINCT i ALL Ponekad ne želite duplirane stavke Upotrebom DISTINCT uklanjaju se duplikati. SELECT DISTINCT Prezime FROM Student Prezime Simić Brkić Jokić Upotrebom ALL ostaju default. SELECT ALL Prezime FROM Student Prezime Simić Jokić Brkić Jokić Brkić

WHERE klauzula Obično se ne žele svi redovi u izvještaju WHERE klauzula odabira redove (zapise) za izvještaj. Ima oblik uslova samo oni redovi koji zadovoljavaju uslov biti će odabrani. Primjeri uslova: Bodovi < 40 Ime = Jovan Ime <> Jovan Ime = Prezime (Ime = Jovan ) AND (Prezime = Simić ) (Bodovi < 40) OR (Bodovi > 70)

WHERE: PRIMJERI SELECT * FROM Rezultati WHERE Bodovi >= 60 SELECT DISTINCT ID FROM Rezultati WHERE Bodovi >= 60 ID Kod Bodovi ID 103 BPD 72 104 PR1 68 104 RHD 65 103 104 107 107 PR1 76 107 PR2 60

WHERE: PRIMJER Data je tabela Napisati SQL upit koji Rezultati ID Kod Bodovi 103 BPD 72 103 RHD 58 104 PR1 68 104 RHD 65 106 PR2 43 107 PR1 76 107 PR2 60 107 RHD 35 će naći listu ID brojeva i bodova za predmet sa kodom RHD, studenata koji su sakupili 40 ili više bodova. ID Bodovi 103 58 104 65

JEDNO RJEŠENJE Želimo samo ID ib Bodove, Kod NE! Jednostr. navodnici oko stringa SELECT ID, Bodovi FROM Rezultati WHERE ( Kod ='RHD') AND (Bodovi >= 40) Interesuju nas samo redovi sa kodom RHD Interesuju nas samo redovi koji imaju j j j više od 40 bodova.

SELECT IZ VIŠE TABELA Često je potrebno kombinovati podatke iz dvije ili više tabela. Efekt proizvoda može se dobiti upotrebom: SELECT * FROM Table1, Table2... Ako tabele sadrže kolone istog imena - nedefinisan rezultat. Ovo se rješava označavanjem kolone imenom tabele: TableName.Column l

SELECT IZ VIŠE TABELA SELECT Student Ime, Prezime, Bodovi ID Ime Prezime FROM Student, Rezultati 103 Jovan Simić WHERE 104 Marina Jokić (Student.ID = Rezultati.ID) AND (Bodovi >= 40) 105 Jana Brkić 106 Marko Jokić Rezultati 107 Jovan Brkić ID Kod Bodovi 103 BPD 72 103 RHD 58 104 PR1 68 104 RHD 65 106 PR2 43 107 PR1 76 107 PR2 60 107 RHD 35

SELECT IZ VIŠE TABELA SELECT * FROM Student, Rezultati su upareni sa prvim redom iz tebele Student... I zatim sa drugim I tako dalje ID Ime Prezime ID Kod Bodovi 103 Jovan Simić 103 BPD 72 103 Jovan Simić 103 RHD 58 103 Jovan Simićić 104 PR1 68 103 Jovan Simić 104 RHD 65 103 Jovan Simić 106 PR2 43 103 Jovan Simić 107 PR1 76 103 Jovan Simić 107 PR2 60 103 Jovan Simić 107 RHD 35 104 Marina Jokić 103 BPD 72 104 Marina Jokić 103 RHD 58 104 Marina Jokić 104 PR1 68 104 Marina Jokić 104 RHD 65 104 Marina Jokić 106 PR2 43 Si Svi redovi iiz tebele Rezultati

SELECT IZ VIŠE TABELA SELECT * FROM Student, Rezultati WHERE (Student.ID = Rezultati.ID) ID Ime Prezime ID Kod Bodovi 103 Jovan Simić 103 BPD 72 103 Jovan Simić 103 RHD 58 103 Jovan Simić 104 PR1 68 103 Jovan Simić 104 RHD 65 103 Jovan Simić 106 PR2 43 103 Jovan Simić 107 PR1 76 103 Jovan Simić 107 PR2 60 103 Jovan Simić 107 RHD 35 104 Marina Jokić 103 BPD 72 104 Marina Jokić 103 RHD 58 104 Marina Jokić 104 PR1 68 104 Marina Jokić 104 RHD 65 104 Marina Jokić 106 PR2 43

SELECT IZ VIŠE TABELA SELECT * FROM Student, Rezultati WHERE (Student.ID = Rezultati.ID) ID Ime Prezime ID Kod Bodovi 103 Jovan Simić 103 BPD 72 103 Jovan Simić 103 RHD 58 104 Marina Jokić 104 PR1 68 104 Marina Jokić 104 RHD 65 106 Marko Jokić 106 PR2 43 107 Jovan Brkić 107 PR1 76 107 Jovan Brkić 107 PR2 60 107 Jovan Brkić 107 RHD 35 Student.ID Rezultati.ID

SELECT IZ VIŠE TABELA SELECT * FROM Student, Rezultati WHERE (Student.ID = Rezultati.ID) AND (Bodovi>= 40) ID Ime Prezime ID Kod Bodovi 103 Jovan Simić 103 BPD 72 103 Jovan Simić 103 RHD 58 104 Marina Jokić 104 PR1 68 104 Marina Jokić 104 RHD 65 106 Marko Jokić 106 PR2 43 107 Jovan Brkić 107 PR1 76 107 Jovan Brkić 107 PR2 60 107 Jovan Brkić 107 RHD 35

SELECT IZ VIŠE TABELA SELECT * FROM Student, Rezultati WHERE (Student.ID = Rezultati.ID) AND (Bodovi>= 40) ID Ime Prezime ID Kod Bodovi 103 Jovan Simić 103 BPD 72 103 Jovan Simić 103 RHD 58 104 Marija Jokić 104 PR1 68 104 Marija Jokić 104 RHD 65 106 Marko Jokić 106 PR2 43 107 Jovan Brkić 107 PR1 76 107 Jovan Brkić 107 PR2 60

SELECT IZ VIŠE TABELA SELECT Ime, Prezime, Bodovi FROM Student, Rezultati WHERE (Student.ID = Rezultati.ID) AND (Bodovi >= 40) ID Ime Prezime ID Kod Bodovi 103 Jovan Simić 103 BPD 72 103 Jovan Simić 103 RHD 58 104 Marija Jokić 104 PR1 68 104 Marija Jokić 104 RHD 65 106 Marko Jokić 106 PR2 43 107 Jovan Brkić 107 PR1 76 107 Jovan Brkić 107 PR2 60

SELECT IZ VIŠE TABELA SELECT Ime, Prezime, Bodovi FROM Student, Rezultati WHERE (Student.ID = Rezultati.ID) AND (Bodovi >= 40) Ime Prezime Bodovi Jovan Simić 72 Jovan Simić 58 Marija Jokić 68 Marija Jokić 65 Marko Jokić 43 Jovan Brkić 76 Jovan Brkić 60

SELECT IZ VIŠE TABELA Prilikom selekcije iz više tabela gotovo uvijek se koristiti WHERE klauzulal za nalaženje zapisa sa zajedničkom vrijednošću. SELECT * FROM Student, Rezultati, Predmeti WHERE Student.ID = Rezultati.ID AND Predmeti.Kod = Rezultati.Kod

SELECT IZ VIŠE TABELA Student Rezultati Predmet ID Ime Prezime ID Kod Bodovi Kod Naziv 103 Jovan Simić 103 BPD 72 BPD Baze podataka 103 John Simić 103 RHD 58 RHD Računarski hardver 104 Marija Jokić 104 PR1 68 PR1 Programiranje 1 104 Marija Jokić 104 RHD 65 RHD Računarski č hardver 106 Marko Jokić 106 PR2 43 PR2 Programiranje 2 107 Jovan Brkić 107 PR1 76 PR1 Programiranje 1 107 Jovan Brkić 107 PR2 60 PR2 Programiranje 2 107 Jovan Brkić 107 RHD 35 RHD Računarski hardver Student.ID = Rezultati.ID Rezulatati.Kod = Predmet.Kod

SPAJANJE TABELA (JOIN) JOIN može se koristiti za kombinovanje tabela. Postoji više načina spajanja j CROSS JOIN INNER JOIN NATURAL JOIN OUTER JOIN OUTER JOIN je povezivanje sa NULLama više o tome kasnije A CROSS JOIN B vraća uparene, svaki sa svakim, redove iz A i B. A NATURAL JOIN B vraća parove redova sa istom vrijednosti u koloni istog imena, i bez dupliranja kolona. A INNER JOIN B Vraća parove redova koji zadovoljavaju j uslov.

CROSS JOIN Student ID Ime 123 Jovan 124 Marija 125 Marko 126 Jana Upis ID Kod 123 BPD 124 PRG 124 BPD 126 PRG SELECT * FROM Student CROSS JOI N Upis ID Ime ID Kod 123 Jovan 123 BPD 124 Marija 123 BPD 125 Marko 123 BPD 126 Jana 123 BPD 123 Jovan 124 PRG 124 Marija 124 PRG 125 Marko 124 PRG 126 Jana 124 PRG 123 Jovan 124 BPD 124 Marija 124 BPD

NATURAL JOIN Student ID Ime 123 Jovan 124 Marija 125 Marko 126 Jana SELECT * FROM Student NATURAL JOIN Upis Upis ID Kod ID Ime Kod 123 BPD 124 PRG 124 BPD 126 PRG 123 Jovan BPD 124 Marija PRG 124 Marija BPD 126 Jana PRG

CROSS i NATURAL JOIN SELECT * FROM A CROSS JOIN B je isto što i SELECT * FROM A, B SELECT * FROM A NATURAL JOIN B je isto što i SELECT A.col1, A.coln, [i sve druge kolone osim B.col1, B.coln] FROM A, B WHERE A.col1 = B.col1 AND A.col2 = B.col2... AND A.coln = B.coln (podrazumijeva se da col1 coln u A i B imaju isto ime)

INNER JOIN INNER JOINs specificira i uslov koji parovi redova zadovoljavaju j SELECT * FROM A INNER JOIN B ON <condition> Može se koristiti i SELECT * FROM A INNER JOIN B USING (col1, col2, ) Povezuje redove kod kojih su vrijednosti datih kolona jednake

INNER JOIN Student ID Ime 123 Jovan 124 Marija 125 Marko 126 Jana SELECT * FROM Student INNER JOIN Upis USING (ID) Upis ID Kod ID Ime ID Kod 123 BPD 123 Jovan 123 BPD 124 PRG 124 Marija 124 PRG 124 BPD 124 Marija 124 BPD 126 PRG 126 Jana 126 PRG

INNER JOIN Kupci Ime Budzet Simić 100,000 Jović 150,000 Grgić 80,000000 SELECT * FROM Kupci INNER JOIN Imovine ON Cijena <= Budzet Imovine Adresa Cijena Ime Budzet Adresa Cijena 15 Slobode 85,000 Simić 100,000 15 Slobode 85,000 12 Njegoševa 125,000 Jović 150,000 15 Slobode 85,000 87 Ćopićeva 175,000 Jović 150,000000 12 Njegoševa 125,000

INNER JOIN SELECT * FROM A INNER JOIN B ON <condition> je isto kao i SELECT * FROM A, B WHERE <condition> SELECT * FROM A INNER JOIN B USING(col1,col2,...) je isto kao i SELECT * FROM A, B WHERE A.col1 = B.col1 AND A.col2 = B.col2 AND...

JOIN i WHERE klauzule JOIN (izgleda) nije neophodno Može se dobiti isti efekat selektovanjem iz više tabela sa odgovarajućom WHERE klauzulom Pa, bismo li koristili JOIN ili ne? Da, jer JOIN ponekad vodi konciznijim iji upitima NATURAL JOIN je prilično čest slučaj spajanja tabela Ne, jer Podrška za JOIN varira između SQL-a različitih DBMS-ova.

PISANJE UPITA Kod pisanja upita Često postoje mnogi načini da se napiše upit. Za sada treba voditi računa da upit bude tačan, jasan, i koncizan, tim redom. Ne treba previše brinuti o domišljatosti i efikasnosti. Mnogi DBMS-ovi imaju optimizator upita. Oni analiziraju korisnikov upit i procjenjuju koliko se efikasno izvršava. Jednostavni upit je lakše optimizovati. Kanije ćemo se upoznati sa nekim načinima povećanja efikasnosti upita.

ZA VJEŽBU Koristeći tabele sa vježbi iz predhodne lekcije, sastaviti sljedeće upite: Numere cid Num Naziv Traj uid cid Naslov 1 1 Violent 239 1 1 Mix 9.99 1 2 Every Girl 410 1 2 Kompilacija 12.99 1 3 Breather 217 1 1 4 Part of Me 279 1 Umjetnici 2 1 Star 362 1 2 2 Teaboy 417 2 uid Ime CD 1 Stellar 2 Cloudboy Cijena 1. Napisati upit koji vraća listu svih CD naslova. 2. Napisati upit koji vraća listu naziva numera koje traju duže od 300 sekundi. 3. Napisati upit koji vraća listu imena umjetnika koji imaju numeru čije je trajanje duže od 400 sekundi.

ZA VJEŽBU 4. Napisati upit koji vraća listu imena umjetnika koji imaju numeru na Kompilacija CD-u. 5. Napraviti upit pretrazivanja nad relacijama Umjetnici, Numere i CD koji će kao rezultat vratiti ime umjetnika, ime Numere koju umjetnik izvodi i naslov CD-a kojemu numera pripada. 6. Napraviti upit pretrazivanja nad relacijama Umjetnici, Numere i CD koji će kao rezultat t vratiti naziv Numere, njeno trajanje j i naslov CD-a kojemu numera pripada, ukoliko je njihov autor umjetnik sa imenom Steller.

SLJEDEĆA LEKCIJA Još o SQL SELECT Pseudonimi P d i i (lažna imena) Spajanje sa sobom Podupiti IN, EXISTS, ANY, ALL