Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT



Podobne dokumenty
Autor: Joanna Karwowska

Wykład 6. SQL praca z tabelami 3

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

Konstruowanie Baz Danych DQL agregacja danych

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

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

Przestrzenne bazy danych Podstawy języka SQL

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

Relacyjne bazy danych. Podstawy SQL

P o d s t a w y j ę z y k a S Q L

Złaczenia tablic: FROM, WHERE, JOIN

Relacyjne bazy danych. Podstawy SQL

Wykład 5. SQL praca z tabelami 2

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Operacja Teta-złączenia. v1 v1 Θ v2

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

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

Paweł Rajba

Microsoft SQL Server Podstawy T-SQL

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

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

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

Zadania z SQLa (MS SQL Server)

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

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

Systemy GIS Tworzenie zapytań w bazach danych

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

Model relacyjny. Wykład II

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

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

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

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

Wykład 05 Bazy danych

RBD Relacyjne Bazy Danych

Wprowadzenie do baz danych

Przykładowa baza danych BIBLIOTEKA

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Grupowanie i funkcje agregujące

Wprowadzenie do języka SQL

1 Wstęp do modelu relacyjnego

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

Podstawy języka SQL cz. 2

3. Podzapytania, łączenie tabel i zapytań

Bazy danych SQL Server 2005

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy danych. Informacje podstawowe

Model relacyjny. Wykład II

Laboratorium Bazy danych SQL 2

Język SQL podstawy zapytań

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

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

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

Język SQL, zajęcia nr 1

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

SQL Structured Query Language

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

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

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

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

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

TEST E.14 BAZY DANYCH

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

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

Podyplomowe Studia Systemy informatyczne w logistyce

Wykład 8. SQL praca z tabelami 5

Bazy danych. Wprowadzenie. SKiBD

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Oracle11g: Wprowadzenie do SQL

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

LAB 3 (część 1 Projektu)

Technologie baz danych

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

Ref. 7 - Język SQL - polecenia DDL i DML

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

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

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

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

Bazy danych. Wykład V Kwerendy. Copyrights by Arkadiusz Rzucidło 1

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Tadeusz Pankowski Relacyjne bazy danych. są podstawą zachodniej cywilizacji

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

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

Podstawowe zapytania SELECT (na jednej tabeli)

Ćwiczenie zapytań języka bazy danych PostgreSQL

ACESS- zadania z wykorzystaniem poleceń SQL

Grupowanie i funkcje agregacji

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

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

Transkrypt:

Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania projektami w firmach informatycznych realizowany w ramach Programu Operacyjnego Kapitał Ludzki Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT Antoni Ligęza ligeza@agh.edu.pl http://home.agh.edu.pl/~ligeza http://home.agh.edu.pl/~ligeza/wiki

Bazy danych: Podstawy języka SQL 2 Bazy danych i systemy zarzadzania Wykład VIII Elementy języka SQL Część II

Bazy danych: Podstawy języka SQL 3 Zagnieżdżanie zapytań Zapytania w SQL mogą operować na wynikach innych zapytań; możliwe jest więc tzw. zagnieżdżanie zapytań. Typowy schemat zagnieżdżania: SELECT Kolumna/Kolumny FROM Tabela WHERE Atrybut IN NOT IN [[=,<,>,...]ANY ALL] SELECT Kolumna/Kolumny FROM Tabela WHERE Warunek; SELECT DataZlozeniaZamowienia, NumerKlienta FROM Zamowienia WHERE NumerZamowienia IN ( SELECT NumerZamowienia FROM ZamowioneKsiazki WHERE ISBN = 83-204-1806-2 ); SELECT Nazwisko, Imie FROM Klienci WHERE NumerKlienta IN ( SELECT NumerKlienta FROM Zamowienia WHERE NumerZamowienia = ANY ( SELECT Numer Zamowienia FROM ZamowioneKsiazki WHERE Rok = 1999 ) ); Operatory IN oraz ANY pozwalają na przeszukanie pewnego zbioru; różnica pomiędzy nimi polega na możliwości zastosowania różnych operatorów relacyjnych (zamiast "=") dla ANY.

