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

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

10. Wybierz nazwy produktów oraz inf. o stanie magazynu dla produktów dostarczanych przez firmę.tokyo Traders.

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

Analiza funkcjonalna projektu biblioteki

Plan. ! Podzapytania (subqueries) ! Podzapytania do tabel. ! Podzapytanie jako wyrażenie. ! Podzapytania skorelowane. ! operatory IN, NOT IN

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

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

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

Autor: Joanna Karwowska

Wykład 6. SQL praca z tabelami 3

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

SIECI KOMPUTEROWE I BAZY DANYCH

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

Grupowanie danych klauzula GROUP BY

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

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

SIECI KOMPUTEROWE I BAZY DANYCH

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

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

Relacyjne bazy danych. Podstawy SQL

Laboratorium Bazy danych SQL 2

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

Podstawy języka SQL -

Złaczenia tablic: FROM, WHERE, JOIN

Podstawy języka SQL cz. 2

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Grupowanie i funkcje agregujące

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Podstawowe funkcje dodatku linq w C#

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

Transakcje inf. podstawowe

Microsoft SQL Server Podstawy T-SQL

SIECI KOMPUTEROWE I BAZY DANYCH

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

Grupowanie i funkcje agregacji

Przestrzenne bazy danych Podstawy języka SQL

Baza danych Northwind. Baza danych firmy sprzedającej artykuły spożywcze Informacje o towarach, dostawcach, klientach, zamówieniach klientów itp.

Relacyjne bazy danych. Podstawy SQL

Podyplomowe Studia Systemy informatyczne w logistyce

Paweł Rajba

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

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

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

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

Laboratorium nr 10. Temat: Połączenia relacji

SQL (ang. Structured Query Language)

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

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

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

Bazy danych SQL Server 2005

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

Technologie baz danych

Przykładowa baza danych BIBLIOTEKA

Podstawowe zapytania SELECT (na jednej tabeli)

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

Łączenie wyników zapytań w SQL

Marek Rakowski Podstawy zdania SELECT Strona 1 z 12

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

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

Uniwersytet im. Adama Mickiewicza w Poznaniu Wydział Matematyki i Informatyki. Projekt bazy danych <Moja baza>

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

3. Podzapytania, łączenie tabel i zapytań

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

Systemy GIS Tworzenie zapytań w bazach danych

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

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

Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe

LAB 3 (część 1 Projektu)

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

Zadania z SQLa (MS SQL Server)

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

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

Pobieranie danych z wielu tabel i łączenie wyników zapytań

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

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

Bazy danych. dr inż. Arkadiusz Mirakowski

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

Podstawy języka SQL - dokończenie TRANSAKCJE 1

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus

Wykład 8. SQL praca z tabelami 5

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

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

SQL praca z tabelami 4. Wykład 7

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

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

Systemy Baz Danych. Lista 1

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

Rozpatrzymy bardzo uproszczoną bazę danych o schemacie

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

Lab.8: Podstawy języka SQL.

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

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

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

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

Wprowadzenie do języka SQL

Wykład XII. optymalizacja w relacyjnych bazach danych

Language INtegrated Query (LINQ)

Transkrypt:

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

Przykładowa baza Joindb Joindb Database Diagram Sales PK Produce prod_id prod_name FK1 FK2 buyer_id prod_id qty PK Buyers buyer_id buyer_name

Użycie aliasów dla nazw tabel! Przykład 1 (bez aliasu nazwy tabeli) USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers, sales WHERE buyers.buyer_id = sales.buyer_id GO GO! Przykład 2 (z aliasem nazwy tabeli) USE joindb SELECT buyer_name, s.buyer_id, qty FROM buyers AS AS b, b, sales AS AS s WHERE b.buyer_id = s.buyer_id GO GO

Użycie aliasów dla nazw tabel! Przykład 1 (bez aliasu nazwy tabeli) USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers INNER JOIN sales ON ON buyers.buyer_id = sales.buyer_id GO GO! Przykład 2 (z aliasem nazwy tabeli) USE joindb SELECT buyer_name, s.buyer_id, qty FROM buyers AS AS b INNER JOIN sales AS AS s ON ON b.buyer_id = s.buyer_id GO GO

