Bazy danych - Akademia Morska w Gdyni
Transkrypt
Bazy danych - Akademia Morska w Gdyni
Bazy danych Język SQL – Instrukcja SELECT część I Laboratorium Akademia Morska w Gdyni Gdynia 2004 Przedmiot Typ zajęć Temat Bazy danych Laboratorium Język SQL – Instrukcja SELECT cz.I 1. Wprowadzenie do języka SQL SQL – (Structured Query Language) to język zapytań za pomocą którego można komunikować się z bazą danych w celu np.: tworzenia i modyfikowania struktury bazy (np. dodawania tabeli) – instrukcje CREATE TABLE i ALTER TABLE przeglądania danych zapisanych w bazie – instrukcja SELECT modyfikowania danych zapisanych w bazie – instrukcja UPDATE usuwania danych z bazy – instrukcja DELETE Przykład prostego zapytania SQL służącego do przejrzenia danych z tablicy WYDAWNICTWA: SELECT * FROM wydawnictwa; Uwaga: W składni języka SQL brak jest rozróżnienia pomiędzy małymi i wielkimi literami dla słów kluczowych języka, jednocześnie rozróżnienie to ma zastosowanie dla nazw własnych, np. nazw tablic. Również formatowanie tekstu (liczba spacji, przejścia do nowej linii, itp.) w większości przypadków nie ma wpływu na wykonanie zapytania. Przykład równoważny z poprzednim: select * from wydawnictwa; Każdy system RDBMS może nieco różnić się szczegółowymi parametrami wywołań instrukcji języka SQL. W niniejszym opracowaniu przedstawiono składnię specyficzną dla MySQL ver. 4.11. 1.1. Dostęp do języka zapytań SQL w MySQL Aby zapewnić sobie możliwość edycji i wykonywania zapytań w języku SQL należy skorzystać z jednego z dostępnych programów klienckich MySQL, takich jak: DBManager (Windows) MySQL Control Center (Windows) MySQLFront (Windows) mysql (aplikacja konsolowa, Linux) Joanna Szłapczyńska ([email protected]) Strona 2 z 7 Przedmiot Typ zajęć Temat Bazy danych Laboratorium Język SQL – Instrukcja SELECT cz.I 2. Pobieranie danych z bazy - instrukcja SELECT Podstawowa instrukcja języka SQL – instrukcja SELECT – służy do pobierania danych (rekordów) z tabel bazy. 2.1. Dane w tabelach i wartości NULL Relacyjne bazy danych przechowują swoje dane w tabelach, np. przykładowa zawartość tabeli autorzy: Id 1 2 3 4 5 Imie Jan Adam Anna Piotr Katarzyna Nazwisko Kowalski Nowak Zięba Różański Abramska Tytul_naukowy NULL dr inz. Mgr NULL Mgr Każda tabela ma swoją nazwę (u nas np. autorzy), w każdej z tabel istnieje zbiór kolumn (id, imie, nazwisko, tytul_naukowy), dzięki którym możemy łatwo lokalizować dane w pionowych kolumnach. Każdy z wierszy tabeli (często nazywany rekordem) może być zlokalizowany za pomocą klucza głównego (w przykładzie klucz główny tablicy autorzy to kolumna „Id”). Tak więc podając wartość klucza głównego i nazwę interesującej nas kolumny możemy łatwo odczytać dane przechowywane w konkretnej komórce tabeli, np.: dla klucza głównego Id=3 w kolumnie „nazwisko” możemy odczytać wartość „Zięba”. Wartości określane jako NULL w bazach danych oznaczają puste, niewypełnione komórki. Wartości NULL nie podlegają operacjom porównania (poza jednym wyjątkiem). 2.2. Proste zapytania SQL W najbardziej uproszczonej formie składnia instrukcji SELECT jest następująca: SELECT <lista pól do pobrania> FROM <nazwa tabeli>; Przykład: Instrukcja pobrania wartości kolumn „imie” oraz „nazwisko” dla wszystkich rekordów z tabeli autorzy: SELECT imie, nazwisko FROM autorzy; Joanna Szłapczyńska ([email protected]) Strona 3 z 7 Przedmiot Typ zajęć Temat Bazy danych Laboratorium Język SQL – Instrukcja SELECT cz.I Jeśli jednak interesują nas wszystkie kolumny z danymi z tabeli autorzy należy użyć „*” jako symbolu wszystkich nazw kolumn. Zapytanie o całą zawartość tabeli autorzy ma postać: SELECT * FROM autorzy; 2.3. Zliczanie wierszy w tabeli Korzystając z funkcji agregującej COUNT() (szczegóły dot. funkcji agregujących podczas następnych zajęć) możemy zliczyć liczbę wierszy dowolnej tabeli: SELECT COUNT(*) FROM <nazwa tabeli>; 2.4. Operator DISTINCT Rozszerzając składnię instrukcji SELECT do postaci: SELECT [DISTINCT] <lista pól do pobrania> FROM <nazwa tabeli> dzięki zastosowaniu opcjonalnego operatora DISTINCT mamy możliwość wyeliminowania wartości powtarzających się dla pojedynczej kolumny bądź zestawu kolumn. Przykład: Wybranie listy imion autorów z tablicy autorzy (wyeliminowanie ewentualnych powtórnych wystąpień danego imienia): SELECT DISTINCT imie FROM autorzy; Wybranie listy unikatowych par „imię”, „nazwisko” autorów z tablicy autorzy (wyeliminowanie ewentualnych powtórnych wystąpień całej pary „imię”, „nazwisko”): SELECT DISTINCT imie, nazwisko FROM autorzy; Joanna Szłapczyńska ([email protected]) Strona 4 z 7 Przedmiot Typ zajęć Temat Bazy danych Laboratorium Język SQL – Instrukcja SELECT cz.I Uwaga: Operator DISTINCT jako jedyny potrafi porównywać wartości NULL. W związku z tym NULL może się pojawić jako jeden z unikatowych wyników zapytania w przypadku SELECT DISTINCT.... 2.5. Wykonywanie obliczeń na danych Zgodnie z założeniami elastyczności języka SQL możemy dokonywać obliczeń i zwracać ich wyniki w podobny sposób jakby stanowiły one odrębną kolumnę w tabeli, np.: SELECT imie, nazwisko, 2+2*14, CONCAT('Ala ma kota', ' i kot ma Alę') FROM autorzy; W powyższym przykładzie pokazano możliwość realizacji prostej operacji arytmetycznej. SQL wspiera m.in. następujące operatory arytmetyczne: Nawiasy ( ) Dzielenie / Mnożenie * Odejmowanie – Dodawanie + Możliwe jest również odwoływanie się do wartości danej kolumny w rekordzie, np.: SELECT cena AS CENA_NETTO, cena*1.22 AS CENA_BRUTTO FROM ksiazki; W przypadku stosowania wyrażeń w zapytaniach SELECT przydatnym jest mechanizm nadawania własnych nazw (aliasów) kolumnom za pomocą specyfikatora AS (patrz przykład powyżej). 2.6. Składnia zapytania SELECT SELECT [DISTINCT] <lista pól lub wyrażeń do pobrania> [FROM <lista tabel> ] [klauzula WHERE ] [klauzula GROUP BY ] [klauzula HAVING ] Joanna Szłapczyńska ([email protected]) Strona 5 z 7 Przedmiot Typ zajęć Temat Bazy danych Laboratorium Język SQL – Instrukcja SELECT cz.I [klauzula ORDER BY ] [klauzula LIMIT ]; Elementy składni zaznaczone jako pogrubione są obowiązkowe, natomiast wszystkie elementy zamknięte w nawiasy: [ ..... ] są elementami opcjonalnymi. Zastosowanie kolejnych klauzul instrukcji SELECT będzie omawiane w następnych rozdziałach i częściach opracowania. 2.7. Filtrowanie wyników – klauzula WHERE Klauzula WHERE instrukcji SELECT umożliwia nałożenie dodatkowych warunków na wyszukiwany zbiór danych. Dzięki temu możemy ograniczyć zbiór wyników zapytania. Składnia polecenia SELECT z klauzulą WHERE: SELECT [DISTINCT] <lista pól lub wyrażeń do pobrania> FROM <lista tabel> WHERE <wyrażenie warunkowe>; Przykład: Wybranie imion i nazwisk tych autorów, którzy posiadają tytuł naukowy „dr”: SELECT imie, nazwisko FROM autorzy WHERE tytul_naukowy = 'dr'; Operatory porównania obsługiwane przez klauzulę WHERE: równy = różny <> IS NULL IS NOT NULL mniejszy < większy > Podstawowe operatory logiczne obsługiwane przez klauzulę WHERE: iloczyn logiczny AND (i) suma logiczna OR (lub) negacja NOT Joanna Szłapczyńska ([email protected]) Strona 6 z 7 Przedmiot Typ zajęć Temat Bazy danych Laboratorium Język SQL – Instrukcja SELECT cz.I Przykład: Wybranie imion, nazwisk i tytułów naukowych tych autorów, którzy posiadają jakiś tytuł naukowy (inny niż NULL) oraz których ID jest większe od 3: SELECT imie, nazwisko, tytul_naukowy FROM autorzy WHERE tytul_naukowy IS NOT NULL AND id > 3; 3. Ćwiczenia 1. Wyświetl imiona, nazwiska i wiek tych autorów, którzy mają co najmniej 40 lat. 2. Wyświetl tytuły i ceny netto książek dla których cena netto jest niższa niż 50 zł. Przyjmij założenie, że cena zapisana w bazie to cena brutto (VAT 22%). 3. Wyświetl listę miast – siedzib wydawnictw. Dane miasto na liście może pojawiać się tylko raz. 4. Wyświetl listę nazw wydawnictw z siedzibą w Warszawie. Joanna Szłapczyńska ([email protected]) Strona 7 z 7