Bazy danych: Podstawy języka SQL 4 Złaczenie W specyfikacji tabeli, po słowie FROM można zdefiniować dowolne złączenie tabel (naturalne, θ-złączenie, iloczyn kartezjański; wewnętrzene, zewnętrzne i typu union). Składnia odpowiednich wyrażeń jest następująca. złączenie krzyżowe: TablicaA CROSS JOIN TablicaB, złączenie naturalne: TablicaA [NATURAL] [typ złączenia] JOIN TablicaB, złączenie union: TablicaA UNION JOIN TablicaB, złączenie przez predykat : TablicaA [typ złączenia] JOIN TablicaB ON predykat, złączenie po zadanej kolumnie: TablicaA [typ złączenia] JOIN TablicaB USING (nazwa kolumny,...), typy złączenia: INNER {LEFT RIGHT FULL} [OUTER]. Przykłady: SELECT Imie, Nazwisko, NumerZamowienia, DataZamowienia FROM Klienci, Zamowienia WHERE Klienci.NumerKlienta = Zamowienia.NumerKlienta AND Nazwisko IN ( Kowalski, Malinowski, Nowak ); SELECT Imie, Nazwisko, NumerZamowienia, DataZamowienia FROM Klienci JOIN Zamowienia ON Klienci.NumerKlienta = Zamowienia.NumerKlienta; SELECT Imie, Nazwisko, NumerZamowienia, DataZamowienia FROM Klienci T1 LEFT OUTER JOIN Zamowienia T2 ON (T1.NumerKlienta = T2.NumerKJlienta);

Bazy danych: Podstawy języka SQL 5 Suma relacji zgodnych operator UNION wewnatrz klauzuli SELECT SELECT kolumnaa1, kolumnaa2,..., kolumnaak FROM tabelaa WHERE predykata UNION SELECT kolumnab1, kolumnab2,..., kolumnabk FROM tabelab WHERE predykatb; Wskazane kolumny muszą mieć identyczne typy i rozmiary (niekoniecznie nazwy) oraz musi być zachowana zgodna kolejność tych kolumn. Zastosowanie operatora UNION automatycznie usuwa duplikaty. SELECT Identyfikator, Nazwisko, Imie, Wiek FROM Pracownicy WHERE Wiek < 28 UNION SELECT Identyfikator, Nazwisko, Imie, Wiek FROM Studenci WHERE Wiek < 28; Opcja CORRESPONDING BY jest określona dla SQL-92 (gdy wybrane kolumny są zgodne, co do nazwy; struktura tabel nie musi być identyczna). FROM Pracownicy WHERE Wiek < 28 UNION CORRESPONDING BY (Identyfikator, Nazwisko, Imie, Wiek) FROM Studenci WHERE Wiek < 28; Kolumny nie wykazane w opcji CORRESPONDING BY są pomijane.

Bazy danych: Podstawy języka SQL 6 Suma relacji zgodnych operator OR w opcji WHERE klauzuli SELECT SELECT kolumna1, kolumna2,..., kolumnak FROM Tabela WHERE PredykatA UNION SELECT kolumna1, kolumna2,..., kolumnak FROM Tabela WHERE PredykatB; Dla realizacji sumy elementów tej samej tabeli można wykorzystać spójnik OR: SELECT kolumna1, kolumna2,..., kolumnak FROM Tabela WHERE PredykatA OR PredykatB; SELECT Identyfikator, Nazwisko, Imie, Wiek FROM Pracownicy WHERE Dzial = Kadry UNION SELECT Identyfikator, Nazwisko, Imie, Wiek FROM Pracownicy WHERE Dzial = Place ; może być zastąpione przez: SELECT Identyfikator, Nazwisko, Imie, Wiek FROM Pracownicy WHERE Dzial = Kadry OR Dzial = "Place ; Zapytanie z UNION dwukrotnie przeszukuje tabelę; OR nie usuwa duplikatów.

Bazy danych: Podstawy języka SQL 7 Suma relacji polecenie INSERT Polecenie INSERT INTO może być wykorzystane do dopisania pojedynczego wiersza do tabeli oraz skopiowania jednego lub wielu wierszy z innej tabeli; ma ono ogólną postać: INSERT INTO Tabela [(kolumna1, kolumna2,...,kolumnak)] VALUES (lista wartosci); lub INSERT INTO TabelaA [(kolumnaa1, kolumnaa2,...,kolumnaak)] SELECT kolumnab1, kolumnab2,...,kolumnabk FROM TableaB WHERE WarunekWyboruWierszy;; Przykładowe zastosowania: INSERT INTO Ksiazki VALUES ( 83-87102-55-5, Harrington, SQL dla kazdego, EDU-Mikom, 1998, Warszawa ); INSERT INTO Ksiazki (ISBN,Autor,Tytul) VALUES ( 83-87102-55-5, Harrington, SQL dla kazdego ); INSERT INTO Ksiazki SELECT ISBN, Autor, Tytul, Wydawnictwo, Rok, Miejsce FROM ZamowioneKsiazki WHERE Status = Dostarczone ; Uwaga: rekordy generowane poleceniem SELECT muszą być zgodne co do struktury (liczba, typ) z tabelą docelową.

