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

Podobne dokumenty
Grupowanie i funkcje agregacji

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Autor: Joanna Karwowska

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

3. Podzapytania, łączenie tabel i zapytań

Laboratorium Bazy danych SQL 2

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

Podstawy języka SQL cz. 2

Wykład 6. SQL praca z tabelami 3

Technologie baz danych

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

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

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Marek Rakowski Podstawy zdania SELECT Strona 1 z 12

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Lista zadań nr Wyświetlić imię i nazwisko dla każdego pracownika z departamentu DEP T NO o numerze 000.

Struktura bazy danych

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

Ćwiczenie 4 - połączenia

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

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

Lista zadań nr 1. Bazy danych laboratorium. dr inż. Grzegorz Bazydło, dr inż. Jacek Tkacz

niż zadeklarowana długość, zostaje ucięty z prawej strony. osiągnął długość podaną jako drugi parametr. Jeśli wynik jest dłuższy

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

Relacyjne bazy danych. Podstawy SQL

Język SQL. Rozdział 2. Proste zapytania

Bazy Danych II. Ćwiczenia

SQL (ang. Structured Query Language)

Zadania z SQLa (MS SQL Server)

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

Laboratorium nr 10. Temat: Połączenia relacji

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

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

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

Model relacyjny. Wykład II

Złaczenia tablic: FROM, WHERE, JOIN

1.06 Wyświetl dane pracowników, którzy pracują w departamencie o nr (Id) różnym od 3.

Podyplomowe Studia Systemy informatyczne w logistyce

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

PODZAPYTANIE (SUBSELECT)

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

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

Relacyjne bazy danych. Podstawy SQL

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

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

Rozpatrzymy bardzo uproszczoną bazę danych o schemacie

Podstawowe zapytania SELECT (na jednej tabeli)

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

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

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

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

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

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

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

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

RBD Relacyjne Bazy Danych

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

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

Autor: Joanna Karwowska

SQL i PL/SQL podstawy

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

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

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

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

SQL praca z tabelami 4. Wykład 7

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

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

Wprowadzenie do baz danych

Model relacyjny. Wykład II

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

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

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

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

Ćwiczenie 3 funkcje agregujące

Laboratorium Bazy danych SQL 3 1

Zapytania do baz danych

SQL do zaawansowanych analiz danych część 1.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Paweł Rajba

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

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

Technologie baz danych

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów

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

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

Autor: Joanna Karwowska

Struktura drzewa w MySQL. Michał Tyszczenko

Złączenia wewnętrzne w bazach danych

1 Wstęp do modelu relacyjnego

LAB 3 (część 1 Projektu)

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

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

Systemy GIS Tworzenie zapytań w bazach danych

Transkrypt:

Dane z kilku tabel Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id; Łączenie kilku selectów w jeden posortowany wynik 1. UNION suma bez powtórzeń. Powoduje, że w wyniku zapytania otrzymujemy sumę wszystkich wierszy, które znajdowały się w obu zapytaniach składowych, ale z wyniku końcowego eliminowane są wiersze, które powtarzają się w obu zbiorach składowych. 2. UNION ALL suma z powtórzeniami. powoduje, że w wyniku zapytania otrzymujemy sumę wszystkich wierszy, które znajdowały się w obu zapytaniach składowych. 3. INTERSECT iloczyn, przekrój. Połączenie za pomocą intersect wyświetla tylko te wiersze które wystąpiły w obu zbiorach. 4. MINUS rożnica. Połączenie przy pomocy minus eliminuje z pierwszego zbioru te rekordy które wystąpiły w drugim zbiorze. Porównaj: salary>12000 union all select last_name, salary, department_id from salary>12000 union select last_name, salary, department_id from W tym wypadku wyświetlone zostały tylko te osoby których zarobki są wyższe niż 12 000 ale jednocześnie nie pracują w departamencie numer 90. salary>12000 minus select last_name, salary, department_id from select first_name from employees where salary>10000 intersect select first_name from employees where manager_id=100; Złączenia Dane, które chcemy uzyskać z bazy danych zazwyczaj znajdują się w więcej niż jednej tabeli bazodanowej. W takim przypadku nasze zapytanie musi się odpowiednio odwołać do więcej niż jednej tabeli. Mechanizm ten nazywa się w SQL złączeniami. Łączenie kartezjańskie Zapytanie takie zwróci iloczyn kartezjański wierszy z obu tabel.

