Laboratorium Bazy danych SQL 2

Podobne dokumenty
Ćwiczenie zapytań języka bazy danych PostgreSQL

Bazy Danych. Ćwiczenie 11: Wybrane funkcje wbudowane

Wykład 6. SQL praca z tabelami 3

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

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

Laboratorium Bazy danych SQL 3 1

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

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

Język SQL. Rozdział 2. Proste zapytania

Autor: Joanna Karwowska

Podstawy języka SQL cz. 2

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

Wykład 5. SQL praca z tabelami 2

Podstawowe zapytania SELECT (na jednej tabeli)

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

ACESS- zadania z wykorzystaniem poleceń SQL

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

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

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

Bazy danych SQL Server 2005

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

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

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

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

Struktura bazy danych

Wprowadzenie do języka SQL

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

SQL (ang. Structured Query Language)

Przestrzenne bazy danych Podstawy języka SQL

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

Zadania z SQLa (MS SQL Server)

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

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

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

Wprowadzenie do baz danych

Ćwiczenie 4 - połączenia

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

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

Ćwiczenie 3 funkcje agregujące

Zagadnienia podstawowe

Język SQL. Rozdział 8. Język manipulowania danymi DML

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

Autor: Joanna Karwowska

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

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

SQL do zaawansowanych analiz danych część 1.

Autor: Joanna Karwowska

Bazy danych. Polecenia SQL

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

3. Podzapytania, łączenie tabel i zapytań

Laboratorium nr 10. Temat: Połączenia relacji

Grupowanie i funkcje agregujące

Marek Rakowski Podstawy zdania SELECT Strona 1 z 12

Technologie baz danych

1. Język T SQL wprowadzenie do tworzenia zapytań i modyfikowania bazy danych

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

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

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

Laboratorium Baz Danych. Zapytania SQL (część 3)

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Wykład 05 Bazy danych

Systemy GIS Tworzenie zapytań w bazach danych

Relacyjne bazy danych. Podstawy SQL

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

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

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

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

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

SQL praca z tabelami 4. Wykład 7

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

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

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

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

Optymalizacja poleceń SQL Metody dostępu do danych

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

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

SIECI KOMPUTEROWE I BAZY DANYCH

Język SQL. Rozdział 8. Język manipulowania danymi DML zadania

Fizyczna struktura bazy danych w SQL Serwerze

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

Język SQL, zajęcia nr 1

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

Bazy danych kwerendy (moduł 5) 1. Przekopiuj na dysk F:\ bazę M5KW.mdb z dysku wskazanego przez prowadzącego

QUERY język zapytań do tworzenia raportów w AS/400

Funkcje agregujące i ciąg dalszy SQL

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Wykład 8. SQL praca z tabelami 5

Bazy danych. dr inż. Arkadiusz Mirakowski

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

Technologie baz danych

Model relacyjny. Wykład II

SQL. Æwiczenia praktyczne

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

Bazy danych - wykład wstępny

Transkrypt:

Klauzula order by występuje jako ostatnia klauzula w poleceniu select, powoduje posortowanie wierszy będących wynikiem zapytania według wartości atrybutu w niej wskazanego. Domyślnie sortowanie jest według narastającego porządku (asc), desc sortuje malejąco. select... from... where... ORDER BY nazwy(a)_kolumn(y) lub numer(y)_kolumn(y) [ASC/DESC]; Przykład 1 select distinct nazwisko, etat from pracownik order by nazwisko; select distinct nazwisko, etat from pracownik order by 1, 2 desc; Łączenie poziome relacji: Z reguły łączy się tabele na podstawie wartości wspólnego atrybutu, na przykład wartości pary klucz podstawowy klucz obcy. W takim przypadku musimy użyć jednoznacznego identyfikatora kolumny. Ponieważ nazwy kolumn zawierających klucz podstawowy i obcy najczęściej są takie same, musimy poprzedzać nazwy kolumn nazwami tabel. Możemy poprawić czytelność zapytania, stosując aliasy dla nazw tabel. Tabele łączymy zgodnie z następującymi wskazówkami: 1. Staramy się łączyć tabele za pomocą kolumn przechowujących parę kluczy podstawowyklucz obcy. 2. Do złączenia używamy całych kluczy podstawowych tabel. Jeżeli dla jakiejś tabeli zdefiniowano złożony (składający się z kilku atrybutów) klucz podstawowy, łącząc taką tabelę, odwołujemy się do całego klucza. 3. Łączymy obiekty za pomocą kolumn tego samego typu. 4. Poprzedzamy nazwy kolumn aliasem nazwy obiektu źródłowego, nawet jeżeli nazwy te są unikatowe w ten sposób poprawimy czytelność zapytania. 5. Ograniczamy liczbę łączonych obiektów do niezbędnego minimum. iloczyn kartezjański: łączone iloczynem kartezjańskim relacje wymienia się kolejno w klauzuli from oddzielając je przecinkami. Przykład 2 select * from zespol, etat; 1

