Podstawy języka SQL cz. 2

Podobne dokumenty
Przestrzenne bazy danych Podstawy języka SQL

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

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Wymagania: Konstrukcja prostych zapytań w języku SQL, umiejętność wykorzystania funkcji wierszowych i agregujących.

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

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

Autor: Joanna Karwowska

3. Podzapytania, łączenie tabel i zapytań

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

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

Ćwiczenie 3 funkcje agregujące

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

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

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

SQL do zaawansowanych analiz danych część 1.

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

Laboratorium nr 10. Temat: Połączenia relacji

Technologie baz danych

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

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

PODZAPYTANIE (SUBSELECT)

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

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

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

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

Laboratorium Bazy danych SQL 2

Autor: Joanna Karwowska

SQL praca z tabelami 4. Wykład 7

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Ćwiczenie 5 podzapytania

SQL (ang. Structured Query Language)

Wykład 6. SQL praca z tabelami 3

LAB 3 (część 1 Projektu)

Grupowanie i funkcje agregacji

Struktura bazy danych

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Ćwiczenie 4 - połączenia

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Autor: Joanna Karwowska

Bazy danych wykład trzeci. Konrad Zdanowski

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

Paweł Rajba

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

SQL Structured Query Language

Bazy danych SQL Server 2005

Model relacyjny. Wykład II

Grupowanie i funkcje agregujące

Język SQL, zajęcia nr 2

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Model relacyjny. Wykład II

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

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Podyplomowe Studia Systemy informatyczne w logistyce

Klasyczna Analiza Danych

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

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

Laboratorium Bazy danych SQL 3 1

Microsoft SQL Server Podstawy T-SQL

Złaczenia tablic: FROM, WHERE, JOIN

Relacyjne bazy danych. Podstawy SQL

Podstawowe zapytania SELECT (na jednej tabeli)

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

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

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

SQL - Structured Query Language. strukturalny język zapytań

Bazy danych i usługi sieciowe

Wprowadzenie do języka SQL

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Wykład 5. SQL praca z tabelami 2

1 Wstęp do modelu relacyjnego

Systemy GIS Tworzenie zapytań w bazach danych

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Zagadnienia podstawowe

Wykład 8. SQL praca z tabelami 5

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Relacyjne bazy danych. Podstawy SQL

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

Plan. Wyświetlanie n początkowych wartości (TOP n) Użycie funkcji agregujących. Grupowanie danych - klauzula GROUP BY

Współczesne systemy baz danych

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Podstawy SQL. 1. Wyświetl całość informacji z relacji ZESPOLY. 2. Wyświetl całość informacji z relacji PRACOWNICY

Współczesne systemy baz danych

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

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

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

Zadania z SQLa (MS SQL Server)

Optymalizacja poleceń SQL Metody dostępu do danych

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

W y k ł a d SELECT. Polecenie wyświetlające zawartość tabeli. Składnia uproszczona: Temat: Polecenie SELECT. Plan wykładu:

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

Podzapytania. Podzapytania nieskorelowane i skorelowane

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

Język SQL. Rozdział 2. Proste zapytania

RBD Relacyjne Bazy Danych

Relacyjny model danych

Transkrypt:

Podstawy języka SQL cz. 2 1. Operatory zbiorowe a. UNION suma zbiorów z eliminacją powtórzeń, b. EXCEPT różnica zbiorów z eliminacją powtórzeń, c. INTERSECT część wspólna zbiorów z eliminacją powtórzeń. zapytanie1 UNION EXCEPT INTERSECT zapytanie2 UNION EXCEPT INTERSECT zapytanie3...; 2. Funkcje agregujące i grupujące a. MIN minimum, b. MAX maksimum, c. COUNT liczba wystąpień, d. SUM suma, e. AVG średnia, f. COUNT i. COUNT(*) liczba rekordów, ii. COUNT(wyrażenie) liczba niepustych wartości wyrażenia, g. GROUP BY - definiuje wyrażenie grupujące, h. ORDER BY ASC DSC i. HAVING warunek_logiczny umożliwia wybór grup, spełniających warunek logiczny. Zapytania będą realizowane w oparciu o następującą relację: i. Znajdź minimalną wartość płacy podstawowej osób pracujących na etacie reżysera: SELECT MIN(Pensja_pod) FROM Pracownicy WHERE Etat LIKE 'reżyser';

