banner
vote

Warunki rozbudowane - operacja SELECT.. WHERE

W kursie początkującym poznaliśmy już zapytanie SELECT oraz jego rozszerzenie o klauzulę WHERE. Tutaj, postaramy się rozszerzyć naszą wiedzę o inne operatory porównania używane w tej klauzuli.
Operatory AND, OR, NOT
Dzięki nim możemy stworzyć złożone warunki logiczne. Są to odpowiedniki matematycznej koniunkcji, alternatywy i negacji.
  • AND - oba warunki muszą być spełnione
  • OR - wystarczy, że jeden będzie spełniony
  • NOT - negacja warunku
SELECT kolumna,kolumna,.. FROM tabela
WHERE NOT kolumna=wartość AND kolumna=wartość OR kolumna=wartość
Możliwe jest również używanie nawiasów w warunkach. Operatory w nawiasach są wykonywane jako pierwsze a następnie ich wynik jest przekazywany po za nawias.
PRZYKŁAD
Wybieramy dane użytkownika który ma na imię Katarzyna i mieszka w Lublinie
Tabela Customer :
id
name
city
date
1
Adam
Lublin
2011-02-05
2
Monika
Gdynia
2011-02-19
3
Natalia
Zakopane
2011-02-23
4
Katarzyna
Lublin
2011-03-08
5
Marcin
Warszawa
2011-03-21
zapytanie : SELECT id,name,city,date FROM customer WHERE name='Adam' AND city='Lublin'
Wynik zapytania :
id
name
city
date
1
Adam
Lublin
2011-02-05
ĆWICZENIE
Wybierz wszystkie dane produktów z tabeli Product, których cena jest większa od 25 lub liczba sztuk jest nie mniejsza niż 5
Tabela Product :
id
name
price
amount
date
5
Spodnie
100
5
2011-02-01
6
Bluza
60
2
2011-02-12
Wpisz zapytanie do bazy :
Zobacz jak powinno wyglądać zapytanie
SELECT id,name,price,amount,date FROM product WHERE price>25 OR amount >=5

Operator LIKE
Umożliwia przeszukiwanie danych tekstowych na podstawie wzorca podanego w klauzuli warunkowej. Może być to zarówno dokładny ciąg poszukiwanych znaków jak i wyrażenie stworzone przy pomocy następujących symboli:
  • Symbol % zastępuje dowolny ciąg znaków
  • Symbol _ zastępuje dowolny pojedynczy znak
SELECT kolumna,kolumna,.. FROM tabela
WHERE kolumna LIKE 'wyrażenie'
PRZYKŁAD
Wybieramy dane użytkownika których imię rozpoczyna się literą M
Tabela Customer :
id
name
city
date
1
Adam
Lublin
2011-02-05
2
Monika
Gdynia
2011-02-19
3
Natalia
Zakopane
2011-02-23
4
Katarzyna
Lublin
2011-03-08
5
Marcin
Warszawa
2011-03-21
zapytanie : SELECT id,name,city,date FROM customer WHERE name LIKE 'M%'
Wynik zapytania :
id
name
city
date
2
Monika
Gdynia
2011-02-19
5
Marcin
Warszawa
2011-03-21
ĆWICZENIE
Wybierz id, nazwę i cenę produktów z tabeli Product które zawierają w nazwie literę "a" i których cena jest liczbą niecałkowitą
Tabela Product :
id
name
price
amount
date
5
Spodnie
100
5
2011-02-01
6
Bluza
60
2
2011-02-12
Wpisz zapytanie do bazy :
Zobacz jak powinno wyglądać zapytanie
SELECT id,name,price FROM product WHERE name LIKE '%a%' AND price LIKE '%.%'

Operator IN
Operator IN sprawdza czy wartości z kolumny znajdują się w zbiorze podanym zaraz bo klauzuli IN.
SELECT kolumna,kolumna,.. FROM tabela
WHERE kolumna IN (element zb.,element zb.,..)
PRZYKŁAD
Wybieramy nazwy i ceny produktów których cena wynosi 45 lub 10 lub 25
Tabela Product :
id
name
price
amount
date
5
Spodnie
100
5
2011-02-01
6
Bluza
60
2
2011-02-12
zapytanie : SELECT name,price FROM product WHERE price IN (45,10,25)
Wynik zapytania :
name
price
Hustka
10
Kurtka
45
T-shirt
25
ĆWICZENIE
Wybierz nazwę, cenę i ilość produktów z tabeli Product, których ilość to 3,4,5 lub 6
Tabela Product :
id
name
price
amount
date
5
Spodnie
100
5
2011-02-01
6
Bluza
60
2
2011-02-12
Wpisz zapytanie do bazy :
Zobacz jak powinno wyglądać zapytanie
SELECT name,price,amount FROM product WHERE amount IN (3,4,5,6)

Operator BETWEEN
Operator BETWEEN sprawdza czy wartości z kolumny znajdują się w przedziale podanym zaraz po klauzuli BETWEEN.
SELECT kolumna,kolumna,.. FROM tabela
WHERE kolumna BEETWEEN wartość1 AND wartość2
PRZYKŁAD
Wybieramy nazwę i cenę produktów których cena należy do przedziału 40 do 60
Tabela Product :
id
name
price
amount
date
5
Spodnie
100
5
2011-02-01
6
Bluza
60
2
2011-02-12
zapytanie : SELECT name,price FROM product WHERE price BETWEEN 40 AND 60
Wynik zapytania :
name
price
Kurtka
45
Bluza
60
Koszula
49.5

Operator IS NULL
Umożliwia wybranie rekordów ze względu na nieprzypisaną wartość w jednej z jego kolumn.
SELECT kolumna,kolumna,.. FROM tabela WHERE kolumna IS NULL