połączenie (JOIN): wiersze jednej relacji łączone są z wierszami innej relacji tylko wtedy, gdy wartości korespondujących atrybutów tych wierszy spełniają określony warunek. INNER JOIN... ON USING złączenie wewnętrzne NATURAL JOIN złączenie naturalne Przykład 3 Przykład 4 Przykład 5 Przykład 6 Przykład 7 from pracownik, etat where etat = nazwa; from pracownik p, zespol z where p.id_zesp = z.id_zesp; from pracownik INNER JOIN etat ON (etat = nazwa); from pracownik p INNER JOIN zespol z ON p.id_zesp = z.id_zesp; from pracownik INNER JOIN zespol USING (id_zesp); połączenie zewnętrzne: LEFT RIGHT OUTER JOIN złączenie zewnętrzne; wiersze nie spełniające warunku połączenia mogą być wyświetlone w wyniku zapytania, np. operator połączenia zewnętrznego stosujemy, gdy po jednej stronie w tabeli brakuje krotek umożliwiających wyświetlenie wszystkich krotek drugiej relacji (po połączeniu). Powoduje on utworzenie dodatkowych pustych krotek w niepełnej relacji. Liczba pustych krotek jest równa liczbie krotek, które nie spełniają warunków klasycznego połączenia. Przykład 8 W tabeli zespol istnieją wiersze, do których nie odwołujemy się w tabeli pracownik. insert into zespol values(100, 'aaa','bbb'); insert into zespol values(101, 'ccc','ddd'); from pracownik p RIGHT OUTER JOIN zespol z USING (id_zesp); 2

UWAGA: Dla połączenia n relacji jest konieczne zdefiniowanie n-1 warunków połączenia. Łączenie pionowe relacji: W celu pionowego połączenia relacji stosujemy operator zbiorowy sumy (union, uinion all). Operator ten działa na wynikach co najmniej dwóch operacji select. W łączonych operatorem zbiorowym klauzulach select musi wystąpić ta sama liczba kolumn o typach zgodnych. W wyniku zapytania pojawią się nazwy atrybutów wyłącznie z pierwszej klauzuli select. Polecenia select wykonywane są w kolejności ich wystąpienia (od góry do dołu). W celu zmiany tej kolejności stosujemy nawiasy. Jeśli wystąpi potrzeba użycia klauzuli order by, to musi ona wystąpić jako ostatnia klauzula zapytania. Ponadto, w klauzuli order by nie stosujemy nazw kolumn, lecz ich numery porządkowe. select k_1,..., k_n from r_1 where warunki operator select k_1,..., k_n from r_2 where warunki order by 1,...,n; Przykład 9. select etat from pracownik where id_zesp = 10 union all select etat from pracownik where id_zesp = 30 order by 1 desc; 3

Zadania do samodzielnego rozwiązania: Laboratorium Bazy danych SQL 2 Zad.1 Wyświetlić wszystkie informacje o pracownikach i posortować w pierwszej kolejności rosnąco według identyfikatora zespołu potem malejąco według płacy podstawowej. Zad.2 Wyświetlić nazwiska i roczne wynagrodzenie pracowników, nie uwzględniać płacy dodatkowej (nadać kolumnie nazwę WYNAGRODZENIE). Wiersze uporządkować w malejącej kolejności wynagrodzenia, pracowników wynagradzanych tak samo uporządkować w rosnącej kolejności nazwisk. Zad.3 Wyświetlić wszystkie informacje o tych etatach, których średnia z płacy minimalnej oraz maksymalnej jest z przedziału 1000 do 1500. Wiersze uporządkować malejąco według nazwy etatu. Zad.4 Wyświetlić nazwiska, nazwę etatu oraz nazwę zespołu z połączonych tabel: pracownik, zespol i etat. Zad.5 Wyświetlić nazwiska pracowników, nazwy i adresy zespołów pracowników, których miesięczna pensja przekracza 2000. Zad.6 Wyświetlić pracowników z ul...., w rosnącym porządku alfabetycznym ich nazwisk. Zad.7 Wyświetlić zespoły, które nie zatrudniają pracowników. Zad.8 Wyświetlić numery i nazwiska pracowników i ich przełożonych. Wyświetlić również pracowników, którzy nie mają przełożonych. Wyniki uporządkować zgodnie z rosnącym porządkiem alfabetycznym nazwisk przełożonych. Zad.9 Wyświetlić pracowników zatrudnionych przed ich przełożonymi. Zad.10 Wyświetlić pracowników, którzy zarabiają więcej niż Warski. Zad.11 Wyświetlić nazwiska i płace podstawowe pracowników. Ponadto, jeśli płaca podstawowa jest mniejsza od 1400, wyświetlić tekst:'poniżej 1400', jeśli płaca podstawowa jest równa 1400, wyświetlić tekst:'1400' natomiast jeśli płaca podstawowa jest większa od 1400, wyświetlić tekst:'powyżej 1400'. Uporządkować wiersze rosnąco według płacy podstawowej. 4

FUNKCJE WBUDOWANE (http://dev.mysql.com/doc/) Zad.12 W trakcie porównywania łańcuchów MySQL nie uwzględnia wielkości liter. Przykładowo poniższe polecenie zwróci jeden rekord, mimo że nazwisko pracownika jest napisane bez dbałości o zachowanie wielkości liter: SELECT nazwisko, etat FROM pracownik WHERE nazwisko LIKE WarSKi ; Inny sposób wyświetlania danych: SELECT nazwisko, etat FROM pracownik WHERE nazwisko LIKE WarSKi \G Należy zmodyfikować powyższe zapytanie SQL tak, aby wielkość liter była honorowana. Ponadto należy odnaleźć w dokumentacji informacje jak można zdefiniować kolumnę łańcuchową (CHAR, VARCHAR TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT), aby na trwałe wymusić uwzględnianie wielkości liter. Utworzyć następnie przykładową tabelę oraz sprawdzić nieczułość na wielkość liter. Zad.13 Wyświetlić połączone dane o pracowniku. Użyć funkcji CONCAT. Zad.14 Wyświetlić dane o pracowniku, których nazwiska zaczynają się na literę D. Wyświetlany tekst ma zostać uzupełniony do 20 znaków (policz to) sekwencją znaków #*. Należy użyć funkcji RPAD. Czym różni się w działaniu funkcja LPAD? Zad.15 Wyświetlić nazwiska pracowników. W drugiej kolumnie wyświetlić tylko 3 znaki z nazwiska poczynając od 1 znaku. Użyć funkcji SUBSTR. Zad.16 Wyświetlić dane o pracownikach, których nazwiska są dłuższe niż 6 znaków oraz w osobnej kolumnie długość nazwiska. Wynik posortować wg. długości nazwiska w porządku od największej do najmniejszej. Zad.17 Wyświetlić nazwiska pracowników, a w drugiej kolumnie nazwiska, ale każdą literę 'a' zastąpić przez 'X'. Użyć funkcji REPLACE. Zad.18 Wyświetlić nazwiska pracowników, a w drugiej kolumnie nazwiska mają być pisane wspak. Użyć funkcji REVERSE. 5

Zad.19 Wyświetlić dane o pracownikach, których nazwiska zaczynają się na literę M. W nazwisku wszystkie litery mają być małe, a w etacie duże. Użyć funkcji LOWER oraz UPPER. Zad.20 Wyświetlić dane o zespołach oraz liczbie pracowników zatrudnionych w każdym z nich. Przy czym ograniczyć się do zespołów zatrudniających nie więcej niż 3. Zad.21 Wyświetlić nazwiska pracowników. W drugiej kolumnie wypisać, w którym miejscu po raz pierwszy pojawiła się litera a. Użyć funkcji INSTR. Zad.22 Użyć SQL-a do obliczenia pola i obwodu koła o promieniu 10. Użyć funkcji POW. Zad.23 Użyć SQL-a do wygenerowanie liczby losowej. Użyć funkcji RAND. Jak zmusić funkcję RAND, aby za każdym wywołaniem generowała tą samą liczbę losową (przydatne przy testowaniu oprogramowania). Zad.24 Zaokrąglić płacę podstawową pracowników do liczb całkowitych. Użyć funkcji ROUND. Zad.25 Wyświetlić bieżącą datę oraz czas. W pierwszych dwóch kolumnach format wyświetlania ma być domyślny, w trzech ostatnich ustalony przez nas. Użyć funkcji DATE_FORMAT. Zad.26 Do bieżącej daty i godziny dodać 2 dni, 5 godzin oraz 8 minut. Użyć funkcji DATE_ADD. Zad.27 Wyliczyć, używając odpowiednich funkcji MySQL, parametry bieżącego dnia. Jako wynik powinniśmy otrzymać: +---------------+ ---------------------------------------------------------------------------------+ 2016-10-21 Dzis mamy 295 dzien roku, 42 tydzien roku oraz 6 dzien tygodnia. +---------------+ ---------------------------------------------------------------------------------+ 6