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ừ một bảng hoặc nhiều bảng.
Nếu điều kiện đã cho được thỏa mãn, có nghĩa là đúng, thì nó trả về giá trị cụ thể từ bảng. Bạn sẽ phải 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 câu lệnh SELECT
mà còn được sử dụng trong câu lệnh UPDATE
, DELETE
, v.v., sẽ được đề cập trong các bài tiếp theo.
1. Cú pháp của mệnh đề WHERE trong lệnh SELECT
Sau đây là cú pháp cơ bản của câu lệnh SELECT
trong SQLite
với mệnh đề WHERE
.
1
2
3
|
SELECT column1, column2, columnN FROM table_name WHERE [condition] |
2. Ví dụ của mệnh đề WHERE trong SQLite
Bạn có thể chỉ định một điều kiện bằng cách sử dụng toán tử so sánh hoặc logic (xem chi tiết tại bài học toán tử trong SQLite) như >
, <
, =
, LIKE
, NOT
, v.v. Giả sử chúng ta có bảng COMPANY
với các bản ghi sau:
1
2
3
4
5
6
7
8
9
|
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 |
Ví dụ đơn giản sau đây cho thấy việc sử dụng các toán tử logic trong SQLite
. Câu lệnh SELECT
sau đây sẽ liệt kê tất cả các bản ghi trong đó age
lớn hơn hoặc bằng 25 và salary
hơn hoặc bằng 65000,00
1
2
3
4
5
6
|
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 |
Câu lệnh SELECT
sau đây sẽ liệt kê tất cả các bản ghi trong đó age
lớn hơn hoặc bằng 25 hoặc salary
lớn hơn hoặc bằng 65000,00.
1
2
3
4
5
6
7
8
|
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 |
Câu lệnh SELECT
sau đây sẽ liệt kê tất cả các bản ghi trong đó age
không phải là NULL, kết quả trả về sẽ là tất cả các bản ghi trong bảng COMPANY
vì không có bản ghi nào có age
bằng NULL.
1
2
3
4
5
6
7
8
9
10
11
|
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 |
Câu lệnh SELECT
sau đây sẽ liệt kê tất cả các bản ghi có name
bắt đầu bằng ‘Ki’ và không cần biết bấy cứ ký tự gì ở sau ‘Ki’.
1
2
3
4
5
|
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*' ; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0 |
Câu lệnh SELECT
sau đây sẽ liệt kê tất cả các bản ghi trong đó giá trị age
là 25 hoặc 27
1
2
3
4
5
6
7
8
|
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 |
Câu lệnh SELECT
sau đây sẽ liệt kê tất cả các bản ghi trong đó giá trị age
nằm trong khoảng giữa giá trị 25 và 27.
1
2
3
4
5
6
7
|
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 |
Câu lệnh SELECT
sau đây sử dụng truy vấn con (sub-query) trong SQLite
, trong đó truy vấn con (sub-query) này tìm tất cả bản ghi với trường age
có salary
> 65000 và sau đó mệnh đề WHERE
bên ngoài đượ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 (sub-query):
1
2
3
4
5
6
7
8
9
10
11
12
|
sqlite> SELECT AGE FROM COMPANY WHERE EXISTS ( SELECT AGE FROM COMPANY WHERE SALARY > 65000); AGE ---------- 32 25 23 25 27 22 24 |
Câu SELECT
sau đây sử dụng truy vấn con trong SQLite
, 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
bên ngoài đượ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:
1
2
3
4
5
6
|
sqlite> SELECT * FROM COMPANY WHERE AGE > ( SELECT AGE FROM COMPANY WHERE SALARY > 65000); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 |
——————-#####——————-
Loạt bài SQLite được biên dịch từ TutorialsPoint.
Theo:freetuts.net