MySQL Mệnh đề WHERE: AND, OR, IN, NOT IN Ví dụ truy vấn

Mệnh đề WHERE trong MySQL?

đÂU khoản in 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 nhiều thao tác khác nhau trên dữ liệu.

Chúng tôi đã xem xét cách truy vấn dữ liệu từ mộ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ả kết quả từ bảng cơ sở dữ liệu được truy vấn.

Tuy nhiên, đó là những lúc chúng ta muốn giới hạn kết quả truy vấn ở một điều kiện cụ thể. Mệnh đề WHERE trong SQL rất hữu ích trong những tình huống như vậy.

mệnh đề WHERE trong MySQL
mệnh đề WHERE trong MySQL

Cú pháp mệnh đề WHERE

Cú pháp cơ bản của mệnh đề WHERE khi sử dụng trong một MySQL Câu lệnh SELECT WHERE như sau.

SELECT * FROM tableName WHERE condition;

tại ĐÂY

  • “CHỌN * TỪ tên bảng” là tiêu chuẩn Câu lệnh SELECT
  • "Ở ĐÂU" là từ khóa hạn chế tập kết quả truy vấn chọn lọc của chúng tôi và "tình trạng" là bộ lọc được áp dụng trên 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 nhìn vào 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 có số thành viên là 1, chúng ta sẽ sử dụng đoạn mã sau để thực hiện điều đó.

SELECT * FROM `members` WHERE `membership_number` = 1;

Thực thi đoạn script trên trong MySQL bàn làm việc trên “myflixdb” sẽ tạo ra kết quả sau.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

Mệnh đề WHERE kết hợp với – HỢP LÝ Operator

Điều kiện WHERE trong MySQL khi sử dụng cùng với toán tử logic AND, chỉ được thực hiện nếu TẤT CẢ các tiêu chí lọc được chỉ định đều được đáp ứng.

Bây giờ chúng ta hãy xem một ví dụ thực tế - Giả sử chúng ta muốn có danh sách tất cả các phim thuộc danh mục 2 được phát hành vào năm 2008, chúng ta sẽ sử dụng tập lệnh hiển thị bên dưới để đạt được điều đó.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Thực thi đoạn script trên trong MySQL workbench so với “myflixdb” tạo ra 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 – OR HỢP LÝ Operator

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í lọc đã chỉ định.
Đoạn mã sau đây lấy tất cả các phim trong thể loại 1 hoặc thể loại 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Thực thi đoạn script trên trong MySQL workbench so với “myflixdb” tạo ra 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

Ở ĐÂU trong MySQL mệnh đề, 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ác MySQL Câu lệnh IN giúp giảm số lượng mệnh đề OR mà bạn có thể phải sử dụng.
Sau đây MySQL Truy vấn WHERE IN cung cấp các hàng có số thành viên là 1, 2 hoặc 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Thực thi đoạn script trên trong MySQL workbench so với “myflixdb” tạo ra kết quả sau.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

Mệnh đề WHERE kết hợp với – KHÔNG VÀO Từ khóa

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 đây cung cấp các hàng mà membership_number KHÔNG phải là 1, 2 hoặc 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Thực thi đoạn script trên trong MySQL workbench so với “myflixdb” tạo ra kết quả sau.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Mệnh đề WHERE kết hợp với – SO SÁNH Operaxoắn

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

= Tương đương với

Đoạn mã sau đây 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 bằng.
SELECT * FROM `members` WHERE `gender` = 'Female';

Thực thi đoạn script trên trong MySQL workbench so với “myflixdb” tạo ra kết quả sau.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Lớn hơn

Đoạn mã sau đây sẽ lấy 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` Ở ĐÂU `số tiền_đã thanh toán` > 2000;
Thực thi đoạn script trên trong MySQL workbench so với “myflixdb” tạo ra 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

Đoạn mã sau sẽ lấy 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 đoạn script trên trong MySQL workbench so với “myflixdb” tạo ra 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ổng kết

  • Mệnh đề SQL WHERE được sử dụng để hạn chế số lượng hàng bị ảnh hưởng bởi lệnh SELECT, UPDATE hoặc XÓA truy vấn.
  • Đ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 sử dụng với AND toán tử logic, 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 cũng phải được đáp ứng.
  • Từ khóa IN được sử dụng để chọn các hàng khớp với danh sách các giá trị.

Teaser não

Giả sử chúng ta muốn lấy danh sách các phim đã thuê chưa được trả lại đúng thời 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 đoạn script trên trong MySQL workbench đưa ra 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