ii. Znajdź minimalną wartość płacy podstawowej osób pracujących na etacie kaskadera: SELECT MIN(Pensja_pod), MAX(Pensja_pod) FROM Pracownicy WHERE Etat LIKE 'reżyser'; iii. Znajdź średnią wartość płacy podstawowej wśród pracowników każdego zespołu, posortuj wynik wg średniej rosnąco: SELECT Etat, AVG(Pensja_pod) FROM Pracownicy GROUP BY Etat ORDER BY AVG(Pensja_pod); SELECT Etat, AVG(Pensja_pod) FROM Pracownicy GROUP BY Etat ORDER BY 2; iv. Dla każdego etatu znajdź średnią płacę pracowników z danego miasta wynik posortuj wg etatu: SELECT Etat, Adres, AVG(Pensja_pod) FROM Pracownicy GROUP BY Etat, Adres ORDER BY 1; v. Podaj nazwę i średnie płace podstawowe na etatach na których zatrudnionych jest nie mniej niż 2 pracowników: SELECT Etat, AVG(Pensja_pod) FROM Pracownicy GROUP BY Etat HAVING COUNT(*) >=2;

3. Połączenia relacji Na przykładzie poniższej bazy: a. iloczyn kartezjański - wybiera wszystkie możliwe kombinacje zbioru krotek, i. iloczyn kartezjański zbiorów wydawnictwa i książki: SELECT * FROM Wydawnictwa CROSS JOIN Autorzy; SELECT * FROM Wydawnictwa, Autorzy; ii. wyświetl wszystkie kombinacje nazwisk autorów kończących się na s i nazw wydawnictw zaczynających się na S: SELECT Nazwisko, Nazwa FROM Autorzy CROSS JOIN Wydawnictwa WHERE Nazwa LIKE 'S%' AND Nazwisko LIKE '%s'; b. połączenia równościowe, c. połączenia naturalne - to połączenie równościowe relacji, w którym warunki równości dotyczą wszystkich par atrybutów o takich samych nazwach. Podstawową różnicą, pomiędzy zapytaniami równościowymi, a naturalnymi, jest lista atrybutów relacji powstającej w wyniku połączenia. W wyniku połączenia naturalnego atrybut (albo atrybuty) połączeniowe występują tylko raz, podczas gdy w wyniku połączenia równościowego występują oba atrybuty połączeniowe z obu łączonych relacji. i. Wyświetl tytuły książek i nazwę wydawnictw, które je wydały: SELECT Tytuł, Nazwa FROM Wydawnictwa NATURAL JOIN Książki; SELECT Tytuł, Nazwa FROM Wydawnictwa JOIN Książki ON Wydawnictwa.WydID=Książki.WydId; SELECT Tytuł, Nazwa FROM Wydawnictwa JOIN Książki USING(WydId);

ii. Wyświetl numer ISBN, tytuł oraz ilość autorów każdej z książki SELECT k.isbn, k.tytuł, COUNT(*) FROM Książki k NATURAL JOIN Książki_Autorzy KA GROUP BY k.isbn, k.tytuł; d. połączenia nierównościowe - połączeniami, w których warunek połączeniowy nie używa operatora równości, ale dowolny inny operator. Podobnie jak w przypadku połączenia równościowego, w wyniku połączenia nierównościowego powstaje relacja, która zawiera wszystkie atrybuty z obu relacji. e. połączenia zewnętrzne pokazuje wszystkie krotki z jednej, albo z obydwu łączonych relacji znalazły się w wyniku połączenia, nawet takie, które nie spełniają warunków połączenia (nie znalazły pary). Aby móc zachować wszystkie krotki z jednej relacji, do drugiej relacji wprowadzana jest wirtualna krotka, która wypełniona jest wartościami pustymi. Wszystkie krotki z relacji, które nie mogą znaleźć swojej pary, łączone są z "wirtualną" krotką w drugiej relacji. i. Wyświetl ID wydawnictw oraz tytuły i ceny książek które te wydawnictwa wydały: SELECT Tytuł, Wydawnictwa.WydID, Cena FROM Książki RIGHT OUTER JOIN Wydawnictwa ON Książki.WydID = Wydawnictwa.WydID; ii. Wyświetl tytuły i ceny książek oraz ID wydawnictw które te książki wydały: SELECT Tytuł, Wydawnictwa.WydID, Cena FROM Książki NATURAL LEFT JOIN Wydawnictwa;

iii. Wyświetl wszystkie informacje o wydawnictwach w połączeniu ze wszystkimi informacjami o książkach: SELECT * FROM Książki FULL OUTER JOIN Wydawnictwa ON Książki.WydID=Wydawniwnictwa.WydID; f. połączenia zwrotne - łączymy tabelę samą z sobą. Połączeniem zwrotnym może być dowolny typ połączenia (wewnętrzne, zewnętrzne, równościowe i nierównościowe) bez połączenia naturalnego. i. Wyświetlić tytuły książek dla których cena jest mniejsza od ceny The cat : SELECT Tytuł, Cena FROM Książki WHERE Cena<29.00; lub SELECT k.tytuł, k.cena FROM Książki k JOIN Książki kk ON k.cena<kk.cena WHERE kk.tytuł='the cat'; g. połączenia wielu tabel i. Wyświetl informację o tytułach książek i identyfikatorach ich autorów: SELECT Tytuł, AuID FROM Książki LEFT OUTER JOIN Książki_Autorzy ON Książki.ISBN=Książki_Autorzy.ISBN;