Złączenia kartezjańskie stosuje się bardzo rzadko, gdyż produkują bardzo dużą ilość wierszy, które nie zawierają logicznie spójnych informacji. Jeżeli w zapytaniu chcemy odwołać się do kolumny, która występuje w kilku tabelach, to, aby uniknąć niejednoznaczności, odwołanie to musi zawierać nazwę kolumny poprzedzoną nazwą tabeli. Aby uzyskać takie połączenie wystarczy pobrać dane z więcej niż 1 tabeli np. w poniższy sposób: SELECT * FROM LOCATIONS, DEPARTMENTS; Ilość wierszy powstałych w wyniku złączenia kartezjańskiego jest iloczynem ilości wierszy w tabelach departments oraz locations. Złączenie wewnętrzne Złączenia kartezjańskie stosuje się niezwykle rzadko. Najczęściej, kiedy zadajemy zapytanie do dwu tabel, zależy nam na uzyskaniu tylko takich kombinacji wierszy z obu tabel, które sobie w jakiś sposób odpowiadają, np. chcemy klientów i tylko zamówienia przez nich złożone. Złączenia, które zwracają właśnie taki zbiór wierszy z obu tabel, które sobie w jakimś stopniu odpowiadają nazywamy złączeniami wewnętrznym (inner join). Aby zrealizować złączenie wewnętrzne w Oracle SQL należy w klauzuli WHERE dodać tzw. warunek złączenia, czyli warunek, w którym określamy jakie wiersze z obu tabel odpowiadają sobie nawzajem. Jeśli nadamy tabeli alias, nie będziemy mogli odnosić się do niej po nazwie. W tym przykładzie poniżej wyświetliłem nazwy departamentów w połączeniu z miastami w których się znajdują na podstawie danych z dwóch tabel: departments i locations. Select departments.location_id, departments.department_name, locations.city from departments, locations where departments.location_id= locations.location_id; Złączenia zewnętrzne W przypadku złączeń wewnętrznych, jeżeli w jednej z tabel istnieje rekord, który nie ma żadnego odpowiednika w drugiej tabeli, to rekord ten jest pomijany w końcowym wyniku.czasami taka sytuacja nas nie zadawala. W takim wypadku możemy wyróżnić jedną z tabel i wykonać tzw. złączenie zewnętrzne (outer join), aby otrzymać z wyróżnionej tabeli wszystkie rekordy, nawet te, które nie mają swojego odpowiednika w drugiej z tabel. Aby wykonać złączenie zewnętrzne musimy skorzystać z operatora złączenia zewnętrznego (+). Umieszczamy go w warunku złączenia po nazwie kolumny z tabeli która jest uboższa, czyli tam, gdzie brakuje rekordów. Poniżej widzimy iż zostały wyświetlone również te lokalizacje do których nie zostały przypisane żadne departamenty. Select departments.location_id, departments.department_name, locations.city from departments, locations where departments.location_id(+)= locations.location_id; select d.department_name, e.last_name from departments d, employees e where d.manager_id(+)=e.employee_id;

//wyświetlenie również pustych krotek. Samozłączenia Czasami zachodzi potrzeba odwołania się w jednym zapytaniu dwukrotnie do tej samej tabeli. Poniżej wyświetlam nazwisko pracownika, numer id jego managera oraz nazwisko managera. Dzieje się tak ponieważ tabelę employees potraktowałem jako dwie różne tabele. Manager_id odpowiada polu employee_id przełożonego, więc w tym wypadku tabela employee zostałą potraktowana tak jak dwie tabele zawierająca pracowników oraz zawierająca managerów. Select e.last_name, e.manager_id, m.last_name from employees e, employees m where e.manager_id=m.employee_id; Złączenia typu join JOIN ON Inną metodą łączenia wielu tabel jest korzystanie z klauzuli JOIN. Przypuśćmy że chcemy pobrać dane z dwóch tabel jednocześnie. Nasze zadanie to wyświetlić nazwy departamentów i w których się znajdują. Musimy pobrać dane z tabel locations i departments. Możemy to zrobić przy wykorzystaniu dotychczas omawianej metody tj. zwykłego łączenia zewnętrznego. Ten sam wynik możemy osiągnąć stosując join on: Select d.location_id, d.department_name, l.city from departments d join locations l on (departments.location_id= locations.location_id); Natural join Ponieważ tabele departments oraz locations posiadają pole o tej samej nazwie, które służy nam do łączenia tych tabel, możemy skorzystać z natural join: Select location_id, department_name, city from departments natural join locations; JOIN USING Identyczne zastosowanie jak NATURAL JOIN ma JOIN USING. W tym przypadku musimy podać nazwę kolumny która ma służyć jako złączenie. Korzystać z niej możemy jeśli w dwóch tabelach które chcemy połączyć występuje więcej niż jedna kolumna o identycznych nazwach i typie danych. Select location_id, department_name, city from departments join locations using(location_id); RIGHT OUTER JOIN Right outer join jest złączeniem zewnętrznym. Konstrukcja typu: select * from departments d, locations l where d.location_id(+)=l.location.id; jest równoznaczna z konstrukcją:

