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

Podobne dokumenty
Autor: Joanna Karwowska

3. Podzapytania, łączenie tabel i zapytań

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

Wykład 6. SQL praca z tabelami 3

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

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

SQL (ang. Structured Query Language)

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

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

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

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

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

PODZAPYTANIE (SUBSELECT)

Grupowanie i funkcje agregacji

Plan. Łączenie danych z wielu tabel złączenia JOIN suma zbiorów - UNION Użycie aliasów dla nazw tabel

Systemy GIS Tworzenie zapytań w bazach danych

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

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

Oracle11g: Wprowadzenie do SQL

Łączenie wyników zapytań w SQL

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

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Plan. ! Łączenie danych z wielu tabel. ! Użycie aliasów dla nazw tabel. " złączenia JOIN. " suma zbiorów - UNION

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

Relacyjne bazy danych. Podstawy SQL

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

Wykład 5. SQL praca z tabelami 2

Bazy danych. dr inż. Arkadiusz Mirakowski

SIECI KOMPUTEROWE I BAZY DANYCH

SIECI KOMPUTEROWE I BAZY DANYCH

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

Podstawy języka SQL cz. 2

Podstawowe funkcje dodatku linq w C#

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

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

Microsoft SQL Server Podstawy T-SQL

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

Paweł Rajba

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

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

Wprowadzenie do baz danych

Relacyjne bazy danych. Podstawy SQL

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

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

Wykład XII. optymalizacja w relacyjnych bazach danych

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

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

Wykład 8. SQL praca z tabelami 5

Technologie baz danych

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

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

Zadania z SQLa (MS SQL Server)

Autor: Joanna Karwowska

Przestrzenne bazy danych Podstawy języka SQL

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Struktura drzewa w MySQL. Michał Tyszczenko

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Imię i Nazwisko Data Ocena. Laboratorium 7

RBD Relacyjne Bazy Danych

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

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

Wprowadzenie do SQL TEMAT 4 - Zadania dodatkowe

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

Wstęp do relacyjnych baz danych. Jan Bartoszek

Bazy danych SQL Server 2005

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

SQL. Æwiczenia praktyczne

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Grupowanie i funkcje agregujące

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

Model relacyjny. Wykład II

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

SQL Structured Query Language

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

Podyplomowe Studia Systemy informatyczne w logistyce

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Złaczenia tablic: FROM, WHERE, JOIN

1 Wstęp do modelu relacyjnego

Bazy danych. Polecenia SQL

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

Technologie baz danych

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

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

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Leszek Stasiak Zastosowanie technologii LINQ w

SQL firmy Oracle cz.2. Praca z wieloma tabelami.

Laboratorium Bazy danych SQL 2

Język SQL, zajęcia nr 1

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

E.14 Bazy Danych cz. 14 SQL Podzapytania

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

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

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

Transkrypt:

Połączenia krzyżowe Złączenie typu CROSS JOIN Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco: SELECT kolumna1, kolumna2,..., kolumnan FROM tabela1 CROSS JOIN tabela2 gdzie N oznacza ostatnią kolumnę tabeli. Wykonuje ono iloczyn kartezjański na podstawie łączonych tabel, inaczej mówiąc łączy każdy wiersz tabeli tabela1 z każdym wierszem tabeli tabela2. Jest ona odpowiednikiem znanej instrukcji: SELECT kolumna1, kolumna2,...,kolumnan FROM tabela1, tabela2 przykład SELECT d.id_dzialu, p.p_id FROM dzialy d CROSS JOIN projekty p; SELECT d.id_dzialu, p.p_id FROM dzialy d, projekty p; --IOCZYN KARTEZJAŃSKI, CROSS JOIN 616 WYNIKÓW SELECT C.CategoryName, p.productname FROM Categories C CROSS JOIN Products p; SELECT C.CategoryName, p.productname FROM Categories C,Products p; -- ACZENIE TABEL 77 WYNIKÓW SELECT Categories.CategoryName, Products.ProductName FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID Połączenia wielokrotne W rzeczywistych środowiskach bazodanowych, kwerendy dotyczą zazwyczaj łączenia wielu tabel. str. 1

