Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite WHERE
để xác định điều kiện tìm kiếm cho các hàng được trả về bởi truy vấn.
Giới thiệu về SQLite WHERE
mệnh đề
WHERE
mệnh đề là một mệnh đề tùy chọn của SELECT
tuyên bố. Nó xuất hiện sau FROM
mệnh đề như câu sau:
SELECT
column_list
FROM
table
WHERE
search_condition;
Code language: SQL (Structured Query Language) (sql)
Trong ví dụ này, bạn thêm một WHERE
mệnh đề SELECT
câu lệnh để lọc các hàng được trả về bởi truy vấn. Khi đánh giá một SELECT
câu lệnh với WHERE
mệnh đề SQLite sử dụng các bước sau:
- Đầu tiên, hãy kiểm tra bảng trong
FROM
mệnh đề. - Thứ hai, đánh giá các điều kiện trong
WHERE
để lấy các hàng đáp ứng các điều kiện này. - Thứ ba, tạo bộ kết quả cuối cùng dựa trên các hàng ở bước trước với các cột trong
SELECT
mệnh đề.
Điều kiện tìm kiếm trong WHERE
có dạng sau:
left_expression COMPARISON_OPERATOR right_expression
Code language: SQL (Structured Query Language) (sql)
Ví dụ:bạn có thể tạo điều kiện tìm kiếm như sau:
WHERE column_1 = 100;
WHERE column_2 IN (1,2,3);
WHERE column_3 LIKE 'An%';
WHERE column_4 BETWEEN 10 AND 20;
Code language: SQL (Structured Query Language) (sql)
Bên cạnh SELECT
, bạn có thể sử dụng WHERE
trong UPDATE
và DELETE
tuyên bố.
Toán tử so sánh SQLite
Toán tử so sánh kiểm tra xem hai biểu thức có giống nhau không. Bảng sau minh họa các toán tử so sánh mà bạn có thể sử dụng để xây dựng biểu thức:
Nhà điều hànhÝ nghĩa | |
---|---|
= | Bằng |
<> hoặc! = | Không bằng |
< | Ít hơn |
> | Lớn hơn |
<= | Nhỏ hơn hoặc bằng |
> = | Lớn hơn hoặc bằng |
Toán tử logic SQLite
Các toán tử logic cho phép bạn kiểm tra độ đúng của một số biểu thức. Một toán tử logic trả về giá trị 1, 0 hoặc NULL.
Lưu ý rằng SQLite không cung cấp kiểu dữ liệu Boolean, do đó 1 có nghĩa là TRUE và 0 có nghĩa là FALSE.
Bảng sau minh họa các toán tử logic của SQLite:
Nhà điều hànhÝ nghĩa | |
---|---|
TẤT CẢ | trả về 1 nếu tất cả các biểu thức là 1. |
VÀ | trả về 1 nếu cả hai biểu thức là 1 và 0 nếu một trong các biểu thức là 0. |
BẤT KỲ | trả về 1 nếu bất kỳ một trong số các phép so sánh là 1. |
GIỮA | trả về 1 nếu giá trị nằm trong một phạm vi. |
TỒN TẠI | trả về 1 nếu truy vấn con chứa bất kỳ hàng nào. |
TRONG | trả về 1 nếu một giá trị nằm trong danh sách các giá trị. |
THÍCH | trả về 1 nếu một giá trị khớp với một mẫu |
KHÔNG | đảo ngược giá trị của các toán tử khác như KHÔNG TỒN TẠI, KHÔNG VÀO, KHÔNG GIỮA, v.v. |
HOẶC | trả về true nếu một trong hai biểu thức là 1 |
SQLite WHERE
ví dụ mệnh đề
Chúng tôi sẽ sử dụng tracks
trong cơ sở dữ liệu mẫu để minh họa cách sử dụng WHERE
mệnh đề.
Toán tử bình đẳng (=
) là toán tử được sử dụng phổ biến nhất. Ví dụ:truy vấn sau sử dụng WHERE
mệnh đề toán tử bình đẳng để tìm tất cả các bản nhạc trong album id 1:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
SQLite so sánh các giá trị được lưu trữ trong AlbumId
cột có giá trị chữ 1
để kiểm tra xem chúng có bằng nhau không. Chỉ những hàng thỏa mãn điều kiện mới được trả về.
Khi bạn so sánh hai giá trị, bạn phải đảm bảo rằng chúng là cùng một kiểu dữ liệu. Bạn nên so sánh số với số, chuỗi với chuỗi, v.v.
Trong trường hợp bạn so sánh các giá trị trong các kiểu dữ liệu khác nhau, ví dụ:một chuỗi với một số, SQLite phải thực hiện chuyển đổi kiểu dữ liệu ngầm định, nhưng nói chung, bạn nên tránh làm điều này.
Bạn sử dụng toán tử logic để kết hợp các biểu thức. Ví dụ:để nhận các bản nhạc của album 1 có độ dài lớn hơn 200.000 mili giây, bạn sử dụng câu lệnh sau:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Câu lệnh sử dụng hai biểu thức albumid = 1
và milliseconds > 250000
. Nó sử dụng AND
toán tử logic để kết hợp các biểu thức này.
SQLite WHERE
mệnh đề với LIKE
ví dụ toán tử
Đôi khi, bạn có thể không nhớ chính xác dữ liệu mà bạn muốn tìm kiếm. Trong trường hợp này, bạn thực hiện tìm kiếm không chính xác bằng LIKE
nhà điều hành.
Ví dụ:để tìm bản nhạc nào do Smith sáng tác, bạn sử dụng LIKE
toán tử như sau:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Bạn nhận được các bản nhạc do R.A. Smith-Diesel, Adrian Smith, v.v.
SQLite WHERE
mệnh đề với IN
ví dụ toán tử
IN
toán tử cho phép bạn kiểm tra xem một giá trị có nằm trong danh sách các giá trị được phân tách bằng dấu phẩy hay không. Ví dụ:để tìm các bản nhạc có id loại phương tiện là 2 hoặc 3, bạn sử dụng IN
toán tử như được hiển thị trong câu lệnh sau:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Trong hướng dẫn này, bạn đã học cách sử dụng SQLite WHERE
mệnh đề để lọc các hàng trong tập kết quả cuối cùng bằng cách sử dụng các toán tử so sánh và lôgic.