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

Podobne dokumenty