Toán tử AND trong MySQL

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.

Giới thiệu về toán tử AND của MySQL

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 ANDtoán tử khi kết hợp true, false và null.

TRUEFALSENULL
TRUETRUEFALSENULL
FALSEFALSEFALSEFALSE
NULLNULLFALSENULL

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, UPDATEDELETE để 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 JOINLEFT 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.

Ví dụ về toán tử AND trong MySQL

Hãy sử dụng bảng customers trong cơ sở dữ liệu mẫu để minh họa.

Ví dụ về toán tử AND trong MySQL

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)

Tóm lược

  • Sử dụng toán tử 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.
  • Sử dụng toán tử AND để tạo thành các điều kiện trong mệnh đề WHERE của câu lệnh SELECT, UPDATE, DELETE.
MySQL
Bài Viết Liên Quan:
Toán Tử IS NULL Trong MySQL
Nụ Nguyễn 01/04/2022
Toán Tử IS NULL Trong MySQL

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.

Câu lệnh UPDATE JOIN trong MySQL
Trung Nguyen 06/03/2022
Câu lệnh UPDATE JOIN trong MySQL

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.

Mệnh đề LIMIT trong MySQL
Trung Nguyen 05/03/2022
Mệnh đề LIMIT trong MySQL

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.

Toán tử LIKE trong MySQL
Trung Nguyen 04/03/2022
Toán tử LIKE trong MySQL

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.