Wykład 6. SQL praca z tabelami 3

Podobne dokumenty
Autor: Joanna Karwowska

Wykład 5. SQL praca z tabelami 2

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Wykład 8. SQL praca z tabelami 5

SQL praca z tabelami 4. Wykład 7

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

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL

Wykład 05 Bazy danych

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

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

Język SQL, zajęcia nr 1

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

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

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

Laboratorium Bazy danych SQL 2

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

Wykład 4. SQL praca z tabelami 1

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

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

Przestrzenne bazy danych Podstawy języka SQL

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy Danych i Usługi Sieciowe

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

Struktura drzewa w MySQL. Michał Tyszczenko

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

LAB 3 (część 1 Projektu)

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

Język SQL podstawy zapytań

Bazy danych i usługi sieciowe

Systemy GIS Tworzenie zapytań w bazach danych

Paweł Rajba

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

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

SQL (ang. Structured Query Language)

Grupowanie i funkcje agregujące

Bazy danych. Polecenia SQL

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

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

3. Podzapytania, łączenie tabel i zapytań

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

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

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

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

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

Bazy danych 7. SQL podstawy

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

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

Zadania z SQLa (MS SQL Server)

Autor: Joanna Karwowska

Wprowadzenie do języka SQL

Bazy danych 10. SQL Widoki

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

Microsoft SQL Server Podstawy T-SQL

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

Model relacyjny. Wykład II

Grupowanie i funkcje agregacji

Bazy danych. Dr inż. Paweł Kasprowski

Podstawy języka SQL cz. 2

ACESS- zadania z wykorzystaniem poleceń SQL

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

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Kurs. Podstawy MySQL

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

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

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

Bazy danych 5. Samozłaczenie SQL podstawy

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

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

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

SQL. Æwiczenia praktyczne

Bazy danych SQL Server 2005

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

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

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

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

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

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

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

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

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Widok Connections po utworzeniu połączenia. Obszar roboczy

Podyplomowe Studia Systemy informatyczne w logistyce

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Przykładowa baza danych BIBLIOTEKA

Podstawowe zapytania SELECT (na jednej tabeli)

Współczesne systemy baz danych

Krótki przegląd zapytań

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

Bazy danych - Materiały do laboratoriów VIII

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

Bazy danych wykład trzeci. Konrad Zdanowski

Transkrypt:

Wykład 6 SQL praca z tabelami 3

Łączenie wyników zapytań Język SQL zawiera mechanizmy pozwalające na łączenie wyników kilku pytań. Pozwalają na to instrukcje UNION, INTERSECT, EXCEPT o postaci: zapytanie1 UNION INTERSECT EXCEPT zapytanie2 [ UNION INTERSECT EXCEPT zapytanien] a zatem może służyć do łączenia dwóch lub większej liczby zapytań. W MySQL występuje tylko instrukcja UNION. Rozważmy bazy zawierające dwie tabele dla pracowników dwóch uczelni UczelniaA i UczelniaB o strukturze: CREATE TABLE UczelniaA UczelniaB ( id INTEGER PRIMARY KEY, imie VARCHAR(20) NOT NULL, nazwisko VARCHAR(30) NOT NULL, pesel CHAR(11) ); wypełnione danymi:

Łączenie wyników zapytań INSERT INTO UczelniaA VALUES (1, Jan, Kowalski, 01234567890 ); INSERT INTO UczelniaA VALUES (2, Adam, Nowak, 12345678901 ); INSERT INTO UczelniaA VALUES (3, Anna, Wilk, 23456789012 ); INSERT INTO UczelniaB VALUES (1, Janina, Wolska, 34567890123 ); INSERT INTO UczelniaB VALUES (2, Beata, Nowak, 45678901234 ); INSERT INTO UczelniaB VALUES (3, Jan, Kowalski, 01234567890 ); Instrukcja UNION: zapytanie1 UNION [ALL] zapytanie2 [ UNION zapytanien] Łączy wyniki zapytań zapytanie1 i zapytanie2 (ewentualnie następnych). Oba zapytania muszą zwracać taką samą liczbę kolumn o takich samych typach. Z klauzulą ALL w wynikach uwzględniane są wszystkie wiersze z obu zapytań. Bez klauzuli ALL w wynikach zostają pominięte duplikaty danych (tak jak przy użyciu słowa DISTINCT).

Łączenie wyników zapytań Przykład: SELECT imię, nazwisko, pesel FROM UczelniaA UNION SELECT imię, nazwisko, pesel FROM UczelniaB; wyświetli trzy kolumny, a w wynikach wiersz Jan Kowalski pojawi się jedynie raz (z klauzula ALL Jan Kowalski pojawi się dwukrotnie). Instrukcje INTERSECT, EXCEPT wyglądają podobnie i nie występują w większości wersji MySQL

Pobieranie danych z wielu tabel Instrukcja SELECT pozwala również na pobieranie danych z wielu tabel: w postaci FROM tabela1, tabela2,, tabelan [WHERE warunki] [ORDER BY kolumna1, kolumna2,, kolumnan [ASC DESC] ] przykładowo z tabel: CREATE TABLE pracownicy CREATE TABLE stanowiska ( ( id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY, imie VARCHAR(20) NOT NULL, nazwa VARCHAR(20) NOT NULL nazwisko VARCHAR(30) NOT NULL, ); placa DECIMAL(7,2) NOT NULL, stanowisko_id INTEGER, pesel CHAR(11) );

