Hướng dẫn này là một phần của loạt bài Tìm hiểu Truy vấn SQL Cơ bản Sử dụng MySQL. Trong hướng dẫn trước, chúng ta đã thảo luận về các truy vấn SQL để tìm nạp các hàng hoặc đọc dữ liệu từ một bảng trong MySQL. Lệnh SELECT trả về tất cả các hàng trong bảng trừ khi chúng ta chỉ định giới hạn như được hiển thị trong các ví dụ hướng dẫn trước. Trong một số tình huống, chúng ta cần lọc các hàng kết quả để có được các hàng giới hạn đáp ứng các điều kiện nhất định. Chúng ta có thể lọc các hàng bằng mệnh đề WHERE bằng cách chỉ định điều kiện lọc. Chúng tôi cũng có thể chỉ định nhiều điều kiện bằng cách sử dụng các từ khóa VÀ, HOẶC.
Mệnh đề ở đâu
WHERE mệnh đề có thể được sử dụng để đọc các hàng đã lọc từ một bảng dựa trên các điều kiện đã cho. Trong trường hợp bạn đăng nhập từ xa vào cơ sở dữ liệu, bạn cũng sẽ cần đặc quyền CHỌN cho bảng để đọc các hàng từ bảng.
# SELECT - Syntax - WHERE
SELECT column_1,column_2,... FROM table_name WHERE <single or multiple conditions>;
Giải thích Truy vấn
Lệnh MySQL SELECT có thể được sử dụng để đọc các hàng hoặc dữ liệu từ tên bảng đã cho trong đó biểu thức chọn và tên của bảng là bắt buộc.
Chúng ta có thể lọc tập hợp truy vấn kết quả được trả về bởi truy vấn chọn bằng mệnh đề WHERE. Chúng ta có thể chỉ định một hoặc nhiều điều kiện để lọc kết quả. Các từ khóa VÀ và HOẶC có thể được sử dụng để áp dụng nhiều điều kiện. Chúng tôi cũng có thể sử dụng các từ khóa IN và KHÔNG VÀO để hạn chế các giá trị cột trong một tập hợp các giá trị.
Các nhà khai thác
Chúng tôi có thể sử dụng các toán tử được liệt kê dưới đây để thực hiện so sánh trong khi áp dụng các điều kiện lọc. Việc so sánh sẽ được thực hiện bằng cách sử dụng giá trị đã cho và các giá trị được lưu trữ trong cột bảng.
= Nó có thể được sử dụng để kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không.
! = Nó kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không.
> Nó kiểm tra xem giá trị của toán hạng bên trái có lớn hơn giá trị của toán hạng bên phải hay không.
< Nó kiểm tra xem giá trị của toán hạng bên trái có nhỏ hơn giá trị của toán hạng bên phải hay không.
> = Nó kiểm tra xem giá trị của toán hạng bên trái lớn hơn hoặc bằng giá trị của toán hạng bên phải.
<= Nó kiểm tra xem giá trị của toán hạng bên trái nhỏ hơn hoặc bằng giá trị của toán hạng bên phải.
Ví dụ
Phần này cung cấp các ví dụ để đọc dữ liệu đã lọc từ bảng bằng cách sử dụng CHỌN lệnh với WHERE mệnh đề. Sử dụng truy vấn được đề cập bên dưới để tạo bảng người dùng có các cột id, tên và họ để lưu trữ dữ liệu người dùng.
# Create the User Table
CREATE TABLE `user` (
`user_id` bigint(20) NOT NULL,
`first_name` varchar(45),
`last_name` varchar(45)
);
Truy vấn được đề cập bên dưới có thể được sử dụng để chèn dữ liệu vào bảng người dùng.
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`) VALUES
( 1, 'John', 'Smith' ),
( 2, 'Rick', 'Jones' ),
( 3, 'Catherine', 'Ponting' ),
( 4, 'Harsh', 'Upadhyay' ),
( 5, 'Tajwinder', 'Singh' ),
( 6, 'Leo', NULL ),
( 7, 'Leo', 'Murphy' ),
( 8, 'Ram', 'Choudhary' ),
( 9, 'Nicole', NULL ),
( 10, 'Ram', 'Choudhary' );
Truy vấn đề cập ở trên sẽ chèn 10 hàng trong bảng có id, tên và họ để đại diện cho 10 người dùng khác nhau.
Bây giờ chúng ta sẽ đọc dữ liệu đã lọc được chúng ta chèn vào bảng người dùng. Nó có thể được thực hiện bằng cách sử dụng lệnh SELECT như hình dưới đây.
# Filter - WHERE - Read all rows having first name set to Leo
SELECT * FROM `user` WHERE `first_name` = 'Leo';
# Result
6 Leo
7 Leo Murphy
# Filter - WHERE - AND - Read all rows having first name set to Leo and last name set to Murphy
SELECT * FROM `user` WHERE `first_name` = 'Leo' AND `last_name` = 'Murphy';
# Result
7 Leo Murphy
# Filter - WHERE - IS NOT - Read all rows having last name without NULL values
SELECT * FROM `user` WHERE `last_name` IS NOT NULL;
# Result
1 John Smith
2 Rick Jones
3 Catherine Ponting
4 Harsh Upadhyay
5 Tajwinder Singh
7 Leo Murphy
8 Ram Choudhary
10 Ram Choudhary
# Filter - WHERE - OR, IN - Read all rows having first name is either John or Harsh
SELECT * FROM `user` WHERE `first_name` = 'John' OR `first_name` = 'Harsh';
SELECT * FROM `user` WHERE `first_name` IN ( 'John', 'Harsh' );
# Result
1 John Smith
4 Harsh Upadhyay
Các truy vấn được đề cập ở trên thực hiện các hoạt động lọc khác nhau trên s tring các giá trị sử dụng một hoặc nhiều điều kiện. Đảm bảo sử dụng các dấu ngoặc kép trong khi áp dụng bộ lọc cho các cột có kiểu dữ liệu chuỗi.
# Filter - WHERE - Read all rows having id lesser than 5
SELECT * FROM `user` WHERE `user_id` < 5;
# Result
1 John Smith
2 Rick Jones
3 Catherine Ponting
4 Harsh Upadhyay
# Filter - WHERE - LIMIT - Read all rows having id lesser than 5
SELECT * FROM `user` WHERE `user_id` < 5 LIMIT 2;
# Result
1 John Smith
2 Rick Jones
# Filter - WHERE - AND - Read all rows having id greater than 3 and lesser than 6
SELECT * FROM `user` WHERE `user_id` > 3 AND `user_id` < 6;
# Result
4 Harsh Upadhyay
5 Tajwinder Singh
Các truy vấn được đề cập ở trên áp dụng các điều kiện cho kiểu dữ liệu số. Chúng tôi cũng có thể kết hợp các loại giá trị khác nhau như được hiển thị bên dưới.
# Filter - WHERE - AND - Read all rows having first name set to Harsh, id greater than 2 and lesser than 5
SELECT * FROM `user` WHERE `first_name` = 'Harsh' AND `user_id` > 3 AND `user_id` < 6;
# Result
4 Harsh Upadhyay
Đây là cách chúng ta có thể đọc dữ liệu đã lọc được lưu trữ trong các bảng MySQL bằng mệnh đề WHERE.