Mệnh đề WHERE trong SQLite Mệnh đề WHERE trong SQLite được sử dụng để xác định một điều kiện trong khi lấy dữ liệu từ bảng đơn hoặc nhiều bảng kết hợp.. Nếu điều kiện đã cho được thỏa m
Trang 1Mệnh đề WHERE trong SQLite
Mệnh đề WHERE trong SQLite được sử dụng để xác định một điều kiện trong khi lấy dữ
liệu từ bảng đơn hoặc nhiều bảng kết hợp
Nếu điều kiện đã cho được thỏa mãn, thì nó chỉ trả về các giá trị cụ thể từ bảng đó Bạn sẽ
sử dụng mệnh đề WHERE để lọc các bản ghi và chỉ lấy các bản ghi cần thiết
Mệnh đề WHERE không chỉ được sử dụng trong lệnh SELECT, mà nó còn được sử dụng
trong các lệnh UPDATE, DELETE, …, sẽ được trình bày trong các chương tiếp theo
Cú pháp
Cú pháp cơ bản của lệnh SELECT với mệnh đề WHERE trong SQLite như sau:
SELECT column1, column2, columnN FROM table_name WHERE [condition]
Ví dụ
Bạn có thể xác định một điều kiện bởi sử dụng các Toán tử so sánh và toán tử logic như
>, <, =, LIKE, NOT, Các ví dụ dưới đây sẽ giúp bạn hiểu rõ khái niệm này Bạn theo dõi
bảng COMPANY có các bản ghi sau:
ID NAME AGE ADDRESS SALARY - -
- - - Paul 32
California 20000.0 Allen 25 Texas 15000.0
Teddy 23 Norway 20000.0 Mark 25
Rich-Mond 65000.0 David 27 Texas 85000.0
Kim 22 South-Hall 45000.0 James 24
Houston 10000.0 Các ví dụ đơn giản này minh họa cách sử dụng của toán tử logic trong SQLite Lệnh SELECT sau liệt kê tất cả bản ghi có AGE lớn hơn hoặc bằng 25 VÀ salary lớn hơn hoặc bằng 65000 sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000; ID
NAME AGE ADDRESS SALARY - - -
5 David 27 Texas 85000.0
Lệnh SELECT sau liệt kê tất cả bản ghi có AGE lớn hoặc hoặc bằng 25 HOẶC salary lớn
hơn hoặc bằng 65000
Trang 2sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000; ID
NAME AGE ADDRESS SALARY - - -
- - Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 Mark
25 Rich-Mond 65000.0 David 27 Texas
85000.0 Lệnh SELECT sau liệt kê tất cả bản ghi có AGE là NOT NULL sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL; ID NAME
AGE ADDRESS SALARY - - - -
- Paul 32 California 20000.0
Allen 25 Texas 15000.0 Teddy 23
Norway 20000.0 Mark 25 Rich-Mond 65000.0
David 27 Texas 85000.0 Kim 22
South-Hall 45000.0 James 24 Houston 10000.0 Lệnh SELECT sau liệt kê tất cả bản ghi có NAME bắt đầu với 'Ki', và không quan tâm đến đằng sau nó là gì sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%'; ID NAME
AGE ADDRESS SALARY - - - -
- Kim 22 South-Hall 45000.0 Lệnh SELECT sau liệt kê tất cả bản ghi có NAME bắt đầu với 'Ki', và không quan tâm đến đằng sau nó là gì (Có thể với ví dụ này bạn không nhận thấy sự khác nhau giữa LIKE và GLOB, nhưng thực chất với LIKE là không phân biệt kiểu chữ còn với GLOB là phân biệt kiểu chữ.) sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*'; ID NAME
AGE ADDRESS SALARY - - - -
- Kim 22 South-Hall 45000.0 Lệnh SELECT sau liệt kê tất cả bản ghi có giá trị AGE hoặc là 25 hoặc là 27: sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 ); ID NAME
AGE ADDRESS SALARY - - - -
- Allen 25 Texas 15000.0
Mark 25 Rich-Mond 65000.0 David 27
Texas 85000.0 Lệnh SELECT sau liệt kê tất cả bản ghi có giá trị AGE không là 25 và không là 27: sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 ); ID NAME
AGE ADDRESS SALARY - - - -
- Paul 32 California 20000.0
Trang 3Teddy 23 Norway 20000.0 Kim 22
South-Hall 45000.0 James 24 Houston 10000.0
Lệnh SELECT sau liệt kê tất cả bản ghi có giá trị AGE trong khoảng 25 và 27:
sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27; ID NAME AGE ADDRESS SALARY - - - -
Mark 25 Rich-Mond 65000.0 David 27
Texas 85000.0
Lệnh SELECT sau sử dụng truy vấn con trong SQL, trong đó truy vấn con này tìm tất cả bản ghi với trường AGE có SALARY > 65000 và sau đó mệnh đề WHERE được sử dụng cùng với toán tử EXISTS để liệt kê tất cả các bản ghi có AGE từ truy vấn bên ngoài tồn tại trong kết quả được trả về bởi truy vấn con:
sqlite> SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000); AGE - 32 25 23 25 27 22 24
Lệnh SELECT sau sử dụng truy vấn con trong SQL, trong đó truy vấn con này tìm tất cả bản ghi với trường AGE có SALARY > 65000 và sau đó mệnh đề WHERE được sử dụng cùng với toán tử > để liệt kê tất cả bản ghi có AGE từ truy vấn bên ngoài mà lớn hơn AGE trong kết quả được trả về bởi truy vấn con:
sqlite> SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY
WHERE SALARY > 65000); ID NAME AGE ADDRESS SALARY
32 California 20000.0