ii. Wyświetl informację o tytułach książek oraz imionach i nazwiskach ich autorów: SELECT Tytuł, Imię, Nazwisko FROM Książki LEFT OUTER JOIN Książki_Autorzy ON Książki.ISBN=Książki_Autorzy.ISBN JOIN Autorzy USING(AuID); iii. Wyświetl informację o tytułach książek oraz imionach i nazwiskach ich autorów i nazw wydawnictw, które te książki wydały: SELECT Tytuł, Imię, Nazwisko, Nazwa FROM Książki LEFT OUTER JOIN Książki_Autorzy ON Książki.ISBN=Książki_Autorzy.ISBN JOIN Autorzy USING(AuID) JOIN Wydawnictwa USING(WydID);

4. Podzapytania Ujęte w nawiasy zapytanie, umieszczone wewnątrz innego zapytania (tzw. zapytania zewnętrznego), najczęściej w warunkach klauzul WHERE i HAVING, również w SELECT i FROM (rozwiązania specyficzne). Ogólny schemat stosowania podzapytań: SELECT wyrażenie_a1,... FROM nazwa_relacji_a1 WHERE wyrażenie_a3 operator (SELECT wyrażenie_b1 FROM nazwa_relacji_b1 WHERE...) ORDER BY wyrażenie_a4; a. Wierszowe zwraca zawsze co najwyżej jeden rekord, zawierający jedną lub wiele wartości. i. Dopuszczalne zastosowanie operatorów logicznych: =,!=, <>, >, >=, <, <=. ii. Znajdź tytuł i cenę najtańszej książki (podzapytanie zwraca rekord z jedną wartością): SELECT Tytuł, Cena FROM Książki WHERE Cena =(SELECT MIN(Cena) FROM Książki); b. Tablicowe - zwraca zbiór rekordów zawierających jedną lub wiele wartości. i. Dopuszczalne zastosowanie operatorów: IN, ANY, ALL. ii. Podaj tytuły najdroższych książek wydanych przez poszczególne wydawnictwa: SELECT Tytuł, Cena FROM Książki WHERE Cena IN (SELECT MAX(Cena) FROM Książki GROUP BY WydID); iii. Sprawdź, czy w bazie znajdują się książki droższe od jakiejkolwiek książki wydawnictwa Small House : SELECT Tytuł, Cena FROM Książki WHERE Cena > ANY (SELECT Cena FROM Książki WydID WHERE WydID=3);

iv. Sprawdź, czy w bazie znajdują się książki droższe od książek wydawnictwa Small House : SELECT Tytuł, Cena FROM Książki WHERE Cena > ALL (SELECT Cena FROM Książki WydID WHERE WydID = (SELECT WydID FROM Wydawnictwa WHERE Nazwa Like 'Small House') ); c. Zastosowanie klauzuli HAVING i. Podaj identyfikator i średnią cenę książek, tego wydawnictwa, które nie przekracza średniej ceny wszystkich książek: SELECT WydID, AVG(Cena) FROM Książki GROUP BY(WydID) HAVING AVG(Cena) > (SELECT AVG(Cena) FROM Książki); d. Skorelowane - podzapytanie wykonywane wielokrotnie raz dla każdego rekordu przeglądanego przez zapytanie zewnętrzne. W podzapytaniu odwołanie do wyrażenia z zapytania zewnętrznego. i. Ogólny schemat: SELECT wyrażenie_a1,... FROM nazwa_relacji_a1 WHERE wyrażenie_a2 operator (SELECT wyrażenie_b1 FROM nazwa_relacji_b1 WHERE wyrażenie_b2 = wyrażenie_a3) ORDER BY wyrażenie_a4; ii. Przebieg wykonania: 1. Pobranie rekordu R1 przez zapytanie zewnętrzne. 2. Wykonania podzapytania na podstawie wartości rekordu R1, podzapytanie dostarcza wartości dla warunku W1 zapytania zewnętrznego. 3. Jeśli W1 jest spełniony, R1 trafia do zbioru wynikowego. 4. Jeśli pozostały jeszcze nie pobrane rekordy, przejdź do punktu 1. iii. Podaj tytuły i ceny wszystkich książek, których cena jest większa lub równa średniej cenie książek danego wydawnictwa: SELECT k.tytuł, k.cena FROM Książki k WHERE k.cena >= (SELECT AVG(Cena) FROM Książki WHERE k.wydid=wydid);