Pobieranie danych z wielu tabel Instrukcja SELECT dla tych dwóch tabel w postaci: SELECT imie, nazwisko, nazwa, placa FROM pracownicy, stanowiska; jest bardzo niepraktyczna, bo w wynikach zostaje złączony każdy wiersz tabeli pracownicy z każdym wierszem w tabeli stanowiska czyli uzyskamy iloczyn kartezjański obu tabel. Należałoby dodać warunek wiążący pracowników z zajmowanymi stanowiskami (czyli id z tabeli stanowiska ze stanowsko_id w tabeli pracownicy) : SELECT imie, nazwisko, nazwa, placa FROM pracownicy, stanowiska WHERE pracownicy.stanowisko_id = stanowiska.id; który wyświetli wszystkich pracowników wraz z zajmowanymi przez nich stanowiskami. Dodanie na końcu instrukcji ORDER BY pozwala na sortowanie wyników (np. ORDER BY placa DESC )

Pobieranie danych z wielu tabel - Złączenia Jeśli pobieramy dane z więcej niż jednej tabeli to w rzeczywistosci wykonujemy tak zwane złączenie. W języku SQL istnieją dedykowane instrukcje pozwalające na formalne wykonanie złączenia tabel. Najczęściej stosowane to : - CROSS JOIN - INNER JOIN - LEFT OUTER JOIN - RIGHT OUTER JOIN - FULL OUTER JOIN CROSS JOIN (złącze krzyżowe) postaci: FROM tabela1 CROSS JOIN tabela2 wykonuje iloczyn kartezjański łączonych tabel, czyli łączy każdy wiersz tabela1 z każdym wierszem tabeli tabela2 i jest odpowiednikiem instrukcji: FROM tabela1, tabela2

Złączenia INNER JOIN (złącze warunkowe ) postaci: FROM tabela1 INNER JOIN tabela2 ON wyrażenie warunkowe w wyniku pojawiają się tylko te wiersze z tabel tabela1 i tabela2, które spełniają warunki wymienione po klauzuli ON. Jest to odpowiednik instrukcji: FROM tabela1, tabela2,, tabelan WHERE warunki

Złączenia LEFT OUTER JOIN postaci: FROM tabela1 LEFT OUTER JOIN tabela2 ON wyrażenie warunkowe pozwala na uwzględnienie w wynikach danych, które nie maja swoich odpowiedników w złączanych tabelach. Zatem jeżeli w tabela1 znajdują się wiersze, które nie mają swoich odpowiedników w tabela2 to i tak zostaną one uwzględnione w wynikach, a w miejsce pustych kolumn pojawi się NULL, np. SELECT imię, nazwisko, nazwa, placa FROM pracownicy LEFT OUTER JOIN stanowiska ON pracownicy.stanowisko_id = stanowiska.id; Złączenie tego typu pozwala na wykrycie problemów/nadmiarowości w konfiguracji w bazie danych (np. stanowiska nie przypisanego do pracownika) lub braku danych w bazie.

Złączenia RIGHT OUTER JOIN postaci: FROM tabela1 RIGHT OUTER JOIN tabela2 ON wyrażenie warunkowe pozwala na uwzględnienie w wynikach danych, które nie maja swoich odpowiedników w złączanych tabelach. W przeciwieństwie do LEFT OUTER JOIN tutaj jeżeli w tabela2 znajdują się wiersze, które nie mają swoich odpowiedników w tabela1 to i tak zostaną one uwzględnione w wynikach, a w miejsce pustych kolumn pojawi się NULL, np. SELECT imię, nazwisko, nazwa, placa FROM pracownicy RIGHT OUTER JOIN stanowiska ON pracownicy.stanowisko_id = stanowiska.id; Złączenie tego typu pozwala na wykrycie problemów/nadmiarowości w konfiguracji w bazie danych (np. brak pracownika przypisanego do jakiegoś stanowiska) lub braku danych w bazie. Złącza LEFT OUTER JOIN i RIGHT OUTER JOIN są zamienne, wystarczy zamienić kolejność tabel podanych w poleceniu.

Złączenia FULL OUTER JOIN postaci: FROM tabela1 FULL OUTER JOIN tabela2 ON wyrażenie warunkowe jest połączeniem LEFT OUTER JOIN, RIGHT OUTER JOIN i wykrywa oba typy braków odpowiedników. FULL OUTER JOIN występuje nie we wszystkich wersjach SQL. Złączenie z dodatkowym warunkiem. Do złączenia można wprowadzić dodatkowy warunek poprzez klauzulę WHERE. Wówczas najpierw wykonywane jest złączenie zgodnie z wymogiem warunkowym po słowie ON, później sprawdzany jest dodatkowy warunek występujący po klauzuli WHERE np. SELECT imię, nazwisko, nazwa, placa FROM pracownicy FULL OUTER JOIN stanowiska ON pracownicy. stanowisko_id = stanowiska.id WHERE nazwa is NULL; Przykład wyświetla tylko pracowników bez przypisanego (lub źle przypisanego) stanowiska.