kurs_dla_software_developer_odc3.pdf

(373 KB) Pobierz
416440334 UNPDF
Operatory
Budując zapytania do bazy danych Oracle możemy korzystać z operatorów
które pozwalają porównywać, wykonywać operacje, łączenia i porównania
wartości.
Operatory arytmetyczne
Pozwalają wykonywać operacje matematyczne na wartościach. Należą do
nich:
+ , -, *, /
Operator konkatenacji
||
Operator ten służy do łączenia dwu wartości tekstowych.
Operatory porównań
>, >=, =, <, <=, <>, !=
Operator zakresu
x [NOT] BETWEEN y AND z
Operator ten sprawdza, czy wartość x mieści [nie mieści] się w przedziale
domkniętym <y,z>
Operator przynależności do listy
x [NOT] IN (x1, x2, ..., xn)
Operator ten sprawdza, czy wartość x znajduje [nie znajduje ] się na liście
wartości x1, x2, ..., xn.
Operator wzorca
x [NOT] LIKE y
Operator ten sprawdza, czy wartość napisu x przystaje [nie przystaje] do
maski y. Podczas definiowania maski możemy korzystać ze znaków
specjalnych: „%” zastępuje dowolną ilość dowolnych znaków, natomiast „_”
zastępuje dokładnie jeden dowolny znak.
Operator testowania wartości
x IS [NOT] NULL
Operator ten sprawdza, czy x zawiera [nie zawiera] wartości NULL.
Operatory logiczne
NOT, AND, OR
Operatory te służą do nadawania więcej niż jednego warunku w zapytaniu.
Każde wyrażenie arytmetyczne zawierające choć jeden składnik lub czynnik z
wartością pustą produkuje pusty wynik.
Poniżej przedstawiam zestawienie możliwych wartości i wyniki przez nie
produkowane.
TRUE
AND
NULL =>
NULL
FALSE
AND
NULL =>
FALSE
TRUE OR
NULL =>
TRUE
FALSE OR
NULL =>
NULL
I o co tu chodzi? Już śpieszę wyjaśnić :) Z lekcji matematyki w szkole
podstawowej (logika matematyczna) wiemy że aby zostało spełnione
równanie posiadające warunek „oraz” / „i” muszą zostać spełnione obie
strony równania. Jeśli mamy równanie z warunkiem „lub” wystarczy że
zostanie spełniona choćby jedna strona równania by całe równanie zostało
spełnione. Czyli jeżeli Marysia pojedzie autobusem lub pociągiem to i tak
dojedzie na miejsce. W tym wypadku mogą też zostać spełnione oba
warunki: pojechała pociągiem, ale ponieważ złapał ją kanar przesiadła się do
autobusu. Mogą zostać spełnione oba warunki, lub przynajmniej jeden z nich.
W powyższej tabelce występują również wartości NULL w wyniku, które w
tym przypadku oznaczają tyle co „nie wiem”. Dla „and” czyli „oraz” / „i” wiemy
przykładowo , że została spełniona pierwsza część równania ale nie wiemy
czy została spełniona druga część, to nie jesteśmy w stanie odpowiedzieć
czy to równanie zostało spełnione czy nie. W drugim przypadku z tabeli
wiemy że jedna strona równania nie została spełniona, a więc niezależnie od
wyniku drugiej części całe równianie nie zostanie spełnione. Dlatego
wynikiem jest FALSE a nie NULL. W trzecim przykładzie z tabeli wiemy że
została spełniona pierwsza część równania. Ponieważ jest to „OR” a nie
„AND” to jest to warunek wystarczający do spełnienia równania niezależnie
od wyniku drugiej części. W czwartym przykładzie nie została spełniona
pierwsza część równania, więc wszystko zależy od drugiej części co do której
wyniku nie możemy określić. Odpowiedzią na całe równanie jest więc „nie
wiem” czyli NULL.
Teraz przełóżmy to na SQL. Często zdarzają się sytuacje gdzie musimy
pobrać wiersze które spełnią dwa warunki lub przynajmniej jeden z dwóch.
Przykładowo – musimy wyświetlić nazwiska tych pracowników którzy
zarabiają więcej niż 5000, a jednocześnie pracują w departamencie „IT”.
Mechanizm działania jest identyczny jak w matematyce. Może okazać się że
jakiś pracownik zarabia więcej niż 5000 ale nie jest podane w jakim pracuje
departamencie. Jeśli zastosujemy zapytanie z AND – jego nazwisko nie
zostanie wyświetlone. Jeśli z OR – zostanie wyświetlone ponieważ
przynajmniej jeden warunek został spełniony. Ten podrozdział warto
przestudiować dokładnie, ponieważ tego typu zapytania będą zdarzały się
często w dalszej części kursu ( i w praktyce ). Jeśli czegoś nie rozumiesz,
poświęć parę minut i przeczytaj to jeszcze raz. Jeśli nadal nie będziesz
czegoś rozumiał(a) po prostu napisz do mnie maila :)
Priorytety operatorów
Składowe złożonych wyrażeń łączone są ze sobą w kolejności zależnej od
priorytetów operatorów. W przypadku operatorów o tym samym priorytecie
łączenie następuje od lewej strony do prawej.
Domyślną kolejność łączenia można zmienić przy pomocy nawiasów
(wszystko jak w matematyce).
Poniżej znajdują się operatory uszeregowane w wiersze według priorytetu
łączenia, od największego do najmniejszego.
*, /, NOT
+, -, ||
1. <, <=, =, >=, >, <>, !=, IS , IN , BETWEEN , LIKE
AND
OR
Filtrowanie wierszy
Filtrowanie z użyciem operatorów
Wyniki zapytań możemy filtrować poprzez spełnienie warunków przez
poszczególne rekordy wyniku. Filtrowanie wykonuje się poprzez
zastosowanie słowa WHERE.
Najprostszy przykład:
W wyniku tego zapytania zostaną wyświetlone tylko departamenty których
kod lokacji jest równy 1700.
416440334.001.png
Zgłoś jeśli naruszono regulamin