Łączenie danych z wielu tabel! Wprowadzenie! Złączenia (JOIN)! Złączenia wewnętrzne (INNER JOIN)! Złączenia zewnętrzne (OUTER JOIN)! CROSS JOIN! Łączenie więcej niż dwóch tabel! Łączenie tabeli samej ze sobą

Łączenie danych z wielu tabel! Złączenia " klauzula FROM określa, które tabele są łączone " klauzula WHERE specyfikuje warunki połączenia! Zapytanie do dwóch lub więcej tabel w celu wygenerowania pojedynczego zbioru wynikowego " Jako warunki połączenia wykorzystywane są (przeważnie) klucze główne i obce

Łączenie danych z wielu tabel! Iloczyn kartezjański USE joindb SELECT b.buyer_name AS AS [b.buyer_name], b.buyer_id AS AS [b.buyer_id], s.buyer_id AS AS [s.buyer_id], qty AS AS [s.qty] FROM buyers AS AS b, b, sales AS AS s! Warunek USE joindb SELECT b.buyer_name AS AS [b.buyer_name], b.buyer_id AS AS [b.buyer_id], s.buyer_id AS AS [s.buyer_id], qty AS AS [s.qty] FROM buyers AS AS b, b, sales AS AS s WHERE b.buyer_name = Adam Barr

Złączenie! Warunki złączenia USE joindb SELECT b.buyer_name AS AS [b.buyer_name], b.buyer_id AS AS [b.buyer_id], s.buyer_id AS AS [s.buyer_id], qty AS AS [s.qty] FROM buyers AS AS b, b, sales AS AS s WHERE s.buyer_id = b.buyer_id AND b.buyer_name = Adam Barr

Złączenie cd.! Warunki złączenia USE joindb SELECT b.buyer_name AS AS [b.buyer_name], b.buyer_id AS AS [b.buyer_id], s.buyer_id AS AS [s.buyer_id], qty AS AS [s.qty] FROM buyers AS AS b, b, sales AS AS s WHERE s.buyer_id = b.buyer_id

Złączenie cd. USE joindb SELECT buyer_name, b.buyer_id, qty FROM buyers AS AS b, b, sales AS AS s WHERE s.buyer_id = b.buyer_id

Złączenia (JOIN) - wprowadzenie! Operator JOIN " Słowo kluczowe JOIN wskazuje, że tabele są łączone i określa w jaki sposób " Słowo kluczowe ON specyfikuje warunki połączenia! Zapytanie do dwóch lub więcej tabel w celu wygenerowania pojedynczego zbioru wynikowego " Jako warunki połączenia wykorzystywane są przeważnie klucze główne i obce

JOIN podstawowa składnia SELECT column_name [,column_name...] FROM <joined_table>... <joined_table> ::= <table_source><join_type><table_source>on<search_condition> <table_source>cross JOIN<table_source> <joined_table> <join_type>::= [INNER {{LEFT RIGHT FULL}[OUTER]}] [<join_hint>] JOIN

Złączenie wewnętrzne INNER JOIN USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id

Przykłady! Napisz polecenie zwracające nazwy produktów i firmy je dostarczające (baza northwind) " tak aby produkty bez dostarczycieli i dostarczyciele bez produktów nie pojawiali się w wyniku. USE northwind SELECT productname, companyname FROM products INNER JOIN suppliers ON products.supplierid = suppliers.supplierid GO

Przykłady! Napisz polecenie zwracające jako wynik nazwy klientów, którzy złożyli zamówienia po 01 marca 1998 (baza northwind) USE northwind SELECT DISTINCT companyname, orderdate FROM orders INNER JOIN customers ON orders.customerid = customers.customerid WHERE orderdate > 3/1/98 GO

Przykłady! Napisz polecenie zwracające numery wszystkich książek aktualnie przetrzymywanych oraz numery czytelników z tablic copy i loan i bazie library. USE library SELECT copy.title_no, loan.member_no FROM copy INNER JOIN loan ON copy.isbn = loan.isbn AND copy.copy_no = loan.copy_no WHERE copy.on_loan = Y GO

