SQLite - Klausa WHERE

SQLite WHERE klausa digunakan untuk menentukan kondisi saat mengambil data dari satu tabel atau beberapa tabel.

Jika kondisi yang diberikan terpenuhi, artinya benar, maka ia mengembalikan nilai spesifik dari tabel. Anda harus menggunakan klausa WHERE untuk memfilter catatan dan hanya mengambil catatan yang diperlukan.

Klausa WHERE tidak hanya digunakan dalam pernyataan SELECT, tetapi juga digunakan dalam pernyataan UPDATE, DELETE, dll., Yang akan dibahas di bab-bab berikutnya.

Sintaksis

Berikut ini adalah sintaks dasar dari pernyataan SQLite SELECT dengan klausa WHERE.

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]

Contoh

Anda dapat menentukan kondisi menggunakan Comparision atau Logical Operator seperti>, <, =, LIKE, NOT, dll. Pertimbangkan tabel COMPANY dengan record berikut -

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Berikut adalah contoh sederhana yang menunjukkan penggunaan Operator Logika SQLite. Mengikuti pernyataan SELECT mencantumkan semua catatan di mana AGE lebih besar dari atau sama dengan 25AND gaji lebih besar dari atau sama dengan 65000.00.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

Mengikuti pernyataan SELECT mencantumkan semua catatan di mana AGE lebih besar dari atau sama dengan 25 OR gaji lebih besar dari atau sama dengan 65000.00.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

Mengikuti pernyataan SELECT mencantumkan semua catatan di mana AGE bukan NULL, yang berarti semua catatan karena tidak ada catatan yang memiliki AGE sama dengan NULL.

sqlite>  SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Mengikuti pernyataan SELECT mendaftar semua record di mana NAME dimulai dengan 'Ki', tidak peduli apa yang muncul setelah 'Ki'.

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

Mengikuti pernyataan SELECT mendaftar semua record di mana NAME dimulai dengan 'Ki', tidak peduli apa yang muncul setelah 'Ki'.

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

Mengikuti pernyataan SELECT mencantumkan semua catatan di mana nilai AGE adalah 25 atau 27.

sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

Mengikuti pernyataan SELECT mencantumkan semua catatan di mana nilai AGE bukan 25 atau 27.

sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Mengikuti pernyataan SELECT mencantumkan semua catatan di mana nilai USIA berada di ANTARA 25 DAN 27.

sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

Mengikuti pernyataan SELECT menggunakan sub-query SQL, di mana sub-query menemukan semua record dengan bidang AGE yang memiliki GAJI> 65000 dan kemudian klausa WHERE digunakan bersama dengan operator EXISTS untuk mendaftar semua record di mana AGE dari query luar ada dalam hasil yang dikembalikan oleh sub-kueri -

sqlite> SELECT AGE FROM COMPANY 
   WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

AGE
----------
32
25
23
25
27
22
24

Mengikuti pernyataan SELECT menggunakan sub-query SQL di mana sub-query menemukan semua record dengan bidang AGE yang memiliki GAJI> 65000 dan kemudian klausa WHERE digunakan bersama dengan operator> untuk mendaftar semua record di mana AGE dari query luar lebih besar dari usia dalam hasil yang dikembalikan oleh sub-kueri.

sqlite> SELECT * FROM COMPANY 
   WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0