Bazy danych: Podstawy języka SQL 8 Różnica (odejmowanie) tabel/relacji SELECT kolumna1, kolumna2,..., kolumnak FROM TabelaA WHERE (kol1, kol2,...,kolj) NOT IN (SELECT kol1,...,kolj FROM TabelaB WHERE Warunek); Przykłady: SELECT Autor, Tytul FROM Ksiazki WHERE ISBN NOT IN (SELECT ISBN FROM ZamowKsiazki); SELECT NazwaWydawcy FROM Wydawcy WHERE NazwaWydawcy NOT IN (SELECT NazwaWydawcy FROM Ksiazki WHERE ISBN IN (SELECT ISBN FROM ZamowKsiazki) ); SELECT NazwaKlienta, NrKlienta FROM KLienci WHERE NrKlienta NOT IN (SELECT NrKlienta FROM Zamowienia WHERE Data >= 2000-01-01 ); SELECT IdFaktury, TypElementu, Odbiorca FROM RejestrSprzedazy WHERE (IdFaktury, TypElementu) NOT IN (SELECT IdFaktury, TypElementu FROM Zaplacone);

Bazy danych: Podstawy języka SQL 9 Różnica z wykorzystaniem EXCEPT SELECT kolumna1, kolumna2,...,kolumnak FROM TabelaA EXCEPT SELECT kolumna1, kolumna2,...,kolumnak FROM TabelaB; FROM TabelaA EXCEPT CORRESPONDING BY (kol1, kol2,...,kolk) FROM TabelaB; Przykład: SELECT Autor, Tytul, RokWydania FROM Ksiazki EXCEPT SELECT Autor, Tytul, RokWydania FROM KsiazkiDoKasacji; Różnicę można też zrealizować za pomocą złączenia LEFT OUTER JOIN. SELECT kolumna1, kolumna2,...,kolumnak FROM (TabelaA LEFT OUTER JOIN TabelaB) ON TabelaA.Atrybut = TabelaB.Atrybut WHERE TabelaB.Atrybut IS NULL; Przykład: SELECT DISTINCT Ksiazki.* FROM (Ksiazki LEFT OUTER JOIN KsiazkiDoKasacji) ON TabelaA.Atrybut = TabelaB.Atrybut WHERE TabelaB.Atrybut IS NULL;

Bazy danych: Podstawy języka SQL 10 Iloczyn zwykły tabel/relacji SELECT kolumna1, kolumna2,...,kolumnak FROM TabelaA INTERSECT SELECT kolumna1, kolumna2,...,kolumnak FROM TabelaB; Przykłady: SELECT Autor, Tytul, RokWydania FROM ZamowieniaA INTERSECT SELECT Autor, Tytul, RokWydania FROM ZamowieniaB; FROM ZamowieniaA WHERE RokWydania > 1995 INTERSECT CORRESPONDING BY (Autor, Tytul, RokWydania) FROM ZamowieniaB WHERE Cena < 1000; Inne możliwości realizacji iloczynu: R S = R \ (R \ S) oraz JOIN. SELECT Autor, Tytul, RokWydania FROM ZamowieniaA JOIN ZamowieniaB ON (Autor, Tytul, RokWydani WHERE ZamowieniaA.RokWydania > 1995 AND ZamowieniaB.Cena < 100;

Bazy danych: Podstawy języka SQL 11 Usuwanie i modyfikacja rekordów Kasowanie rekordów DELETE FROM Tabela WHERE Warunek; DELETE FROM Ksiazki WHERE RokWydania < 1937 AND Cena < 123; DELETE FROM Ksiazki WHERE Sygnatura IN (SELECT Sygnatura FROM KsiazkiZagubione WHERE StatusStraty = pokryta ); Modyfikacja rekordów UPDATE Tabela SET kolumna1 = nowa_wartosc, kolumna2 = nowa_wartosc,..., kolumnak = nowa_wartosc WHERE Warunek; UPDATE Czytelnicy SET Ulica = Krolewska, Limit = 15 WHERE IdCzytelnika = PU1010 ; UPDATE Ksiazki SET Cena = Cena * 1.2, WHERE RokWydania > 1998 ;

Bazy danych: Podstawy języka SQL 12 Inne operacje Projekcja na atrybuty kolumna1, kolumna2,...,kolumnak: SELECT kolumna1, kolumna2,...,kolumnak FROM Tabela; Selekcja dla warunku KryteriumSelekcji: FROM Tabela WHERE KryteriumSelekcji; Iloczyn kartezjański: SELECT TabelaA.*, TabelaB.* FROM TabelaA, TabelaB; SELECT TabelaA.*, TabelaB.* FROM TabelaA CROSS JOIN TabelaB; Różnica lewa (prawa): SELECT TabelaA.* (TabelaB.*) FROM TabelaA UNION JOIN TabelaB WHERE TabelaB.AtrybutB IS NULL; (WHERE TabelaA.AtrybutA IS NULL;) Dopełnienie dla wybranego atrybutu z innej tabeli: SELECT DISTINCT WybranyAtrybut FROM TabelaOdniesienia EXCEPT SELECT WybranyAtrybut FROM TabelaDana;

Bazy danych: Podstawy języka SQL 13 Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania projektami w firmach informatycznych realizowany w ramach Programu Operacyjnego Kapitał Ludzki