Dla przykładu rozważmy scenariusz zapytania SQL w bazie testowej Northwind. Interesują nas informacje o Klientach z określonego miasta Madrytu. Chcemy znać detale ich zamówień, złożonych we wrześniu 1996 nazwy i ilości produktów, które kupili. Przykładowa kwerenda: SELECT c.companyname, o.orderid, od.quantity, p.productname FROM dbo.customers c LEFT OUTER JOIN dbo.orders o on c.customerid = o.customerid INNER JOIN dbo.[order Details] od on od.orderid = o.orderid INNER JOIN dbo.products p on od.productid = p.productid WHERE c.city = 'Madrid' AND o.orderdate BETWEEN '1996-09-01' AND '1996-09-3 0' Zasady połączeń, obowiązujące w zapytaniach do wielu tabel SQL, są identyczne jak te opisane dla przykładu łączenia dwóch tabel. Zaczynamy zawsze od łączenia dwóch pierwszych, stojących zaraz po FROM. Możemy także stosować nawiasy (o tym w następnym przykładzie). Mają one priorytet czyli łączona jest tabela z wynikiem operacji w nawiasach. Przy łączeniu trzech i więcej tabel, każda kolejna jest dołączana do wyniku poprzedniego kroku. Algorytm działa iteracyjnie od lewej do prawej, aż do przetworzenia ostatniego zbioru. Więcej info na http://www.sqlpedia.pl/logiczne-przetwarzanie-zapytan-sql-laczenie-wielu-tabel/ str. 2

Złączenie tabeli z nią samą Złączenie typu Self JOIN O złączeniu Self JOIN mówimy, gdy po lewej i prawej stronie złączenia występuje ta sama tabela. W tym typie złączeń za niezbędne uważa się użycie aliasów. SELECT d1.nazwa, d2.nazwa FROM dzialy d1 JOIN dzialy d2 USING (adres) WHERE d1.nazwa!= d2.nazwa; SELECT d1.nazwa, d2.nazwa FROM dzialy d1, dzialy d2 WHERE d1.adres = d2.adres AND d1.nazwa!= d2.nazwa; Ostatnia linijka w kodzie zapobiega wyświetlaniu wierszy, w których w obu kolumnach będzie to samo (sensem kodu jest wyświetlanie par tych oddziałów, co mają ten sam adres) SELF JOIN połączenie tabeli z samą sobą Język SQL jest elastyczny i jeśli coś jest zbiorem, może być użyte we FROM wiele razy. Połączenia typu SELF JOIN to zawsze jedno z już poznanych INNER, CROSS lub OUTER JOIN, w T-SQL nie stosuje się zapisu SELF JOIN. select * from Employees SELECT e1.lastname+ ' ' + e1.firstname as Pracownik, e1.title, e2.lastname + ' ' + e2.firstname as Manager, e2.title as ManStanowisko FROM Employees e1 LEFT OUTER JOIN Employees e2 on e1.employeeid=e2.reportsto Ten przykład bazuje na istniejącej relacji, kluczu obcym tabeli Employees do samej siebie, jednak wcale nie musi ta referencja być jawnie i permanentnie określona. Wszystkie do tej pory prezentowane przykłady, łączyły tabele w naturalny sposób ich powiązań. Po kolumnach będącymi jednocześnie kluczami obcymi/podstawowymi tabel. Ogólną zasadą łączenia jest możliwość jej realizacji po dowolnych kolumnach. Musi być spełniony tylko jeden warunek kompatybilność typów danych łączonych atrybutów. To jak zapiszemy warunek i czy będzie miał sens, zależy tylko od nas język SQL nie ogranicza tu naszej wyobraźni. Dodatkowo, na wartościach atrybutów po których łączymy, możemy wykonywać dowolne operacje. Przetwarzać je za pomocą funkcji skalarnych, wykonywać działania arytmetyczne, łączenia stringów etc str. 3