select * from departments d, right outer join location l on (d.location_id=l.location_id); Jest niejako odwrotnie niż ze znaczkiem (+) - jeśli do tej pory postawilibyśmy ten znaczek po lewej, musimy zastosować RIGHT OUTER JOIN, natomiast jeśli (+) postawilibyśmy po prawej, stosujemy LEFT OUTER JOIN. LEFT OUTER JOIN Left outer join jest złączeniem zewnętrznym. Konstrukcja typu: select * from departments d, locations l where d.location_id=l.location.id(+); jest równoznaczna z konstrukcją: select * from departments d left outer join location l on (d.location_id=l.location_id); Jeśli do tej pory postawilibyśmy ten znaczek po prawej, musimy zastosować LEFT OUTER JOIN, natomiast jeśli (+) postawilibyśmy po lewej, stosujemy RIGHT OUTER JOIN. FULL OUTER JOIN FULL OUTER JOIN jest połączeniem RIGHT OUTER JOIN i LEFT OUTER JOIN, lub konstrukcji z dwoma (+) po stronach obu tabel (choć taka konstrukcja nie może oczywiście istnieć jest to tylko analogia). Wyświetla niedopasowane elementy z obu tabel. Zadania do bazy HR 1. Wyświetl wszystkie nazwy regionów przyporządkowując je do nazw krajów. Wynik posortuj wg. Regionów rosnąco. 2. Wyświetl lokalizacje oraz departamenty do nich przypisane w taki sposób, aby wyświetlone zostały również te lokalizacje do których nie zostały przypisane żadne departamenty. Puste lokalizacje powinny zostać wyświetlone na końcu. 3. Wyświetl nazwiska oraz płacę tych pracowników, którzy są przełożonymi kogokolwiek. 4. Wyświetl tych pracowników, którzy zarabiają o 20% więcej niż płaca minimalna na ich stanowisku (tabela jobs). 5. Wyświetl tych pracowników, którzy pracują w departamencie Finance oraz zarabiają o 20% więcej niż płaca minimalna na ich stanowisku. 6. Wyświetl różnicę pomiędzy najwyższymi a najniższymi zarobkami w departamencie Finance 7. Wybierz pracowników zatrudnionych w Toronto. 8. Wyświetl nazwiska wszystkich managerów 9. Wyświetl nazwiska pracowników oraz nazwiska ich przełożonych 10. Wyświetl nazwiska pracowników oraz nazwy departamentów w których pracują. 11. Wyświetl nazwiska pracowników oraz nazwy regionów w których znajdują się departamenty w których pracują. 12. Wypisz dla pracownika o nazwisku Kochhar informacje na jakich stanowiskach pracował w przeszłości (job_hostory) i jaka była jego minimalna płaca na tych stanowiskach.

Zadania do bazy ewidencji pracowników uczelni 13. Wyświetl nazwiska, etaty, numery zespołów i nazwy zespołów wszystkich pracowników. 14. Wyświetlić pracowników z ulicy Sosnkowskiego w rosnącym porządku alfabetycznym ich nazwisk. 15. Wyświetlić nazwiska pracowników, nazwy i adresy zespołów pracowników, których miesięczna pensja przekracza 2000 PLN. 16. Wyświetlić posortowane malejąco nazwiska pracowników zarabiających od 2000 do 3000 i nazwiska ich szefów. 17. Wyświetl nazwiska, etaty, wynagrodzenia, kategorie płacowe i nazwy zespołów pracowników niebędących asystentami. Wyniki uszereguj zgodnie z malejącym wynagrodzeniem. 18. Wyświetl nazwiska i daty zatrudnienia pracowników, którzy zostali zatrudnieni nie później niż 10 lat (3650 dni) po swoich przełożonych. 9-10 zad 3 11-12 zad 3,5 13-14 zad 4 15-16 zad 4,5 17-18 zad 5