[ Pobierz całość w formacie PDF ]
informacji. Unikanie powtórzeń pozwala na łatwiejsze i w wielu przypadkach szybsze
posługiwanie się bazą danych. Mechanizmy języków stosowanych w bazach danych
pozwalają ukryć złożoność struktury bazy przed użytkownikiem i operować na danych w
sposób efektywny zapewniając spójność informacji.
49
Bazy danych Robert Chwastek
4. Warunki i wyrażenia
Warunki i wyrażenia składają się z operatorów, funkcji oraz danych, na których
działają.
4.1. Operatory
Spis wszystkich operatorów stosowanych w języku SQL podzielonych ze względu
na zastosowanie przedstawiają kolejne podrozdziały.
4.1.1. Operatory arytmetyczne
Operatory arytmetyczne działają zasadniczo na danych typu numerycznego. Jednak
niektóre z tych operatorów mogą być użyte do danych typu DATE. Spis operatorów
arytmetycznych podzielonych według priorytetu przedstawia tabela:
Operator Opis Przykład
( ) Zmienia normalną kolejność wykonywania SELECT (X+Y)/(Y+Z) ...
działań. Wszystkie działania wewnątrz
nawiasów są wykonywane przed
działaniami poza nawiasami.
+, - Operatory jednoargumentowe zachowania i ... WHERE NR = -1
zmiany znaku. ... WHERE -PLACA
*, / Mnożenie, dzielenie SELECT 2*X+1
... WHERE X > Y/2
+, - Dodawanie, odejmowanie SELECT 2*X+1
... WHERE X > Y-Z
4.1.2. Operatory znakowe
Jedynym operatorem działającym na ciągach znaków jest operator konkatenacji.
Rezultatem działania tego operatora jest ciąg znakó będący połączeniem operandów.
Należy pamiętać, że ciągi znaków typu CHAR nie mogą być dłuższe niż 255 znaków.
Ograniczenie to dotyczy również ciągu znakowego będącego wynikiem działania
operatora konkatenacji.
Operator Opis Przykład
|| Konkatenacja ciągów znaków SELECT Nazwa: || ENAME ...
50
Bazy danych Robert Chwastek
4.1.3. Operatory porównania
Operatory porównania są wykorzystywane w wyrażeniach i warunkach do
porównywania dwóch wyrażeń. Wynikiem działania operatorów porównania jest zawsze
wartość logiczna (TRUE lub FALSE).
Operator Opis Przykład
( ) Zmienia normalną kolejność ... NOT (A=1 OR B=1)
wykonywania działań
= Sprawdza, czy dwa wyrażenia są ... WHERE PLACA = 1000
równe
!=, ^=, Sprawdza, czy dwa wyrażenia są ... WHERE PLACA != 1000
różne
> Większe niż ... WHERE PLACA > 1000
>= Większe lub równe niż ... WHERE PLACA >= 1000
IN Równy dowolnemu elementowi. ... WHERE ZAWOD IN
Synonim do = ANY ( URZEDNIK , INFORMATYK )
... WHERE PLACA IN (SELECT
PLACA FROM PRAC WHERE
WYDZIAL=30)
NOT IN Różny od każdego z elementów. ... WHERE PLACA NOT IN (SELECT
Wynikiem jest FALSE jeśli PLACA FROM PRAC WHERE
dowolny element zbioru jest równy WYDZIAL=30)
NULL
Synonim do != ALL
ANY Porównuje wartość z każdą ... WHERE PLACA = ANY (SELECT
wartością ze zbioru po prawej PLACA FROM PRAC WHERE
stronie. Musi być poprzedzony WYDZIAL =30)
jednym z operatorów: =, !=, >,
=. Zwraca TRUE, jeśli
przynajmniej jeden z elementów
spełnia podany warunek.
ALL Porównuje wartość z każdą ... WHERE (PLACA, PREMIA) >=
wartością ze zbioru po prawej ALL ((14900, 300), (3000, 0))
stronie. Musi być poprzedzony
jednym z operatorów: =, !=, >,
=. Zwraca TRUE, jeśli każdy
z elementów spełnia podany
warunek.
[NOT] [Nie] większy lub równy x i ... WHERE A BETWEEN 1 AND 9
BETWEEN mniejszy lub równy y.
51
Bazy danych Robert Chwastek
x AND y
[NOT] Zwraca TRUE jeśli zapytanie [nie] ... WHERE EXISTS (SELECT PLACA
EXISTS zwraca przynajmniej jeden wiersz. FROM PRAC WHERE WYDZIAL =
30)
[NOT] [Nie] spełnia podany wzorzec. ... WHERE STAN LIKE T%
LIKE Litera % jest używana do
zapisywania dowolnego ciągu
znaków (0 lub więcej), który nie
jest równy NULL. Litera _
zastępuje dowolną pojedynczą
literę.
IS [NOT] [Nie] jest równe NULL. ... WHERE ZAWOD IS NULL
NULL
Operator NOT IN zwróci FALSE (co w przypadku klauzuli WHERE spowoduje, że
żadne wiersze nie zostaną zwrócone), jeśli choć jeden z elementów listy jest równy
NULL. Np. rozkaz:
SELECT TRUE
FROM prac
WHERE wydzial NOT IN (5, 15, NULL) ;
nie zwróci żadnych wierszy, ponieważ
wydzial NOT IN (5, 15, NULL)
zostanie rozwinięty do
wydzial != 5 AND wydzial != 15 AND wydzial != NULL
Wynikiem działania operatorów porównania i logicznych dla wartości NULL jest wartość
NULL. Dlatego też wynikiem całego opisywanego rozkazu będzie wartość NULL.
4.1.4. Operatory logiczne
Operatory logiczne służą do wykonywania obliczeń na wartościach typu logicznego
(w szczególności będących wynikiem obliczania warunków).
Operator Opis Przykład
( ) Zmienia normalną kolejność SELECT ... WHERE x = y AND (a = b
wykonywania działań OR p = q)
NOT Zaprzeczenie wyrażenia lo- ... WHERE NOT (zawod IS NULL)
gicznego
WHERE NOT (A=1)
AND Logiczne i . Wynik jest równy ... WHERE A = 1 AND B = 2
TRUE, jeśli wartości obu
operandów są równe TRUE
OR Logiczne lub . Wynike jest równy ... WHERE A = 1 OR B = 3
TRUE, jesli wartość przynajmniej
52
Bazy danych Robert Chwastek
jednego operandu jest równa
TRUE
Poniższe tabele przedstawiają wynik działania operatora AND i OR dla różnych
wartości:
AND true false null
true true false null
false false false false
null null false null
OR true false null
true true true true
false true false null
null true null null
4.1.5. Operatory mnogościowe
Operatory zbiorowe działają na wynikach zapytań lub listach wartości.
Operator Opis Przykład
UNION Unia dwóch zbiorów. Aączy dwa ... SELECT ...
zbiory, powtarzające się elementy UNION SELECT ...
występują tylko raz.
INTERSECT Część wspólna dwóch zbiorów. ... SELECT ...
Powtarzające się elementy występują INTERSECT SELECT ...
tylko raz
MINUS Oblicza różnicę dwóch zbiorów. W ... SELECT ...
wyniku umieszczane są tylko te MINUS SELECT ...
elementy, które występują w pierwszym
zbiorze i nie występują w drugim.
Elementy powtarzające się występują
tylko raz
4.2. Wyrażenia
Wyrażenie jest ciągiem jednej lub więcej wartości, operatorów lub funkcji. Wynik
obliczania wyrażenia musi być wartością. W ogólności typ wyniku zależy od typów
operandów.
Następujące przykłady pokazują wyrażenia różnych typów:
numeryczny: 2 * 2
znakowy: TO_CHAR(TRUNC(SYSDATE + 7))
53
Bazy danych Robert Chwastek
Wyrażenie może być użyte wszędzie tam, gdzie możliwe jest użycie wartości stałej, np.:
SET Nazwisko = LOWER(Nazwisko)
Istnieje pięć form wyrażeń:
kolumna, stała lub wartość specjalna
Składnia:
[table.] { column | ROWID }
text
number
sequence.CURRVAL
sequence.NEXTVAL
NULL
ROWNUM
LEVEL
SYSDATE
UID
USER
Przykłady:
pracownicy.nazwisko
10
SYSDATE
zmienna łączona z opcjonalną zmienną indykatorową
Składnia:
: { n | variable } [ :ind_variable ]
Przykłady:
:nazwisko_pracownika:nazwisko_pracownika_indykator
wywołanie funkcji
Składnia:
function_name( [DISTINCT | ALL] expr [, expr] ... )
Przykłady:
LENGTH( Kowalski )
ROUND(1234.567*82)
kombinacja wyrażeń wymienionych w poprzednich punktach
Składnia:
(expr)
+expr, -expr, PRIOR expr
expr * expr, expr / expr
expr + expr, expr - expr, expr || expr
Przykłady:
( Kowalski: || Nauczyciel )
LENGTH( Nowak ) * 57
SQRT(144) + 72
lista wyrażeń w nawiasach
Składnia:
(expr [, expr], ...)
54
Bazy danych Robert Chwastek
Przykłady:
( Kowalski , Nowak , Burzynski )
(10, 20, 40)
[ Pobierz całość w formacie PDF ]