Operatory zapytań wewnętrznych EXIST,ANY, SOME, ALL 1 Rezultat zwracany przez podzapytanie (zapytanie wewnętrzne) można porównywać za pomocą jednego specjalnych operatorów dostępnych w SQL: EXISTS, ANY, SOME lub ALL. Możemy za ich pomocą sprawdzić między innymi czy podzapytanie zwróciło jakieś dane lub wartość wiersza. EXISTS zwraca true jeśli podzapytanie zwróciło jakiekolwiek dane, jeśli nie zwraca false, ANY sprawdza wartość dowolnego wiersza zwróconego przez podzapytanie, SOME sprawdza wartość dowolnego wiersza zwróconego przez podzapytanie (ten operator działa tak samo jak ANY), ALL sprawdza wartości wszystkich wierszy zwróconych przez podzapytanie. PracownicyI D ( ) Do ćwiczeń będziemy wykorzystywać bazę danych zbudowaną z dwóch tabel: Tabela: pracownicy Miast o ( ) Imie Nazwisko Data_urodzeni a Stanowisk o Data_zatrudnieni a 1 1 Jan Kowalski 1984-12-23 Programista 1999-12-09 2 1 Adam Adamiak 1991-08-08 Menadżer 2011-31-01 3 3 Jakub Wawrzynia k 1990-16-03 Programista 2010-01-04 4 2 Micha ł Gdzie kluczem ( ) jest kolumna PracownicyID. Tabela: miastozamieszkania MiastoZamieszkaniaID ( ) Miasto 1 Kraków 2 Warszawa 3 Wrocław 4 Londyn Jakubiak 1981-05-02 Projektant 1998-09-22 Gdzie kluczem ( ) jest kolumna MiastoZamieszkaniaID oraz ( ). Obie tabele zostały połączone za pomocą relacji PracownicyID -> MiastoZamieszkaniaID ( -> ). Oznacza to, że do każdego pracownika zostało przypisane jego miasto zamieszkania. Ćwiczenia Exists Pobierzmy z bazy danych informacje o miastach, w których nie mieszkają żadni pracownicy: SELECT Miasto FROM miastozamieszkania AS mz WHERE 1 http://strefakodera.pl/bazy-danych/sql/podzapytania-operatory-exists-any-some-all-w-sql-cz-v/2 str. 4

NOT EXISTS (SELECT * FROM pracownicy WHERE mz.miastozamieszkaniaid = miasto); Rezultat: Miasto Londyn Oczywiście w tym ćwiczeniu musieliśmy użyć przeczenia (NOT), NOT EXISTS jest prawdziwe (zwraca true) jeśli nie zostanie zwrócony przez podzapytanie żaden rekord, a właśnie o to nam chodziło w tej kwerendzie. Informacje o pracownikach nie mieszkających w Krakowie: SELECT imie, nazwisko FROM pracownicy WHERE EXISTS (SELECT * FROM miastozamieszkania WHERE pracownicy.miasto = miastozamieszkaniaid AND miasto <> 'Kraków') Rezultat: Imie Nazwisko Jakub Wawrzyniak Michał Jakubiak ANY, SOME UWAGA: Omawiany materiał działa na bazach danych firmy Microsoft. Operator ANY/SOME jest prawdziwy (zwraca true) jeśli którekolwiek ze zwróconych przez podzapytanie danych spełni poprzedzający go warunek logiczny. Jak pisałem na wstępie operator ten sprawdza wszystkie rekordy. SELECT imie, nazwisko FROM pracownicy WHERE 'Madryt' <> ANY (SELECT miasto FROM miastozamieszkania); ezultat: Imię Nazwisko Jan Kowalski Adam Adamiak Jakub Wawrzyniak Michał Jakubiak str. 5

Oczywiście ANY możemy zastąpić operatorem SOME. ALL UWAGA: Omawiany materiał działa na bazach danych firmy Microsoft. Operator ALL działa w zasadzie tak samo jak ANY/SOME z tym wyjątkiem, że sprawdza wszystkie dane. Wszystkie zwrócone przez podzapytanie rekordy muszą spełniać podany wcześniej warunek logiczny. SELECT imie, nazwisko FROM pracownicy WHERE 'Londyn' <> ALL (SELECT miasto FROM miastozamieszkania); Rezultat: Nie otrzymamy żadnego wyniku. 0 rekordów. W tabeli miastozamieszkania znajduje się miasto Londyn dlatego warunek logiczny nie został spełniony. Usuwanie danych z bazy danych w SQL Kasowanie informacji zdezaktualizowanych w bazie danych wykonujemy za pomocą zapytania DELETE. Instrukcja ta służy do kasowania wybranych wierszy z danej tabeli, jeżeli potrzebujemy na przykład wyczyścić całą tabelę to możemy zastosować instrukcję TRUNCATE TABLE. Kasowanie wybranych rekordów Ogólna składnia zapytania DELETE: DELETE FROM nazwatabeli WHERE waruneklogiczny; Przykład: DELETE FROM tab1 WHERE id = '1'; Usuwanie całej zawartości Kasowanie rekordu po rekordzie przy milionie pozycji może być nieco męczące. Twórcy SQL pomyśleli również i o tym aspekcie dodając instrukcję TRUNCATE TABLE. Ogólna składnia: TRUNCATE TABLE nazwatabeli; str. 6