Mệnh đề WHERE trong MySQL là gì?
Mệnh đề WHERE trong MySQL là một từ khóa được sử dụng để chỉ định tiêu chí chính xác của dữ liệu hoặc các hàng sẽ bị ảnh hưởng bởi câu lệnh SQL được chỉ định. Mệnh đề WHERE có thể được sử dụng với các câu lệnh SQL như INSERT, UPDATE, SELECT và DELETE để lọc các bản ghi và thực hiện các thao tác khác nhau trên dữ liệu.
Chúng ta đã xem xét cách truy vấn dữ liệu từ cơ sở dữ liệu bằng cách sử dụng câu lệnh SELECT trong hướng dẫn trước. Câu lệnh SELECT trả về tất cả các kết quả từ bảng cơ sở dữ liệu được truy vấn.
Tuy nhiên, chúng là những lúc chúng ta muốn giới hạn kết quả truy vấn trong một điều kiện cụ thể. Mệnh đề WHERE trong SQL rất hữu ích trong những trường hợp như vậy.

Mệnh đề WHERE Cú pháp
Cú pháp cơ bản cho mệnh đề WHERE khi được sử dụng trong câu lệnh SELECT WHERE trong MySQL như sau.
SELECT * FROM tableName WHERE condition;
ĐÂY
- "SELECT * FROM tableName" là câu lệnh SELECT tiêu chuẩn
- "WHERE" là từ khóa hạn chế tập kết quả truy vấn đã chọn của chúng tôi và "điều kiện" là bộ lọc được áp dụng trên các kết quả. Bộ lọc có thể là một phạm vi, một giá trị hoặc truy vấn phụ.
Bây giờ chúng ta hãy xem xét một ví dụ thực tế .
Giả sử chúng ta muốn lấy thông tin cá nhân của một thành viên từ bảng thành viên với số thành viên là 1, chúng ta sẽ sử dụng đoạn mã sau để đạt được điều đó.
SELECT * FROM `members` WHERE `membership_number` = 1;
Thực thi tập lệnh trên trong MySQL workbench trên "myflixdb" sẽ tạo ra các kết quả sau.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
Mệnh đề WHERE kết hợp với - AND LOGICAL Operator
Điều kiện WHERE trong MySQL khi được sử dụng cùng với toán tử logic AND, chỉ được thực thi nếu đáp ứng TẤT CẢ các tiêu chí bộ lọc được chỉ định. Bây giờ chúng ta hãy xem xét một ví dụ thực tế - Giả sử chúng ta muốn có được danh sách tất cả các bộ phim thuộc thể loại 2 đã được phát hành vào năm 2008, chúng ta sẽ sử dụng kịch bản dưới đây để đạt được điều đó.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Thực thi tập lệnh trên trong bàn làm việc MySQL với "myflixdb" sẽ tạo ra các kết quả sau.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Mệnh đề WHERE kết hợp với - HOẶC Toán tử LOGICAL
Mệnh đề WHERE khi được sử dụng cùng với toán tử OR, chỉ được thực thi nếu đáp ứng bất kỳ hoặc toàn bộ tiêu chí bộ lọc được chỉ định. Kịch bản sau đây lấy tất cả các phim ở thể loại 1 hoặc thể loại 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Thực thi tập lệnh trên trong bàn làm việc MySQL với "myflixdb" sẽ tạo ra các kết quả sau.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Mệnh đề WHERE kết hợp với - IN Từ khóa
Mệnh đề WHERE trong MySQL, khi được sử dụng cùng với từ khóa IN chỉ ảnh hưởng đến các hàng có giá trị khớp với danh sách các giá trị được cung cấp trong từ khóa IN. Câu lệnh MySQL IN giúp giảm số lượng mệnh đề OR mà bạn có thể phải sử dụng. Truy vấn WHERE IN của MySQL sau đây cung cấp các hàng có số lượng thành viên là 1, 2 hoặc 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Thực thi tập lệnh trên trong bàn làm việc MySQL với "myflixdb" sẽ tạo ra các kết quả sau.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
Mệnh đề WHERE kết hợp với - NOT IN Keyword
Mệnh đề WHERE khi được sử dụng cùng với từ khóa NOT IN KHÔNG ảnh hưởng đến các hàng có giá trị khớp với danh sách các giá trị được cung cấp trong từ khóa NOT IN. Truy vấn sau cung cấp các hàng mà số thành viên KHÔNG phải là 1, 2 hoặc 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Thực thi tập lệnh trên trong bàn làm việc MySQL với "myflixdb" sẽ tạo ra các kết quả sau.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Mệnh đề WHERE kết hợp với - Toán tử SO SÁNH
Các toán tử so sánh nhỏ hơn (), bằng (=), không bằng () có thể được sử dụng với Mệnh đề WHERE= Bằng
Tập lệnh sau lấy tất cả các thành viên nữ từ bảng thành viên bằng cách sử dụng toán tử so sánh ngang bằng.SELECT * FROM `members` WHERE `gender` = 'Female';
Thực thi tập lệnh trên trong bàn làm việc MySQL với "myflixdb" sẽ tạo ra các kết quả sau.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Lớn hơn
Tập lệnh sau nhận tất cả các khoản thanh toán lớn hơn 2.000 từ bảng thanh toán. CHỌN * TỪ `thanh toán` WHERE` số tiền đã thanh toán`> 2000; Thực thi tập lệnh trên trong bàn làm việc MySQL với "myflixdb" sẽ tạo ra các kết quả sau.payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
<> Không bằng
Tập lệnh sau nhận tất cả các phim có id danh mục không phải là 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Thực thi tập lệnh trên trong bàn làm việc MySQL với "myflixdb" sẽ tạo ra các kết quả sau.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
Tóm lược
- Mệnh đề WHERE trong SQL được sử dụng để hạn chế số hàng bị ảnh hưởng bởi truy vấn CHỌN, CẬP NHẬT hoặc XÓA.
- Điều kiện WHERE trong SQL có thể được sử dụng kết hợp với các toán tử logic như AND và OR, các toán tử so sánh như, =, v.v.
- Khi được sử dụng với toán tử logic AND, tất cả các tiêu chí phải được đáp ứng.
- Khi được sử dụng với toán tử logic OR, bất kỳ tiêu chí nào phải được đáp ứng.
- Từ khóa IN được sử dụng để chọn các hàng phù hợp với danh sách các giá trị.
Brain Teaser Giả sử rằng chúng ta muốn lấy danh sách các phim đã thuê chưa được trả lại đúng hạn 25/06/2012. Chúng ta có thể sử dụng mệnh đề câu lệnh SQL WHERE cùng với toán tử so sánh nhỏ hơn và toán tử logic AND để đạt được điều đó.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Thực thi tập lệnh trên trong MySQL workbench cho kết quả sau.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |