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



Podobne dokumenty
Podstawowe zapytania SELECT (na jednej tabeli)

Język SQL. Rozdział 2. Proste zapytania

Ćwiczenie 1 podstawy

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

Autor: Joanna Karwowska

Wprowadzenie do języka SQL

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

Laboratorium nr 10. Temat: Połączenia relacji

Autor: Joanna Karwowska

Wprowadzenie do baz danych

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

Wykład 5. SQL praca z tabelami 2

Przestrzenne bazy danych Podstawy języka SQL

Ćwiczenie 3 funkcje agregujące

Laboratorium Bazy danych SQL 2

SQL (ang. Structured Query Language)

Relacyjne bazy danych. Podstawy SQL

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

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

Zadania z SQLa (MS SQL Server)

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

Technologie baz danych

Laboratorium nr 7. Temat: Podstawy języka zapytań SQL (część 1) 1. Wprowadzenie do laboratorium

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

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

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

Struktura bazy danych

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

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

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Marek Rakowski Podstawy zdania SELECT Strona 1 z 12

Autor: Joanna Karwowska

Ćwiczenie zapytań języka bazy danych PostgreSQL

SQL praca z tabelami 4. Wykład 7

Podstawy języka SQL cz. 2

Systemy GIS Tworzenie zapytań w bazach danych

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

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

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

Wykład 8. SQL praca z tabelami 5

Optymalizacja poleceń SQL Metody dostępu do danych

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

