Chúng tôi đã 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, đó là những lúc chúng tôi muốn hạn chế kết quả truy vấn trong một điều kiện cụ thể. Mệnh đề WHERE của SQL có ích trong các tình huống 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 như sau.
SELECT * FROM tableName WHERE condition;
ĐÂY
- "SELECT * FROM tableName" là câu lệnh CHỌN tiêu chuẩn
- "WHERE" là từ khóa giới hạn tập kết quả truy vấn đã chọn của chúng tôi và "condition" là bộ lọc được áp dụng cho kết quả. Bộ lọc có thể là một phạm vi, giá trị đơn 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 tôi muốn nhận thông tin cá nhân của thành viên từ bảng thành viên với số thành viên số 1, chúng tôi sẽ sử dụng tập lệnh sau để đạt được điều đó.
SELECT * FROM `members` WHERE `membership_number` = 1;
Thực thi đoạn script trên trong bàn làm việc của MySQL 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 | 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 - Toán tử AND logic
Mệnh đề WHERE khi được sử dụng cùng với toán tử logic AND, chỉ được thực thi nếu TẤT CẢ các tiêu chí lọc được chỉ định đượ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ó một danh sách tất cả các bộ phim trong thể loại 2 được phát hành năm 2008, chúng ta sẽ sử dụng kịch bản hiển thị dưới đây để đạt được điều đó.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với "myflixdb" 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 - OR Toán tử logic
Mệnh đề WHERE khi được sử dụng cùng với toán tử OR, chỉ được thực thi nếu bất kỳ hoặc toàn bộ tiêu chí bộ lọc được chỉ định được đáp ứng.
Kịch bản sau đây có được tất cả các phim ở thể loại 1 hoặc loại 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với "myflixdb" 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 Keyword
Mệnh đề WHERE 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. IN giúp giảm số mệnh đề HOẶC bạn có thể phải sử dụng
Truy vấn sau đây cung cấp các hàng trong đó Member_number là 1, 2 hoặc 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với "myflixdb" tạo ra các 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 - NOT IN trong 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 trong đó Member_number KHÔNG phải là 1, 2 hoặc 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với "myflixdb" tạo ra các 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 - HOẠT ĐỘNG SO SÁNH
Có thể sử dụng các toán tử so sánh nhỏ hơn (), bằng (=), không bằng () với mệnh đề Where
= Bằng với
Kịch bản sau đây nhận được 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.
SELECT * FROM `members` WHERE `gender` = 'Female';
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với "myflixdb" tạo ra các 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
Tập lệnh sau nhận được tất cả các khoản thanh toán lớn hơn 2.000 từ bảng thanh toán.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với "myflixdb" tạo ra các kết quả sau.
<> Không bằng
Kịch bản sau đây nhận được tất cả các phim có id thể loại không phải là 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với "myflixdb" 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 của SQL được sử dụng để hạn chế số lượng hàng bị ảnh hưởng bởi truy vấn CHỌN, CẬP NHẬT hoặc XÓA.
- Mệnh đề WHERE có thể được sử dụng cùng 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 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ử rằng chúng tôi muốn có một danh sách các phim đã thuê mà chưa được trả lại đúng hạn vào ngày 25/06/2012. Chúng ta có thể sử dụng mệnh đề WHERE cùng với toán tử so sánh và toán tử logic logic để đạ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 bàn làm việc của MySQL cho kết quả như sau.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |
Đăng nhận xét