MySQL - Mệnh đề WHERE
Chúng tôi đã thấy SQL SELECTlệnh để tìm nạp dữ liệu từ một bảng MySQL. Chúng ta có thể sử dụng một mệnh đề điều kiện được gọi làWHERE Clauseđể lọc ra kết quả. Sử dụng mệnh đề WHERE này, chúng ta có thể chỉ định tiêu chí lựa chọn để chọn các bản ghi cần thiết từ một bảng.
Cú pháp
Khối mã sau có cú pháp SQL chung của lệnh SELECT với mệnh đề WHERE để tìm nạp dữ liệu từ bảng MySQL:
SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
Bạn có thể sử dụng một hoặc nhiều bảng được phân tách bằng dấu phẩy để bao gồm các điều kiện khác nhau bằng mệnh đề WHERE, nhưng mệnh đề WHERE là một phần tùy chọn của lệnh SELECT.
Bạn có thể chỉ định bất kỳ điều kiện nào bằng mệnh đề WHERE.
Bạn có thể chỉ định nhiều hơn một điều kiện bằng cách sử dụng AND hoặc là OR các toán tử.
Mệnh đề WHERE cũng có thể được sử dụng cùng với lệnh DELETE hoặc UPDATE SQL để chỉ định một điều kiện.
Các WHERE mệnh đề hoạt động giống như một if conditionbằng bất kỳ ngôn ngữ lập trình nào. Mệnh đề này được sử dụng để so sánh giá trị đã cho với giá trị trường có sẵn trong bảng MySQL. Nếu giá trị đã cho từ bên ngoài bằng với giá trị trường có sẵn trong bảng MySQL, thì nó sẽ trả về hàng đó.
Đây là danh sách các toán tử, có thể được sử dụng với WHERE mệnh đề.
Giả sử trường A giữ 10 và trường B giữ 20, sau đó -
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
= | Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không, nếu có thì điều kiện trở thành true. | (A = B) là không đúng. |
! = | Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không, nếu các giá trị không bằng nhau thì điều kiện trở thành true. | (A! = B) là đúng. |
> | 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ếu có thì điều kiện trở thành true. | (A> B) không đúng. |
< | 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ếu có thì điều kiện trở thành true. | (A <B) là đúng. |
> = | Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không, nếu có thì điều kiện trở thành true. | (A> = B) là không đúng. |
<= | Kiểm tra xem giá trị của toán hạng bên trái có nhỏ hơn hoặc bằng giá trị của toán hạng bên phải hay không, nếu có, thì điều kiện trở thành true. | (A <= B) là đúng. |
Mệnh đề WHERE rất hữu ích khi bạn muốn tìm nạp các hàng đã chọn từ bảng, đặc biệt là khi bạn sử dụng MySQL Join. Tham gia được thảo luận trong một chương khác.
Một thực tế phổ biến là tìm kiếm các bản ghi bằng cách sử dụng Primary Key để làm cho việc tìm kiếm nhanh hơn.
Nếu điều kiện đã cho không khớp với bất kỳ bản ghi nào trong bảng, thì truy vấn sẽ không trả về bất kỳ hàng nào.
Tìm nạp dữ liệu từ Command Prompt
Điều này sẽ sử dụng lệnh SQL SELECT với mệnh đề WHERE để tìm nạp dữ liệu đã chọn từ bảng MySQL - tutorials_tbl.
Thí dụ
Ví dụ sau sẽ trả về tất cả các bản ghi từ tutorials_tbl bảng có tên tác giả Sanjay.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl WHERE tutorial_author = 'Sanjay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 3 | JAVA Tutorial | Sanjay | 2007-05-21 |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)
mysql>
Trừ khi thực hiện một LIKEso sánh trên một chuỗi, so sánh không phân biệt chữ hoa chữ thường. Bạn có thể làm cho tìm kiếm của mình phân biệt chữ hoa chữ thường bằng cách sử dụngBINARY từ khóa như sau -
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl \
WHERE BINARY tutorial_author = 'sanjay';
Empty set (0.02 sec)
mysql>
Tìm nạp dữ liệu bằng PHP Script
Bạn có thể sử dụng cùng một lệnh SQL SELECT với WHERE CLAUSE vào hàm PHP mysql_query(). Hàm này được sử dụng để thực thi lệnh SQL và sau đó là một hàm PHP khácmysql_fetch_array()có thể được sử dụng để tìm nạp tất cả dữ liệu đã chọn. Hàm này trả về một hàng dưới dạng mảng kết hợp, mảng số hoặc cả hai. Hàm này trả về FALSE nếu không còn hàng nào nữa.
Thí dụ
Ví dụ sau sẽ trả về tất cả các bản ghi từ tutorials_tbl bảng có tên tác giả Sanjay -
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title,
tutorial_author, submission_date
FROM tutorials_tbl
WHERE tutorial_author = "Sanjay"';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo "Tutorial ID :{$row['tutorial_id']} <br> ".
"Title: {$row['tutorial_title']} <br> ".
"Author: {$row['tutorial_author']} <br> ".
"Submission Date : {$row['submission_date']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>