MySQL – Bài 10: Mệnh đề WHERE – Mệnh đề LIKE

mysql bai 10

Mệnh đề WHERE

Trong bài trên, ta đã biết câu lệnh truy vấn SELECT được sử dụng để nhận tập record từ các table trong cơ sở dữ liệu. Với mệnh đề điều kiện Where ta có thể chỉ lấy ra các record thỏa mãn điều kiện đã chỉ ra (dùng mệnh đề Where để lọc kết quả).

Tức là, ta sử dụng mệnh để Where để chỉ ra điều kiện chọn để chọn ra các record thỏa yêu cầu. Ở đây ta có thể sử dụng điều kiện đơn hoặc kết hợp nhiều điều kiện với nhau (sử dụng thêm các toán tử logic AND, OR).

Mệnh đề Where có thể sử dụng kết hợp với nhiều lệnh SQL khác như DELECT, UPDATE,…

Cú pháp lệnh SELECT với Where

SELECT field1, field2,…fieldN table_name1, table_name2…

[WHERE condition1 [AND [OR]] condition2…..]

Trong đó:

Mệnh đề Where được sử dụng như câu lệnh điều kiện IF trong các ngôn ngữ lập trình khác. Nó được sử dụng để so sánh một giá trị đã cho với giá trị chứa ở một field, của record nào đó, trong các table: Kết quả trả về là True: Nếu biểu thức logic sau where cho kết quả đúng; hoặc False: Nếu biểu thức logic sau where cho kết quả sai.

Danh sách các toán tử sử dụng với mệnh đề Where: = (bằng), != (không bằng, > (lớn hơn), >= (lớn hơn hoặc bằng), < (nhỏ hơn), <= (nhỏ hơn hoặc bằng).

Sử dụng mệnh đề Where tại dấu nhắc mysql>

Ví dụ 1:

root@ubutu# mysql -u root -p password;
     Enter password:********
     mysql> use HSCB;
     Database changed
     mysql> SELECT * from lylich WHERE NoiSinh = 'Hue';
     ….
mysql>

Chỉ có một sự khác biệt giữa 2 lệnh Select ở hai ví dụ trên là: Từ khóa BINARY đi trước biểu thức điều kiện NoiSinh = ‘Hue’. Với từ khóa này MySQL sẽ áp dụng chế độ có phân biệt phân biệt chữ Hoa – chữ Thường.

Sử dụng mệnh đề Where trong script PHP

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'a123456789z';
$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']}" .
  "Submission Date : {$row['submission_date']} <br>" .
  "-------------------------- <br>";
}
echo "Fetched data successfully\n";
mysql_close( $conn );
?>

Mệnh đề LIKE

Như đã thấy, nếu sử dụng mệnh đề Where một cách độc lập thì chúng ta chỉ có thể chỉ ra một điều kiện chính xác, ví dụ: Where Holot = “Nguyễn”: Field Holot của record phải là “Nguyễn”. Do đó, nếu muốn chỉ ra một điều kiện có tính tương đối thì ta phải sử dụng kết hợp với mệnh đề Like, ví dụ: Where Holot Like “Nguyễn%”: Chỉ cần field Holot của record bắt đầu là “Nguyễn” là được.

Tóm lại, khi cần sử dụng điều kiện có tính tương đối trong câu lệnh Select thì ta chỉ cần thay dấu bằng (=) trong biểu thức logic sau Where bởi từ khóa Like là được. Tất nhiên, phải sử dụng dấu % và các toán tử AND, OR,… một cách phù hợp.

Cú pháp lệnh SELECT với LIKE

SELECT field1, field2,…fieldN table_name1, table_name2…

WHERE field1LIKE condition1[AND [OR]] filed2 = ‘somevalue’

Các toán tử AND, OR được sử dụng khi có nhiều hơn một field tham gia vào biểu thức điều kiện sau Where.

Mệnh đề Where … Like cũng có thể sử dụng trong các câu lệnh truy vấn khác như UPDATE, DELETE,…

Sử dụng mệnh đề LIKE tại dấu nhắc mysql>

Ví dụ:

root@ubuntu# mysql -u root -p password;
     Enter password:*
     mysql>use HSCB;
     Database changed
     mysql>SELECT * from lylich
          -> WHERE ten LIKE 't%' ;
     ….
mysql>

Ví dụ trên chon ra các record, trong table lylich – trong cơ sở dữ liệu HSCB, mà field ten của nó bắt đầu bằng kí tự ‘t’.

Sử dụng mệnh đề LIKE trong script PHP

Việc sử dụng mệnh đề Where không có hay có thêm Like trong câu lệnh Select hoàn toàn không liên quan đến việc gọi hàm mysql_query() và mysql_fetch_array() của PHP.

Ví dụ 2:

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'a123456789z';
$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 LIKE "%jay%"';
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 );
?>

Ví dụ trên: Chọn ra các record mà chỉ cần giá trị trường (field) tutorial_author của nó chứa các kí tự “jay” là được.

Bài viết cùng chuyên mục:

0 0 Bình chọn
Đánh giá bài viết
Đăng ký
Nhận thông báo cho
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận