poniedziałek, 24 września 2018

SQLite – Klauzula WHERE


SQLite – Klauzula WHERE

SQLite klauzula  WHERE służy do określenia warunku podczas pobierania danych z jednej tabeli lub wielu tabel.
Jeśli podany warunek jest spełniony, oznacza wartość true, wówczas zwraca określoną wartość z tabeli. Będziesz musiał użyć klauzuli WHERE, aby przefiltrować rekordy i pobrać tylko niezbędne zapisy.
Klauzula WHERE jest używana nie tylko w instrukcji SELECT, ale jest również używana w instrukcji UPDATE, DELETE itp., która zostanie omówiona w kolejnych rozdziałach.
Składnia
Poniżej znajduje się podstawowa składnia instrukcji SQLite SELECT z klauzulą ​​WHERE.
SELECT kolumna1, kolumna2, kolumnaN
FROM nazwa_tabeli
WHERE [warunek]

Przykład
Możesz określić warunek za pomocą polecenia Comparision lub Operatory logiczne, operatorów porównania lub logicznych takich jak >, <, =, LIKE, NOT, itp. Rozważ tabelę PRACOWNICY z następującymi rekordami:
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
1           Adam        32          Warszawa    2000.0
2           Piotr       25          Piaseczno   1500.0
3           Tomasz      23          Grodzisk    2000.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0
6           Katarzyna   22          Warszawa    4500.0
7           Jan         24          Kraków      4500.0

Oto proste przykłady pokazujące użycie operatorów logicznych SQLite. Następująca instrukcja SELECT wyświetla wszystkie rekordy, gdzie wiek jest większy lub równy 25 i pensja jest większa lub równa 6500.
sqlite> select * from pracownik where wiek >= 25 and pensja >= 6500;
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0

Po instrukcji SELECT wyszczególniane są wszystkie rekordy, w których wiek jest większy lub równy 25 lub jest większy lub równy 6500.
sqlite> select * from pracownik where wiek >= 25 or pensja >= 6500;
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
1           Adam        32          Warszawa    2000.0
2           Piotr       25          Piaseczno   1500.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0

Polecenie SELECT wyświetla listę wszystkich rekordów, w których wiek nie ma wartości NULL, co oznacza wszystkie rekordy, ponieważ żaden z rekordów nie ma wartości równej NULL.
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
1           Adam        32          Warszawa    2000.0
2           Piotr       25          Piaseczno   1500.0
3           Tomasz      23          Grodzisk    2000.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0
6           Katarzyna   22          Warszawa    4500.0
7           Jan         24          Kraków      4500.0

Polecenie SELECT wyświetla listę wszystkich rekordów, w których nazwisko zaczyna się od "Ma", ​​nie ma znaczenia, co znajduję się po "Ma".
sqlite> select * from pracownik where nazwisko like 'Ma%';
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
4           Marek       25          Płock       6500.0

Polecenie SELECT wyświetla listę wszystkich rekordów, w których nazwisko zaczyna się od "Ma", ​​nie ma znaczenia, co znajduję się po "Ma".
sqlite> SELECT * FROM PRACOWNIK WHERE NAZWISKO GLOB 'Ma*';
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
4           Marek       25          Płock       6500.0

Polecenie SELECT wyświetla listę wszystkich rekordów, w których wartość wiek wynosi 25 lub 27.
sqlite> select *  from pracownik where wiek in (25, 27);
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
2           Piotr       25          Piaseczno   1500.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0

Polecenie SELECT wyświetla listę wszystkich rekordów, w których wartość wiek nie wynosi 25 ani 27.
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
1           Adam        32          Warszawa    2000.0
3           Tomasz      23          Grodzisk    2000.0
6           Katarzyna   22          Warszawa    4500.0
7           Jan         24          Kraków      4500.0

Po poleceniu SELECT wyszczególniane są wszystkie rekordy, w których wartość wiek jest między 25 a 27.
sqlite> select * from pracownik where wiek between 25 and 27;
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
2           Piotr       25          Piaseczno   1500.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0

Instrukcja SELECT korzysta z pod-zapytania SQL, w którym pod-zapytanie znajduje wszystkie rekordy z polem WIEK gdzie PENSJA > 6500 i później klauzula WHERE jest używana wraz z operatorem EXISTS do wyświetlania wszystkich rekordów, gdzie istnieje WIEK z zapytania zewnętrznego w wyniku zwróconym przez pod-zapytanie:
sqlite> select wiek from pracownik
   where exists (select wiek from pracownik where pensja > 6500);
wiek
----------
32
25
23
25
27
22
24
Instrukcja SELECT korzysta z pod-zapytania SQL, w którym pod-zapytanie znajduje wszystkie rekordy z polem WIEK gdzie PENSJA > 6500 i później klauzula WHERE jest używana wraz z > operatorem, aby wyświetlić wszystkie rekordy, w których WIEK z zewnętrznego zapytania jest większe niż wiek w wyniku zwracany przez pod-zapytanie.
sqlite> select * from pracownik
   ...> where wiek > (select wiek from pracownik where pensja > 6500);
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
1           Adam        32          Warszawa    2000.0




Brak komentarzy:

Prześlij komentarz