Złączenie zewnętrzne OUTER JOIN USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers LEFT OUTER JOIN sales ON buyers.buyer_id = sales.buyer_id

Przykłady! Napisz polecenie zwracające wszystkich klientów z datami zamówień (baza northwind). USE northwind SELECT companyname, customers.customerid, orderdate FROM customers LEFT OUTER JOIN orders ON customers.customerid = orders.customerid GO

Ćwiczenia! Napisz polecenie, które wyświetla listę dzieci będących członkami biblioteki (baza library). Interesuje nas imię, nazwisko i data urodzenia dziecka.! Napisz polecenie, które podaje tytuły aktualnie wypożyczonych książek! Podaj informacje o karach zapłaconych za przetrzymywanie książki o tytule Tao Teh King. Interesuje nas data oddania książki, ile dni była przetrzymywana i jaką zapłacono karę! Napisz polecenie które podaje listę książek (mumery ISBN) zarezerwowanych przez osobę o nazwisku: Stephen A. Graff

Ćwiczenia! Napisz polecenie, które wyświetla listę dzieci będących członkami biblioteki (baza library). Interesuje nas imię, nazwisko i data urodzenia dziecka. USE library SELECT dm.lastname, dm.firstname, j.birth_date FROM member as dm JOIN juvenile j ON dm.member_no=j.member_no

Ćwiczenie! Wybierz nazwy i ceny produktów (baza northwind) o cenie jednostkowej pomiędzy 20.00 a 30.00, dla każdego produktu podaj dane adresowe dostawcy! Wybierz nazwy produktów oraz inf. o stanie magazynu dla produktów dostarczanych przez firmę Tokyo Traders! Czy są jacyś klienci którzy nie złożyli żadnego zamówienia w 1997 roku, jeśli tak to pokaż ich dane adresowe! Wybierz nazwy i numery telefonów dostawców, dostarczających produkty, których aktualnie nie ma w magazynie

CROSS JOIN iloczyn karteziański USE joindb SELECT buyer_name, qty FROM buyers CROSS JOIN sales GO

Przykłady! Napisz polecenie, wyświetlające CROSS JOIN między shippers i suppliers. użyteczne dla listowania wszystkich możliwych sposobów w jaki dostawcy mogą dostarczać swoje produkty USE northwind SELECT suppliers.companyname, shippers.companyname FROM suppliers CROSS JOIN shippers GO

Łączenie więcej niż dwóch tabel SELECT buyer_name, prod_name, qty FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id INNER JOIN produce ON sales.prod_id = produce.prod_id

Przykład! Napisz polecenie zwracające listę produktów zamawianych w dniu 1996-07-08. USE northwind SELECT orderdate, productname FROM orders AS O INNER JOIN [order details] AS OD ON O.orderid = OD.orderid INNER JOIN products AS P ON OD.productid = P.productid WHERE orderdate = 7/8/96 GO

Ćwiczenia! Wybierz nazwy i ceny produktów (baza northwind) o cenie jednostkowej pomiędzy 20.00 a 30.00, dla każdego produktu podaj dane adresowe dostawcy, interesują nas tylko produkty z kategorii Meat/Poultry! Wybierz nazwy i ceny produktów z kategorii Confections dla każdego produktu podaj nazwę dostawcy.! Wybierz nazwy i numery telefonów klientów, którym w 1997 roku przesyłki dostarczała firma United Package! Wybierz nazwy i numery telefonów klientów, którzy kupowali produkty z kategorii Confections

Ćwiczenia! Napisz polecenie, które wyświetla listę dzieci będących członkami biblioteki (baza library). Interesuje nas imię, nazwisko, data urodzenia dziecka i adres zamieszkania dziecka.! Napisz polecenie, które wyświetla listę dzieci będących członkami biblioteki (baza library). Interesuje nas imię, nazwisko, data urodzenia dziecka, adres zamieszkania dziecka oraz imię i nazwisko rodzica.