2. Język SQL SQL jest językiem deklaratywnym (Charakterystyczną cechą języków

Krótki przegląd zapytań

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

Bazy danych SQL Server 2005

Relacyjne bazy danych. Podstawy SQL

PODZAPYTANIE (SUBSELECT)

Widok Connections po utworzeniu połączenia. Obszar roboczy

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

SQL. Æwiczenia praktyczne

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

Systemy Baz Danych. Lista 1

Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych.

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

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

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

5.5. Wybieranie informacji z bazy

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

Zapytania do baz danych

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Wykład 6. SQL praca z tabelami 3

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

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ę

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

Laboratorium Bazy danych SQL 3 1

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

Kurs. Podstawy MySQL

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

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

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

SQL do zaawansowanych analiz danych część 1.

SIECI KOMPUTEROWE I BAZY DANYCH

Wykład 05 Bazy danych

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest

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

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

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

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

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

PODSTAWY SZTUCZNEJ INTELIGENCJI

Funkcje agregujące i ciąg dalszy SQL

Ćwiczenie 5 podzapytania

Komputerowe systemy zarządzania. Część I: relacyjna baza danych

VII. Ciągi znaków łańcuchy

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

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

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

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

Kwerendy (zapytania) wybierające

Ćwiczenie 4 - połączenia

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Bazy danych. Polecenia SQL

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Język SQL, zajęcia nr 1

Transkrypt:

Laboratorium nr 8 Temat: Podstawy języka zapytań SQL (część 2) PLAN LABORATORIUM: 1. Sortowanie. 2. Warunek WHERE 3. Eliminacja powtórzeń - DISTINCT. 4. WyraŜenia: BETWEEN...AND, IN, LIKE, IS NULL. 5. Porcjowanie wyników zapytania LIMIT 1. Sortowanie Wyniki polecenia SELECT są zwracane w przypadkowej kolejności. Czasem jednak moŝemy być zainteresowani otrzymaniem ich w jakiejś określonej przez nas kolejności. W tym celu naleŝy zaŝądać od SZBD, aby przed zwróceniem wyników zapytania, posortował je według wartości dowolnego, zdefiniowanego przez nas wyraŝenia. Robi się to za pomocą klauzuli ORDER BY dodawanej na końcu polecenia. Za klauzulą ORDER BY podaje się listę wyraŝeń, lub aliasów wyraŝeń (zdefiniowanych przy klauzuli SELECT) oddzielonych przecinkami. Wynik zapytania zostanie posortowany według wartości tych wyraŝeń. Rozszerzona o klauzulę ORDER BY składnia polecenia SELECT wygląda następująco: SELECT[DISTINCT]{wyraŜeniel[AS aliasl],wyraŝenie2[as alias2] } FROM {nazwa relacji} ORDER BY{wyraŜenie3[ASC DESC],wyraŜeniie[ASC DESC], aliasl [ASC DESC], alias2 [ASC DESC] }; W celu wyjaśnienia działania klauzuli ORDER BY zostanie omówionych kilka przykładowych zapytań: 1. SELECT nazwisko FROM PRACOWNICY ORDER BY nazwisko; Początek zapytania moŝna juŝ wytłumaczyć na podstawie tego co dotychczas omówiono. SELECT nazwisko FROM pracownicy znaczy: odczytaj z relacji PRACOWNICY wszystkie krotki, odczytaj z nich atrybut NAZWISKO i zwróć odczytane wartości w relacji wynikowej. Końcówka ORDER BY mówi SZBD, aby posortować otrzymane krotki rosnąco według nazwisk (porządek leksykograficzny). Analizując podaną powyŝej ogólną składnię polecenia SELECT moŝna zauwaŝyć, Ŝe za wyraŝeniem w klauzuli ORDER BY moŝna opcjonalnie podać słowo kluczowe ASC bądź DESC. Słowo to określa porządek sortowania, ASC 1

oznacza sortowanie rosnąco i jest domyślne, DESC oznacza sortowanie malejąco. Przykładowo, polecenie SELECT nazwisko FROM pracownicy ORDER BY nazwisko ASC; zwróci te same wyniki i w tej samej kolejności, co zapytanie 1. Z kolei zapytanie: SELECT nazwisko FROM pracownicy ORDER BY nazwisko DESC; zwróci wyniki w odwrotnym porządku w stosunku do poprzednich zapytań. 2. SELECT nazwisko FROM pracownicy ORDER BY wynagrodzenie; Zapytanie 2 podobnie jak poprzednie zapytania zwraca wszystkie nazwiska pracowników zapisane w relacji PRACOWNICY. Tym razem jednak wyniki są sortowane według atrybutu WYNAGRODZENIE. Jak łatwo zatem moŝna zauwaŝyć, sortować moŝna równieŝ według atrybutów, które nie są wymienione w klauzuli SELECT. Jest to moŝliwe, gdyŝ projekcja odbywa się dopiero po posortowaniu krotek otrzymanych w wyniku zapytania. 3. SELECT nazwisko FROM pracownicy ORDER BY WYNAGROZDENIE/20; Niniejsze zapytanie odczytuje wszystkie krotki z relacji PRACOWNICY, oblicza dzienną płacę kaŝdego pracownika, sortuje otrzymane krotki według obliczonych wartości dziennej płacy i ostatecznie odczytuje z posortowanych krotek atrybut nazwisko i zwraca go w relacji wynikowej. W klauzuli ORDER BY moŝna zatem podawać nie tylko nazwy kolumn, ale równieŝ wyraŝenia. 4. SELECT nazwisko,wynagrodzenie/20 AS dniowka FROM pracownicy ORDER BY dniowka; W niniejszym zapytaniu wyraŝenie obliczające dzienną płacę pracownika umieszczono w klauzuli SELECT Ŝądając tym samym, aby, prócz nazwiska, w relacji wynikowej znalazła się jego wartość. Warto równieŝ zauwaŝyć, Ŝe wyraŝeniu temu nadano alias DNIÓWKA, oraz Ŝe po klauzuli ORDER BY uŝyto właśnie tego aliasu. W zapytaniu tym wyniki są równieŝ sortowane według wartości dziennej płacy pracowników. MoŜna zatem, zamiast wyraŝenia, umieścić w klauzuli ORDER BY jego alias. 5. SELECT nazwisko, imie, wynagrodzenie FROM egzaminatorzy ORDER BY data_zatrudnienia, wynagrodzenie; Niniejsze zapytanie odczytuje z pobranych z relacji EGZAMINATORZY krotek nazwisko, stanowisko i wynagrodzenie egzaminatora. W klauzuli ORDER BY umieszczono dwa proste wyraŝenia, oddzielone od siebie przecinkami. Sortowanie dla tak sformułowanego polecenia odbywa się w następujący sposób. Najpierw krotki są sortowane według atrybutu DATA_ZATRUDNIENIA. W ramach zbioru krotek, o takiej samej wartości atrybutu DATA_ZATRUDNIENIA, krotki są sortowane według atrybutu 2

WYNAGRODZENIE. W klauzuli ORDER BY moŝna podać dowolną liczbę wyraŝeń, przy czym kaŝde kolejne jest wykorzystywane do posortowania krotek, dla których wszystkie poprzednie wyraŝenia mają taką samą wartość. Porządek sortowania zaleŝy od typu sortowanych danych i wygląda następująco (porządek domyślny, nie zmodyfikowany za pomocą słowa kluczowego DESC). liczby - od mniejszych do większych daty - od wcześniejszych do późniejszych łańcuchy znaków - alfabetycznie wartości puste - w zaleŝności od SZBD (najczęściej są wymieniana jako pierwsze albo ostatnie). 2. Warunek WHERE W celu wybrania, które krotki mają się znaleźć w relacji wynikowej, stosuje się klauzulę WHERE. Za klauzulą WHERE podaje się warunek, zdefiniowany na wartościach atrybutów w relacji, który musi być spełniony, aby krotka znalazła się w relacji wynikowej. Operację wyboru krotek, które mają się znaleźć w rozwiązaniu nazywa się selekcją". Składnia polecenia SELECT, rozszerzona o klauzulę WHERE, wygląda następująco: SELECT[DISTINCT{wyraŜenie1 [AS aliasl],wyraŝenie2 [AS alias2]} FROM {nazwa relacji} WHERE warunek_elementarny ORDERBY{wyraŜenie5[ASC DESC],wyraŜenie6 ASC DESC], alias [ASC DESC],alias2[ASC DESC]}; gdzie warunek_elementarny", to porównanie jednego, dwóch lub większej liczby wyraŝeń za pomocą odpowiednich operatorów logicznych. 3

Przy tworzeniu warunków w klauzuli WHERE moŝna stosować znane z róŝnych języków programowania operatory binarne porównujące dwie wartości. Są to operatory testujące czy dwie liczby są równe ('='), róŝne ('!=','<>'), czy jedna z liczb jest większa albo większa lub równa drugiej ('>','>=') oraz czy jedna z liczb jest mniejsza, albo mniejsza lub równa drugiej ('<','<='). Operatory te moŝna stosować na liczbach, łańcuchach (porządek alfabetyczny) oraz datach (data wcześniejsza jest mniejsza). 3. Eliminacja powtórzeń Gdy zachodzi potrzeba, aby wśród podanych w jednej kolumnie wyników zapytania nie powtarzały się wartości, moŝna uŝyć słowa kluczowe DISTINCT. W tabeli przedstawiono to samo zapytanie w dwóch wersjach: bez eliminacji powtórzeń i z eliminacja powtórzeń. Zapytanie do otrzymanego wyniku brzmi: z jakich miast pochodzą czytelnicy? i z jakich róŝnych miast pochodzą czytelnicy? 4

4. WyraŜenia: BETWEEN...AND, IN, LIKE, IS NULL. Operator BETWEEN AND sprawdza, czy jedna wartość zawiera się pomiędzy dwoma innymi (włącznie). Składnia operatora wygląda następująco: x BETWEEN y AND z gdzie 'x' to sprawdzana wartość, y to wartość określająca początek przedziału a 'z' koniec. Pod 'x', y i 'z' moŝna podstawić dowolne wyraŝenia, przy czym wymagane jest aby y było mniejsze od z. Wartości wyraŝeń podstawianych pod 'x', y albo 'z' mogą być zarówno liczbami jak i łańcuchami oraz datami. WaŜne jest jednak aby wszystkie były tego samego typu. Przeanalizujmy klauzulę WHERE pierwszego przykładu: 5

Oznacza ona, Ŝe poszukiwane są wszystkie krotki, w których wartość atrybutu wynagrodzenie mieści się pomiędzy 1500 a 2700. Operator IN sprawdza czy jedna wartość jest równa przynajmniej jednej z wartości wymienionych na liście. Składnia operatora wygląda następująco: x IN (a1, a2, a 3,..., a n ), gdzie x" to sprawdzana wartość, a an to wartości z którymi porównywana jest wartość x". Pod x" oraz an moŝna podstawić dowolne wyraŝenia. x" oraz ai" mogą być liczbami, łańcuchami oraz datami, waŝne jest jednak aby były tego samego typu. Przeanalizujmy klauzulę WHERE drugiego przykładu: Oznacza ona, Ŝe poszukiwane są wszystkie krotki, w których wartość atrybutu NAZWISKO jest równa Potepa albo Borowik. Operator LIKE jest specjalnym operatorem stosowanym do złoŝonego porównywania łańcuchów. Składnia operatora LIKE to: x LIKE maska, gdzie x jest dowolnym wyraŝeniem typu łańcuchowego, a maska jest specjalnym łańcuchem zawierającym normalne znaki oraz znaki o specjalnym znaczeniu. Znaki specjalne to: '%' i'_', gdzie '%' oznacza 6

dowolny ciąg znaków (zero lub więcej) a '_' dokładnie jeden, dowolny, znak. Operator LIKE sprawdza, czy zadany łańcuch spełnia warunki zdefiniowane przez maskę. Klauzula WHERE w tym zapytaniu zawiera warunek: nazwisko LIKE 'Pote%'". W warunku tym maska ma postać 'Pote%'. Reprezentuje ona wszystkie łańcuchy, które jako pierwsze znaki mają litery Pote, po których moŝe się znajdować dowolny ciąg znaków. Warunek ten będzie zatem spełniony, jeśli łańcuch zapisany w atrybucie NAZWISKO będzie się zaczynał od liter 'Pote'. PoniŜej przedstawiono kilka innych przykładów maski: '%SKI' - wszystkie łańcuchy kończące się na SKI (np. 'KOTARSKI'). 'MAlinowsk_ - wszystkie łańcuchy zaczynające się od Malinowsk i mające dowolny jeden znak na końcu (np. 'MALINOWSKI', 'MALINOWSKA'). Operator IS NULL sprawdza, czy wartość danego wyraŝenia jest równa NULL. W przykładowym zapytaniu sprawdza on, czy wartość atrybutu wynagrodzenie wynosi NULL. NaleŜy w tym miejscu zwrócić szczególną uwagę na to, iŝ sprawdzanie, czy dany atrybut ma wartość NULL za pomocą operatora '=' nie ma sensu. Wynika to z faktu, Ŝe NULL stanowi wartość nieznaną. Wynik porównania wartości nieznanej z jakąś inną wartością jest równieŝ nieznany. RóŜnica w semantyce pomiędzy dwoma przykładowymi warunkami: wynagrodzenie = NULL i wynagrodzenie IS NULL jest zatem znaczna. 7

5. Porcjowanie wyników zapytania JeŜeli nie chcemy uzyskać wszystkich rekordów pasujących do zapytania, a na przykład jedynie pierwsze 10, moŝesz posłuŝyć się klauzulą LIMIT. Aby otrzymać określoną liczbę rekordów, naleŝy posłuŝyć się klauzulą LIMIT, po której podaje się odpowiednią wartość. 8

Jeśli w LIMIT poda się dwa argumenty (oddzielone przecinkiem), pierwszy z nich zostanie potraktowany jako przesunięcie od początku wyniku (tyle pierwszych wierszy ma zostać pominiętych), a drugi -jako liczba wierszy do wyświetlenia. Trzy pierwsze wiersze mają być pominięte, Wyświetlone mają zostać dwa kolejne wiersze" Ćwiczenie do samodzielnej realizacji: 1. Dla kaŝdego pracownika wyświetl jego imię i nazwisko oraz jego roczną płacę. WyraŜeniu obliczającemu roczną płace nadaj alias DOCHÓD". Dane posortuj rosnąco wg dochodu. 2. Wyświetl w kolejności alfabetycznej (wg nazwiska i imienia) raport zawierający dane o pracownikach wg wzoru: Krzysztof Potepa jest zatrudniony od daty 2000-07-24 i jego dochód miesięczny wynosi 9000 zł". 3. Wyświetl te nazwiska czytelników z bazy, których długość przekracza 6 znaków. Uporządkuj wynik od najdłuŝszego nazwiska do najkrótszego i w kolejności alfabetycznej. 4. Wyświetl czytelników urodzonych między 1970 a 1990 rokiem. Wynik wyświetl uporządkowany malejąco wg daty urodzenia. 9

5. Wyświetl nazwisko, imię i miasto z jakiego pochodzą czytelnicy, którzy są zapisani w bazie jako aktualni (nie maja podanej daty skreślenia) 6. Wyświetl 5 pierwszych wypoŝyczeń dokonanych w miesiącu maju 2009 roku 7. Wyświetl numery transakcji wypoŝyczeń, które odbyły się jako 20, 21 i 22 8. Wyświetl nazwiska czytelników, które alfabetycznie mieszczą się w przedziale od Da Ko 9. Wyświetl w jednej kolumnie imiona i nazwiska wszystkich czytelniczek z tabeli czytelnicy urodzone po roku 1970. 10. Wyświetl w jednej kolumnie nazwiska czytelników, którzy w nazwisku maja literę K". Wyniki wyświetl alfabetycznie wg nazwiska. Usuń powtórzenia. 11. Jaka data będzie za 100 dni? A jak była 200 dni temu? 10