1
Podstawowe cechy języka SQL
●
Tworzenie bazy danych i struktur relacji
●
Manipulowanie danymi
–
Dodawanie
–
Modyfikacja danych
–
Usuwanie danych z relacji
●
Wydobywanie informacji
●
Prosty w opanowaniu
●
Zgodność z określonym standardem
2
Własności SQL
●
Język nieproceduralny
–
Użytkownik opisuje informację, której potrzebuje
–
Nie podaje sposobu uzyskania tej informacji
●
Składnia języka SQL dopuszcza umieszczanie poleceń w
różnych miejscach
●
Polecenie składa się z typowych słów języka angielskiego:
CREATE, SELECT, INSERT itp.
CREATE TABLE Dom(id int(5), numer int(5));
●
Każdy użytkownik może utworzyć zapytanie w języku SQL
3
Formułowanie poleceń
●
Słowa
zarezerwowane
(kluczowe)
–
Niezmienna część języka
–
Ustalone znaczenie
–
Muszą być zapisane zgodnie ze składnią, nie mogą być
dzielone
●
Słowa
definiowane
przez użytkownika
–
Nazwy różnych obiektów baz danych
●
Tabele, kolumny, perspektywy
●
Słowa układane są słowa (zapytania) zgodnie z regułami
języka
●
Każde polecenie zakończone jest znacznikiem końca
zapytania: „
;
”
4
Zasady tworzenia zapytań
●
Słowa kluczowe i definiowane mogą być wpisywane wielkimi
lub małymi znakami
●
Dane występujące w bazie danych myszą być wpisywane z
zachowaniem wielkości znaków
„Kowalski” - „KOWALSKI”
●
Każde polecenie powinno rozpoczynać się od nowego wiersza
●
Początek nowej klauzuli powinien być dopasowany do
początków innych klauzul
●
Zapytanie składające się z kilku klauzul powinno być zapisane
w kilku wierszach
–
Stosowanie wcięć dla podkreślenia zależności klauzul
5
Nazewnictwo
●
Wielkie litery stosujemy przy wpisywaniu słów kluczowych
●
Nazwę relacji rozpoczynamy od wielkiej litery – nazwa relacji
zapisana jest w liczbie pojedynczej
Personel, Biuro
●
Jeżeli nazwa relacji składa się z kilku członów, każdy człon
rozpoczynamy od wielkiej litery
WlascicielPrywatny
●
Nazwy atrybutów rozpoczynamy z małej litery
●
Jeżeli nazwa atrybutu składa się z kilku członów, drugi i następne
człony rozpoczynamy z litery wielkiej
biuroNr, kodPocztowy
●
W nazwach relacji oraz atrybutów staramy się nie używać znaków
charakterystycznych dla danego języka
●
Maksymalna długość identyfikatora wynosi 128 znaków
6
Cudzysłów
●
Jeżeli nazwa zawiera spacje należy zastosować
ograniczone identyfikatory
–
Wesoły domek – błąd niejednoznaczne określenie
nazwy
–
”Wesoły domek” - poprawnie
●
Jeżeli nazwa zawiera w sobie cudzysłów należy
zastosować podwójny znak ”
–
Wesoły”Domek – błąd
–
Wesoły””Domek – poprawnie
●
Należy unikać spacji oraz cudzysłowów w nazwach
7
Apostrofy
●
Apostrofy służą do określania literałów łańcuchowych
●
Stosowane przy dokonywaniu operacji na ciągach
znaków
Mały domek – błąd
'Mały domek' – poprawnie
●
Jeżeli ciąg znaków zawiera apostrof należy poprzedzić
go drugim znakiem apostrofa
Mały'domek
'Mały
'
'
domek'
●
Należy unikać stosowania apostrofów w literałach
8
Zapytania
●
Zapytanie SELECT służy do wyszukiwania danych z
jednej lub wielu tabel
SELECT
[
DISTINCT
|
ALL
] {
*
|
kolumna
[
AS nowa_nazwa
][
, ...
] }
FROM NazwaTabeli
[
alias
] [
, ...
]
[
WHERE
warunek_selekcji_wierszy
]
[
GROUP BYlista_kolumn
] [
HAVING warunek_selekcji_grup
]
[
ORDERED BY lista_kolumn
]
●
Porządek elementów zapytania SELECT musi być
zachowany – nie można go zmieniać
●
Wynikiem działania zapytania jest również relacja
9
Kolejność przetwarzania
określa tabelę lub zbiór tabel
GROUP BY
określa uporządkowanie wyniku
FROM
WHERE
pozwala wybrać wiersze spełniające zda-
ny warunek korzystać
tworzy grupy wierszy o tej samej wartości
wskazanej kolumny
HAVING
pozwala wybrać grupy ze względu na po-
dany warunek selekcji grup
SELECT
Wskazuje, które grupy powinny znaleźć
się w wyniku
ORDERED BY
10
11
Wyszukiwanie wszystkich wierszy
Podaj wszystkie dane wszystkich pracowników
SELECT pracownikNr, imie, nazwisko, stanowisko, plec,
dataUr, pensja, biuroNr
FROM Personel;
SELECT *
FROM Personel;
12
Wyszukiwanie wybranych kolumn
●
Aby wybrać dane odpowiadające wybranym atrybutom
po klauzuli
SELECT
należy podać nazwy kolumn
SELECT pracownikNr, imie, nazwisko, pensja
FROM Personel;
●
Kolejność kolumn określona jest przez kolejność pojawienia
się po słowie SELECT
●
Kolejność wyświetlanych encji (wierszy) odpowiada
kolejności wprowadzania informacji
13
Eliminacja powtórzeń
●
Polecenie SELECT nie eliminuje
powtórzeń
SELECT nieruchomoscNr
FROM Wizyta;
SELECT DISTINCT
nieruchomoscNr
FROM Wizyta;
14
Pola wyliczane
●
Na liście SELECT może pojawić się pole wyliczane
–
Dowolne wyrażenie arytmetyczny
–
Nawiasy określające kolejność działań
–
W kolumnie wyliczanej może wystąpić więcej niż
jedna kolumna z tabeli
●
Kolumny muszą mieć typ liczbowy
●
Nazwa kolumny wyliczanej określana jest przez SZBD
–
Nadanie własnej nazwy dla kolumny wyliczanej
wymaga zastosowania klauzuli
AS
15
Klauzula AS
SELECT pracownikNr, imie, nazwisko, pensja/12
FROM Personel;
SELECT pracownikNr, imie, nazwisko, pensja/12 AS
„Pensja Miesięczna”
FROM Personel;
16
Klauzula WHERE
●
Klauzula WHERE służy do ograniczania ilości
wyników (operator selekcji)
●
Po słowie kluczowym następuje warunek selekcji
–
Porównanie
●
Porównanie wartości dwóch wyrażeń
–
Sprawdzenie zakresu
●
Polega na sprawdzeniu, czy zadana wartość należy do
wskazanego zakresu
–
Przynależność do zbioru
●
Element należy do wskazanego zbioru
–
Wartość pusta
●
Sprawdza czy kolumna zawiera wartość null
17
Porównanie
●
Porównując dwie wartości możemy skorzystać z
następujących operatorów
–
Wartość wyrażenia obliczana jest od lewej do prawej
–
W pierwszej kolejności obliczane są wyrażenia w nawiasach
–
NOT ma wyższy priorytet niż AND i OR
–
AND jest obliczane przed OR
=
równe
<>
różne
!=
różne
<
mniejsze niż
<=
mniejsze lub równe
>
większe niż
>=
większe lub równe
AND iloczyn logiczny
OR
suma logiczna
NOT przeczenie
18
Przykłady
●
Podaj adresy wszystkich biur znajdujących się w
Londynie lub Glasgow
●
SELECT * FROM Biuro WHERE miasto = 'Londyn' OR
miasto = 'Glasgow';
●
Podaj wszystkich pracowników mających pensje
pomiędzy 2000 a 3000 zł
●
SELECT pracownikNr, imie, nazwisko, stanowisko,
pensja FROM Personel WHERE pensja >= 2000 AND
pensja <= 3000;
19
BETWEEN
●
Operator BETWEEN służy do definiowania przedziału
zamkniętego
●
SELECT pracownik, imie, nazwisko, stanowisko,
pensja FROM Personel WHERE pensja BETWEEN
2000 AND 3000;
●
Negacja operatora BETWEEN
●
SELECT pracownik, imie, nazwisko, stanowisko,
pensja FROM Personel WHERE pensja
NOT
BETWEEN 2000 AND 3000;
–
WHERE pensja < 2000 OR pensja > 3000;
20
IN – NOT IN
●
Operator IN pozwala na sprawdzenie czy wartość danego
atrybutu należy do określonego zbioru
●
Podaj informacje na temat wszystkich kierowników i
dyrektorów
●
SELECT * FROM Personel WHERE stanowisko IN
('kierownik','dyrektor');
●
Operator IN stosowany jest dla zbiorów o wielu
elementach
●
Zbiór może być utworzony przez inne zapytanie SQL
–
Zgodność dziedzin atrybutu i zbioru wynikowego
●
Operator NOT IN
–
Wszystkie elementy nie należące do wskazanego zbioru
21
Dopasowanie do wzorca
●
Atrybuty przechowujące dane w postaci ciągu znaków
–
Wyszukiwanie według określonego wzorca
–
Operator LIKE lub NOT LIKE
–
Znaki zastępcze
%
oraz
_
(
*, ? - Microsoft
)
–
%
dopasowuje jeden lub wiele znaków
●
Pusty ciąg znaków
–
_
dopasowuje dokładnie jeden znak
●
Jeżeli szukany ciąg znaków zawiera jeden ze znaków
specjalnych należy zastosować klauzulę ESCAPE
22
Działanie operatora LIKE
●
Jeśli dopasowywana wartość, wzorzec lub znak
zdefiniowany w ESCAPE są typu NULL, wynik
porównania przyjmuje status nieokreślony
●
Jeśli dopasowywana wartość i wzorzec są łańcuchami o
zerowej długości wynikiem TRUE
●
Jeśli dopasowywana wartość może zostać podzielona na
takie segmenty, że każdy segment będzie równy
wzorcowi lub reprezentowany we wzorcu za pomocą
symboli specjalnych wynikiem jest TRUE
–
Segmenty i symbole mają taką samą kolejność we
wzorcu, jak w pasujących segmentach
●
W przeciwnym przypadku wartością porównania jest
FALSE
23
Działanie operatora LIKE
●
Dopasowywana wartość nie jest wypełniana ani obcinana
●
Jeżeli wzorzec jest podłańcuchem należy umieścić znak
%
na
początku lub/i na końcu wzorca
●
Operator
LIKE
nie dopasowuje końcowych spacji chyba że
umieścimy symbol
%
–
LIKE 'H%' - pierwszym znakiem musi być litera H
–
LIKE 'H_ _ _ _' - dokładnie cztery znaki pierwsza litera H
–
LIKE '%e' – dowolny ciąg znaków zakończony literą e
–
LIKE '%Glasgow' – dowolny ciąg znaków o dowolnej
długości zawierających słowo Glasgow
–
NOT LIKE 'H%' - pierwszym słowem nie może być H
24
Działanie operatora LIKE - ESCAPE
●
Znaleźć ciąg znaków '
15%
'
–
Wymaga zastosowania znaku zdejmującego
znaczenie specjalne
●
LIKE '
15
#
%
' ESCAPE '
#
'
●
TRUE
–
'
Mały_Domek
' LIKE '%
ły
#
_Dom
%' ESCAPE '
#
'
●
FALSE
–
'
Mały_Domek
' LIKE '%
ły
#
_Domek
' ESCAPE '
#
'
●
UNKNOWN (nieokreślony)
–
'
Mały_Domek
' LIKE '%
ły
#
_Dom
%' ESCAPE NULL
25
Ograniczanie wyników zapytań
●
Jeżeli relacja zawiera dużą liczbę rekordów zapytanie
SELECT
zwróci dużą liczbę krotek
●
Liczbę zwracanych krotek ogranicza się za pomocą
klauzuli
LIMIT
SELECT * FROM Personel LIMIT 20;
●
Zapytanie zwróci pierwszych 20 rekordów relacji
Personel
SELECT * FROM Personel LIMIT 20, 10;
●
Zapytanie zwróci 10 rekordów po pominięciu
pierwszych 20 rekordów