Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử AND
trong MySQL để kết hợp nhiều biểu thức Boolean để lọc dữ liệu.
MySQL không có kiểu Boolean tích hợp sẵn. Thay vào đó, nó sử dụng số 0 là FALSE và các giá trị khác 0 là TRUE.
Toán tử AND
là một toán tử logic kết hợp hai hoặc nhiều biểu thức Boolean và trả về 1, 0 hoặc NULL:
A AND B
Trong biểu thức này, A và B được gọi là toán hạng. Chúng có thể là các giá trị hoặc biểu thức theo nghĩa đen.
Toán tử logic AND trả về 1 nếu cả A và B đều khác 0 và không phải NULL. Nó trả về 0 nếu một trong hai toán hạng bằng 0; nếu không, nó trả về NULL.
Toán tử logic AND trả về 1 nếu cả A và B đều khác 0 và NOT NULL. Ví dụ:
SELECT 1 AND 1;
Đầu ra:
+---------+
| 1 AND 1 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
Toán tử logic AND trả về 0 nếu A hoặc B bằng 0 hoặc cả A và B bằng 0:
SELECT 1 AND 0, 0 AND 1, 0 AND 0, 0 AND NULL;
Đầu ra:
+---------+---------+---------+------------+
| 1 AND 0 | 0 AND 1 | 0 AND 0 | 0 AND NULL |
+---------+---------+---------+------------+
| 0 | 0 | 0 | 0 |
+---------+---------+---------+------------+
1 row in set (0.00 sec)
Toán tử logic AND trả về NULL nếu toán hạng khác 0 hoặc cả hai toán hạng đều NULL.
SELECT 1 AND NULL, NULL AND NULL;
Đầu ra:
+------------+---------------+
| 1 AND NULL | NULL AND NULL |
+------------+---------------+
| NULL | NULL |
+------------+---------------+
1 row in set (0.00 sec)
Bảng sau minh họa kết quả của AND
toán tử khi kết hợp true, false và null.
TRUE | FALSE | NULL | |
---|---|---|---|
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
Trong thực tế, bạn sẽ sử dụng toán tử AND
trong mệnh đề WHERE
của câu lệnh SELECT
, UPDATE
và DELETE
để tạo thành một điều kiện. Ngoài ra, bạn có thể toán tử AND
trong các điều kiện của mệnh đề INNER JOIN
và LEFT JOIN
.
Khi đánh giá một biểu thức có chứa toán tử AND
, MySQL ngừng đánh giá các phần còn lại của biểu thức ngay khi nó có thể xác định kết quả.
Đây được gọi là đánh giá ngắn mạch. Nói cách khác, toán tử AND
bị ngắt mạch. Ví dụ:
SELECT 1 = 0 AND 1 / 0 ;
Đầu ra:
+-----------------+
| 1 = 0 AND 1 / 0 |
+-----------------+
| 0 |
+-----------------+
1 row in set (0.01 sec)
Trong ví dụ này, MySQL chỉ đánh giá phần đầu tiên 1 = 0
của biểu thức 1 = 0 AND 1 / 0
.
Vì biểu thức 1 = 0
trả về 0 nên MySQL có thể xác định kết quả của toàn bộ biểu thức là 0.
Do đó, MySQL không cần đánh giá phần còn lại của biểu thức, đó là 1/0
; nó sẽ đưa ra lỗi chia cho 0.
Hãy sử dụng bảng customers
trong cơ sở dữ liệu mẫu để minh họa.
Câu lệnh sau sử dụng toán tử AND
để tìm khách hàng ở California (CA), Hoa Kỳ:
SELECT
customername,
country,
state
FROM
customers
WHERE
country = 'USA' AND
state = 'CA';
Đầu ra:
+------------------------------+---------+-------+
| customername | country | state |
+------------------------------+---------+-------+
| Mini Gifts Distributors Ltd. | USA | CA |
| Mini Wheels Co. | USA | CA |
| Technics Stores Inc. | USA | CA |
| Toys4GrownUps.com | USA | CA |
| Boards & Toys Co. | USA | CA |
| Collectable Mini Designs Co. | USA | CA |
| Corporate Gift Ideas Co. | USA | CA |
| Men 'R' US Retailers, Ltd. | USA | CA |
| The Sharp Gifts Warehouse | USA | CA |
| West Coast Collectables Co. | USA | CA |
| Signal Collectibles Ltd. | USA | CA |
+------------------------------+---------+-------+
11 rows in set (0.00 sec)
Bằng cách sử dụng toán tử AND
, bạn có thể kết hợp nhiều hơn hai biểu thức Boolean. Ví dụ: truy vấn sau đây trả về những khách hàng sống ở California, Hoa Kỳ và có hạn mức tín dụng lớn hơn 100K.
SELECT
customername,
country,
state,
creditlimit
FROM
customers
WHERE
country = 'USA' AND
state = 'CA' AND
creditlimit > 100000;
Đầu ra:
+------------------------------+---------+-------+-------------+
| customername | country | state | creditlimit |
+------------------------------+---------+-------+-------------+
| Mini Gifts Distributors Ltd. | USA | CA | 210500.00 |
| Collectable Mini Designs Co. | USA | CA | 105000.00 |
| Corporate Gift Ideas Co. | USA | CA | 105000.00 |
+------------------------------+---------+-------+-------------+
3 rows in set (0.00 sec)
AND
để kết hợp hai biểu thức Boolean. Toán tử AND
trả về true khi cả hai biểu thức đều đúng; nếu không, nó trả về false.AND
để tạo thành các điều kiện trong mệnh đề WHERE
của câu lệnh SELECT
, UPDATE
, DELETE
.Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử MySQL IS NULLđể kiểm tra xem một giá trị có NULL hay không.
Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh UPDATE JOIN trong MySQL để thực hiện cập nhật bảng chéo.
Trong hướng dẫn này, bạn sẽ học cách sử dụng mệnh đề LIMIT trong MySQL để hạn chế số hàng được trả về bởi một truy vấn.
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử LIKE trong MySQL để truy vấn dữ liệu dựa trên một mẫu được chỉ định.