Tablice informatyczne SQL Wydanie III.pdf
(
166 KB
)
Pobierz
SQL
STRUKTURALNY JĘZYK
ZAPYTAŃ (SQL)
SQL (ang.
Structured Query Language)
jest jednym z najpopu-
larniejszych języków programowania i najczęściej używanym
językiem w pracy z danymi. Sukces ten język SQL zawdzięcza:
• Swojej prostocie. Język SQL jest językiem deklaratywnym,
czyli zamiast krok po kroku określać, jak serwer bazo-
danowy ma wykonać określone polecenie, użytkownik
deklaruje, w języku przypominającym potoczny angiel-
ski, spodziewany wynik. W przeciwieństwie do języków
proceduralnych
SQL pozwala określić wynik, nie sposób
jego osiągnięcia.
• Wydajności i skalowalności. Serwery relacyjnych baz
danych są w stanie w czasie rzeczywistym przetwarzać
terabajty danych, o ile tylko użyte zostaną poprawne
instrukcje języka SQL. Możliwe jest to dzięki wyjąt-
kowej cesze języka SQL — w odróżnieniu od innych
języków
SQL umożliwia przetwarzanie wielu rekordów
za pomocą pojedynczej instrukcji.
Instrukcje języka
SQL przed wykonaniem są interpretowane przez ser-
wer bazodanowy. Wynikiem tej interpretacji jest plan
wykonania instrukcji, który następnie jest realizowany
przez serwer.
Wydanie III
TABLICE INFORMATYCZNE •
Marcin Szeliga
Schemat przykładowej bazy danych Northwind udostępnianej przez firmę Microsoft.
Relacyjny model baz danych
Bazą danych jest zbiór informacji o ściśle określonej struk-
turze — dane te są przechowywane w tabelach i są uzu-
pełnione o metadane (dane o samych tabelach, np. typach
ich kolumn). W modelu relacyjnym dane są przechowywane
w wielu odrębnych, ale powiązanych ze sobą tabelach —
dwuwymiarowych obiektach zbudowanych z pionowych
kolumn i poziomych wierszy, na których przecięciu umiesz-
czone są komórki.
W poszczególnych kolumnach tabeli znajdują się
zawsze dane tego samego typu (np. ceny), z kolei w po-
szczególnych wierszach znajduje się komplet informacji
o konkretnych obiektach (np. o towarze). Ważną cechą
tabeli jest to, że każdy jej rekord składa się z takiej samej
liczby pól (kolumn).
Niezbędna dla opanowania języka SQL jest umie-
jętność wyobrażenia sobie tabel jako zbiorów rekordów.
W zbiorze kolejność elementów nie ma znaczenia, a więc
kolejność wierszy i kolumn tabeli również jest bez znaczenia.
Ponadto zbiory nie zawierają kopii tego samego elemen-
tu. Ponieważ powtórzenie w tabeli tego samego rekordu
prowadzi do niespójności danych, przyjęło się dodawać do
tabeli specjalną kolumnę, w której zapisuje się identyfikatory
poszczególnych wierszy. Taka kolumna nazywa się
kluczem
podstawowym
tabeli.
•
DEFAULT
przekazuje do procedury domyślne, okre-
ślone podczas jej tworzenia wartości parametrów
wywołania;
•
WITH RECOMPILE
wymusza ponowną kompilację kodu
wywoływanej procedury lub funkcji, co wiąże się z ob-
liczeniem nowego planu jej wykonania, bazującego na
aktualnych statystykach.
Operatory logiczne
Operatory logiczne są wykorzystywane najczęściej do
łączenia warunków umieszczonych w klauzulach
WHERE
i
HAVING.
Występują trzy operatory logiczne:
• Koniunkcji (AND), zwracający wartość
1
(prawda), jeżeli
oba wyrażenia są prawdziwe. Operator
AND
jest opera-
torem dwuargumentowym. W klasycznej logice koniunk-
cja jest prawdziwa tylko wtedy, gdy oba argumenty są
prawdziwe, w pozostałych przypadkach jej wynikiem jest
fałsz. Wszystkie kombinacje parametrów tego operatora
możliwe w języku SQL zostały przedstawione poniżej.
A
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
NULL
NULL
NULL
B
TRUE
FALSE
NULL
TRUE
FALSE
NULL
TRUE
FALSE
NULL
A AND B
TRUE
FALSE
UNKNOWN
FALSE
FALSE
FALSE
UNKNOWN
FALSE
UNKNOWN
Wyrażenia
Wyrażenia są połączeniem symboli i operatorów, które repre-
zentują pojedynczą wartość. Typ reprezentowanych danych
zależy od typu elementów wyrażenia.
Zmienne
Zmienne charakteryzują się nazwą, typem i wartością. Dzięki
zmiennym możemy:
• Przechowywać wartości zwrócone przez funkcje
w celu ich późniejszego wykorzystania (w standardzie
SQL funkcjonalnym odpowiednikiem zmiennych są
podzapytania).
• Wielokrotnie wykorzystywać ten sam kod do wykonywania
operacji na różnych danych wejściowych.
Instrukcja DECLARE
Wykonanie instrukcji
DECLARE
spowoduje utworzenie
zmiennej o określonej nazwie i typie. Wartość zadeklarowanej
zmiennej domyślnie jest ustawiana na
NULL.
Składnia DECLARE
DECLARE
{{@zmienna [AS]
typ
} | [ =
wartość
] }
| {@kursor CURSOR}
| {typ_tabeli}
} [,…n]
<
typ_tabeli
> ::=
TABLE ({<
definicja_kolumny
> |
<
ograniczenie
>} [,…n]
)
Identyfikatory
Identyfikatory określające obiekty (np. tabele) i umożliwiające
odwoływanie się do przechowywanych w nich danych lub
do ich metod, zdarzeń czy właściwości muszą być zgodne
z przyjętą konwencją nazewniczą:
• Identyfikatory mogą składać się z nie więcej niż 128
znaków.
• Pierwszym znakiem identyfikatora musi być litera al-
fabetu.
• Identyfikator nie może być słowem zastrzeżonym ję-
zyka SQL.
• Identyfikator może zawierać litery, cyfry oraz symbole:
@,
#, _.
Wynika z tego, że identyfikatory nie mogą zawierać
spacji ani pozostałych symboli specjalnych.
Identyfikatory niezgodne z konwencją nazewniczą muszą
być wyróżniane za pomocą cudzysłowów lub nawiasów
kwadratowych.
Znaczniki języka
Instrukcje języka SQL zapisuje się za pomocą słów i symboli
(znaczników) o ściśle określonym znaczeniu. Znaczniki struk-
turalnego języka zapytań można podzielić na dziewięć grup.
Komentarze
Komentarze to ciągi znaków ignorowane przez kompilator.
Tekst komentarza jest wyróżniany za pomocą znaków
/* */.
Kompilator ignoruje wszystkie znaki znajdujące się między
tymi znacznikami.
Zdefiniowanym w standardzie ANSI znakiem komen-
tarza na poziomie wiersza są dwa myślniki (—
—).
Kompilator
ignoruje znaki znajdujące się po prawej stronie myślników.
Dyrektywy sterujące wykonaniem instrukcji
Serwery baz danych ignorują występujące w instrukcjach
SQL znaki końca wiersza — dla poprawy czytelności instruk-
cji przyjęło się zapisywać ich poszczególne klauzule w no-
wych wierszach. Koniec instrukcji oznacza się symbolem
;.
Do wywołania procedury składowanej służy dyrektywa
CALL.
Umożliwia ona przekazanie parametrów do wywoływa-
nej procedury i odczytanie wyniku jej działania. W serwerze
SQL Server dyrektywa
CALL
została zastąpiona dyrektywą
EXEC
(EXECUTE). Oprócz wywołania procedury umożliwia
ona wykonywanie ciągu znaków, będącego instrukcją języka
SQL (wykonywanie tworzonych dynamicznie instrukcji SQL).
Składnia EXECUTE
[[EXEC [UTE]]
{
[@zwrócony_stan_wykonania =]
{nazwa_procedury [;liczba] |
@nazwa_
procedury
}
[[@parametr =] {wartość |
@zmienna
[OUTPUT]
| [DEFAULT]]
[,…n]
[WITH RECOMPILE]
• Alternatywy (OR), zwracający wartość
1
(prawda), jeżeli
którekolwiek z wyrażeń jest prawdziwe. Operator
OR
jest
operatorem dwuargumentowym. W klasycznej logice
alternatywa jest nieprawdziwa tylko wtedy, gdy oba jej
argumenty są nieprawdziwe, w pozostałych przypadkach
wynikiem alternatywy logicznej jest prawda. Wszystkie
kombinacje parametrów tego operatora możliwe w języku
SQL zostały przedstawione poniżej.
A
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
NULL
NULL
NULL
TRUE
FALSE
NULL
TRUE
FALSE
NULL
TRUE
FALSE
NULL
B
A OR B
TRUE
TRUE
TRUE
TRUE
FALSE
UNKNOWN
TRUE
UNKNOWN
UNKNOWN
gdzie:
•
CURSOR
określa, że zmienna będzie kursorem.
Instrukcja SET
Nadaje wartość zdefiniowanej zmiennej.
Składnia SET
SET
@zmienna
=
wyrażenie
Słowa kluczowe
Słowa kluczowe są ciągami znaków mających ściśle okre-
ślone znaczenie i interpretowanych przez serwer baz danych
w sposób charakterystyczny dla słowa kluczowego. Nie-
dopuszczalne jest używanie słów kluczowych niezgodnie
z określonymi dla nich zasadami syntaktycznymi (np. w nie-
właściwej dla słowa klauzuli) oraz niezgodnie z określonymi
dla nich zasadami semantycznymi (ich znaczeniem).
Przykład SET
DECLARE @znajdź VARCHAR(30) = ‘%’
DECLATE @wynik VARCHAR(50)
SET @znajdź = ‘Fra%’
SELECT @wynik = Address
FROM Customers
WHERE CompanyName LIKE @znajdź;
Operatory
Operatory odgrywają rolę spójników języka SQL i choć
w większości przypadków mogą być zastąpione odpo-
wiednią funkcją, to ich użycie poprawia czytelność kodu
programu. Funkcja każdego operatora zależy od kontekstu
jego wystąpienia.
Operatory arytmetyczne
W języku SQL występują takie oto operatory arytmetyczne:
• iloczyn (*),
• iloraz (/),
• modulo (%),
• suma (+),
• różnica (-).
Operator ciągów znaków
Jedynym operatorem ciągów znaków jest operator konkate-
nacji
||
(w serwerze SQL Server operatorem konkatenacji
jest znak
+).
Pozostałe operacje na ciągach znaków są
przeprowadzane przez odpowiednie funkcje ciągu znaków.
Funkcje
Funkcje języka SQL można podzielić na pięć kategorii:
1. Funkcje sterujące wykonaniem programu.
2. Funkcje skalarne, które zwracają pojedynczą wartość
obliczoną na podstawie zera lub większej liczby argu-
mentów skalarnych.
3. Funkcje grupujące, które zwracają pojedynczą wartość
dla zbioru argumentów wywołania.
4. Zwracające zbiory danych funkcje tabelaryczne, do któ-
rych można się odwoływać jak do tabel, w klauzuli
FROM
instrukcji
SELECT.
5. Funkcje analityczne (funkcje rankingu), które umożliwiają
przeprowadzenie obliczeń na zbiorach wierszy powiąza-
nych z wynikiem bieżącego zapytania.
gdzie:
•
@zwrócony_stan_wykonania
jest opcjonalną zmien-
ną lokalną, przechowującą informacje o stanie wykonania
wywoływanej procedury lub funkcji;
•
@nazwa_procedury
jest nazwą zmiennej lokalnej,
przechowującej nazwę wywoływanego obiektu;
•
OUTPUT
określa, że wywoływana procedura jest funkcją
zwracającą jakąś wartość;
• Negacji (NOT), zwracający wartość
1
(prawda), jeżeli wy-
rażenie było fałszem, i
0
w przeciwnym razie. Operator
NOT
jest operatorem jednoargumentowym. W klasycznej
logice jego wynikiem jest zaprzeczenie (negacja) argu-
mentu. W języku SQL może on również zwrócić wartość
UNKNOWN.
A
TRUE
FALSE
NULL
NOT A
FALSE
TRUE
UNKNOWN
Plik z chomika:
PDFator
Inne pliki z tego folderu:
Linux Apache MySQL i PHP Zaawansowane programowanie.pdf
(359 KB)
MySQL Almanach.pdf
(262 KB)
MySQL Budowanie interfejsow uzytkownika Vademecum profesjonalisty.pdf
(212 KB)
MySQL Darmowa baza danych cwiczenia praktyczne Wydanie II.pdf
(414 KB)
MySQL cwiczenia.pdf
(197 KB)
Inne foldery tego chomika:
3ds max
Access
Acrobat
After Effects
Agile - Programowanie
Zgłoś jeśli
naruszono regulamin