Łączenie tabeli samej ze sobą self join USE joindb SELECT a.buyer_id AS buyer1, a.prod_id,b.buyer_id AS buyer2 FROM sales AS a JOIN sales AS b ON a.prod_id = b.prod_id WHERE a.buyer_id > b.buyer_id GO

Przykład! Napisz polecenie, które wyświetla listę wszystkich kupujących te same produkty. USE joindb SELECT a.buyer_id AS buyer1, a.prod_id,b.buyer_id AS buyer2 FROM sales AS a INNER JOIN sales AS b ON a.prod_id = b.prod_id

Przykłady! Zmodyfikuj poprzedni przykład, tak aby zlikwidować duplikaty USE joindb SELECT a.buyer_id AS buyer1, a.prod_id,b.buyer_id AS buyer2 FROM sales AS a JOIN sales AS b ON a.prod_id = b.prod_id WHERE a.buyer_id <> b.buyer_id USE joindb SELECT a.buyer_id AS buyer1, a.prod_id,b.buyer_id AS buyer2 FROM sales AS a JOIN sales AS b ON a.prod_id = b.prod_id WHERE a.buyer_id < b.buyer_id

Przykłady! Napisz polecenie, które pokazuje pary pracowników zajmujących to samo stanowisko. USE northwind SELECT a.employeeid, LEFT(a.lastname,10) AS name,left(a.title,10) AS title,b.employeeid, LEFT(b.lastname,10) AS name,left(b.title,10) AS title FROM employees AS a INNER JOIN employees AS b ON a.title = b.title WHERE a.employeeid < b.employeeid GO

Ćwiczenia! Napisz polecenie, które wyświetla pracowników oraz ich podwładnych (baza northwind)! Napisz polecenie, które wyświetla pracowników, którzy nie mają podwładnych (baza northwind)! Napisz polecenie, które wyświetla adresy członków biblioteki, którzy mają dzieci urodzone przed 1 stycznia 1996! Napisz polecenie, które wyświetla adresy członków biblioteki, którzy mają dzieci urodzone przed 1 stycznia 1996. Interesują nas tylko adresy takich członków biblioteki, którzy aktualnie nie przetrzymują książek.

Łączenie kilku zbiorów wynikowych! Użyj operatora UNION do tworzenia pojedynczego zbioru wynikowego z wielu zapytań! Każde zapytanie musi mieć: " Zgodne typy danych " Taką samą liczbę kolumn " Taki sam porządek kolumn w select-list USE northwind SELECT (firstname + ' ' + lastname) AS name,city, postalcode FROM employees UNION SELECT companyname, city, postalcode FROM customers GO

Ćwiczenie! Napisz polecenie które zwraca imię i nazwisko (jako pojedynczą kolumnę name), oraz informacje o adresie: ulica, miasto, stan kod (jako pojedynczą kolumnę address) dla wszystkich dorosłych członków biblioteki! Napisz polecenie, które zwraca: isbn, copy_no, on_loan, title, translation, cover, dla książek o isbn 1, 500 i 1000. Wynik posortuj wg ISBN! Napisz polecenie które zwraca o użytkownikach biblioteki o nr 250, 342, i 1675 (dla każdego użytkownika: nr, imię i nazwisko członka biblioteki), oraz informację o zarezerwowanych książkach (isbn, data)! Podaj listę członków biblioteki mieszkających w Arizonie (AZ) mają więcej niż dwoje dzieci zapisanych do biblioteki

Ćwiczenie! Podaj listę członków biblioteki mieszkających w Arizonie (AZ) którzy mają więcej niż dwoje dzieci zapisanych do biblioteki oraz takich którzy mieszkają w Kaliforni i mają więcej niż troje dzieci zapisanych do biblioteki

Ćwiczenie! Dla każdej kategorii produktu, podaj łączną liczbę zamówionych jednostek! Dla każdego zamówienia podaj łączną liczbę zamówionych jednostek! Zmodyfikuj poprzedni przykład, aby pokazać tylko takie zamówienia, dla których łączna liczba jednostek jest większa niż 250