Menu
GIỚI THIỆU
  • ,Hỏi code chia sẻ code, trang chuyên học lập trình online miễn phí và tự học lập trình web, các bài viết thủ thuật web. Chia sẻ tài liệu kinh nghiệm marketing seo website hiệu quả nhất.

Câu lệnh SELECT - WHERE - LIKE - ORDER BY trong MYSQL

Lệnh SELECT trong SQL được sử dụng để lấy dữ liệu từ MySQL Database. Mệnh đề WHERE làm việc giống như một điều kiện if trong 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 bên ngoài là bằng với giá trị trường có sẵn trong bảng MySQL, thì nó sẽ trả về hàng đó. Cú pháp SQL chung của lệnh SELECT đi cùng với mệnh đề LIKE để lấy dữ liệu từ bảng MySQL

Cú pháp SELECT trong MYSQL

Lệnh SELECT trong SQL được sử dụng để lấy dữ liệu từ MySQL Database. Cú pháp SQL cơ bản của lệnh SELECT để lấy dữ liệu từ bảng MySQL là:

SELECT truong1, truong2,...truongN FROM ten_bang
[menhDe WHERE]
[OFFSET M ][LIMIT N]
  • Bạn có thể lấy một hoặc nhiều trường trong một lệnh SELECT đơn.

  • Bạn có thể xác định một dấu sao (*) thay cho các trường. Trong trường hợp này, lệnh SELECT sẽ trả về tất cả các trường.

  • Bạn có thể xác định bất kỳ điều kiện nào bởi sử dụng mệnh đề WHERE.

  • Bạn có thể xác định một offset bởi sử dụng OFFSET để từ đó lệnh SELECT này sẽ bắt đầu trả về các bản ghi. Theo mặc định, offset là 0.

  • Bạn có thể giới hạn số kết quả trả về bởi sử dụng thuộc tính LIMIT.

 

Ví dụ để lấy dữ liệu trong một bảng trong MySQL

Sau đây là ví dụ để lấy tất cả bản ghi có trong bảng sinhvienk60 có trong cơ sở dữ liệu sinhvien trong MySQL:

SELECT * FROM sinhvienk60;

Kết quả như sau:

Truy vấn SELECT trong MySQL
Truy vấn SELECT trong MySQL

Lấy dữ liệu bởi sử dụng PHP Script

Bạn có thể sử dụng cùng lệnh SELECT này trong hàm mysql_query() trong PHP. Hàm này được sử dụng để thực thi lệnh SQL và sau đó hàm PHP khác là mysql_fetch_array() có thể được sử dụng để lấy tất cả dữ liệu đã chọn. Hàm này trả về các hàng dưới dạng một mảng liên hợp, một mảng số hoặc cả hai. Hàm này trả về FALSE nếu không có các hàng nào như thế.

Dưới đây là một ví dụ đơn giản để lấy các bản ghi từ bảng sinhvienk60.

#Ví dụ

Bạn theo dõi ví dụ sau để lấy tất cả bản ghi từ bảng sinhvienk60.

<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Khong the ket noi: ' . mysql_error());
}
$sql = 'SELECT mssv, ho, 
               ten, diemthi
        FROM sinhvienk60';

mysql_select_db('sinhvien');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Khong the lay du lieu: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "MSSV :{$row['mssv']}  <br> ".
         "Ho: {$row['ho']} <br> ".
         "Ten: {$row['ten']} <br> ".
         "Diem Thi : {$row['diemthi']} <br> ".
         "--------------------------------<br>";
} 
echo "Lay du lieu thanh cong
";
mysql_close($conn);
?>

Nội dung của các hàng được gán cho biến $row và sau đó các giá trị trong hàng được in.

Sao chép code trên trong một trình soạn thảo chẳng hạn, lưu là insert.php, bạn cần xác định các tham số $dbuser và $dbpass thích hợp (tùy theo cách bạn đã thiết lập với MySQL), sau đó, mở trình duyệt, chạy locallhost/insert.php sẽ cho kết quả như sau:

Truy vấn SELECT trong MySQL-PHP
Truy vấn SELECT trong MySQL-PHP

Ghi chú: Bạn luôn luôn nhớ đặt các dấu ngoặc móc ({) khi bạn muốn chèn một giá trị mảng trực tiếp vào trong một chuỗi.

Trong ví dụ trên, hằng MYSQL_ASSOC được sử dụng như là tham số thứ hai cho hàm mysql_fetch_array() trong PHP, để mà nó trả về các hàng dưới dạng một mảng liên hợp. Với một mảng liên hợp, bạn có thể truy cập trường đó bởi sử dụng tên của chúng thay vì sử dụng chỉ mục.

PHP cung cấp hàm khác là mysql_fetch_assoc() cũng trả về các hàng dưới dạng một mảng liên hợp.

#Ví dụ

Ví dụ sau hiển thị tất cả bản ghi từ bảng tutorial_tbl bởi sử dụng hàm mysql_fetch_assoc() trong PHP.

<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Khong the ket noi: ' . mysql_error());
}
$sql = 'SELECT mssv, ho, 
               ten, diemthi
        FROM sinhvienk60';

mysql_select_db('sinhvien');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Khong the lay du lieu: ' . mysql_error());
}
while($row = mysql_fetch_assoc($retval))
{
    echo "MSSV :{$row['mssv']}  <br> ".
         "Ho: {$row['ho']} <br> ".
         "Ten: {$row['ten']} <br> ".
         "Diem Thi : {$row['diemthi']} <br> ".
         "--------------------------------<br>";
} 
echo "Lay du lieu thanh cong
";
mysql_close($conn);
?>
 

Bạn cũng có thể sử dụng hằng MYSQL_NUM như là tham số thứ hai cho hàm PHP là mysql_fetch_array(). Điều này làm cho hàm trả về một mảng với chỉ mục dạng số.

#Ví dụ

Ví dụ sau hiển thị tất cả bản ghi từ bảng tutorial_tbl bởi sử dụng tham số MYSQL_NUM:

<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Khong the ket noi: ' . mysql_error());
}
$sql = 'SELECT mssv, ho, 
               ten, diemthi
        FROM sinhvienk60';

mysql_select_db('sinhvien');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Khong the lay du lieu: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM))
{
    echo "MSSV :{$row[0]}  <br> ".
         "Ho: {$row[1]} <br> ".
         "Ten: {$row[2]} <br> ".
         "Diem Thi : {$row[3]} <br> ".
         "--------------------------------<br>";
}
echo "Lay du lieu thanh cong
";
mysql_close($conn);
?>

Các ví dụ trên sẽ cho cùng kết quả.

Giải phóng bộ nhớ trong MySQL

Giải phóng bộ nhớ ở phần cuối mỗi lệnh SELECT là một bài thực hành tốt. Điều này có thể được thực hiện bởi sử dụng hàm mysql_free_result() trong PHP. Dưới đây là ví dụ minh họa cách sử dụng của hàm này.

#Ví dụ

Bạn thử ví dụ sau:

<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Khong the ket noi: ' . mysql_error());
}
$sql = 'SELECT mssv, ho, 
               ten, diemthi
        FROM sinhvienk60';

mysql_select_db('sinhvien');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Khong the lay du lieu: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM))
{
    echo "MSSV :{$row[0]}  <br> ".
         "Ho: {$row[1]} <br> ".
         "Ten: {$row[2]} <br> ".
         "Diem Thi : {$row[3]} <br> ".
         "--------------------------------<br>";
}
mysql_free_result($retval);
echo "Lay du lieu thanh cong
";
mysql_close($conn);
?>

Trong khi lấy dữ liệu, bạn có thể viết các lệnh SQL phức tạp tùy theo ý muốn của bạn. Và thủ tục sẽ giống như đã đề cập ở trên.

Trong chương trước chúng ta đã được giới thiệu cách sử dụng của lệnh SELECT trong SQL để lấy dữ liệu từ bảng MySQL. Chúng ta có thể sử dụng một mệnh đề điều kiện gọi là mệnh đề WHERE để lọc các kết quả thu được. Sử dụng mệnh đề WHERE, chúng ta có thể xác định một tiêu chuẩn lựa chọn để chọn các bản ghi cần thiết từ một bảng.

Cú pháp điều kiện WHERE trong MYSQL

Cú pháp SQL chung của lệnh SELECT với mệnh đề WHERE để lấy dữ liệu từ bảng MySQL là:

SELECT truong1, truong2,...truongN FROM ten_bang
[WHERE dieuKien1 [AND [OR]] dieuKien2.....
  • Bạn có thể xác định bất kỳ điều kiện nào bởi sử dụng mệnh đề WHERE.

  • Bạn có thể xác định nhiều hơn một điều kiện bởi sử dụng các toán tử ANDOR.

  • Một mệnh đề WHERE có thể được sử dụng cùng với lệnh DELETE hoặc UPDATE trong SQL để xác định một điều kiện.

 

Mệnh đề WHERE làm việc giống như một điều kiện if trong 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 bên ngoài là bằng với giá trị trường có sẵn trong bảng MySQL, thì nó sẽ trả về hàng đó.

Dưới đây là danh sách các toán tử có thể được sử dụng với mệnh đề WHERE:

Giả sử trường A giữ 10 và trường B giữ 20, thì:

Toán tử Miêu tả Ví dụ
= Kiểm tra xem giá trị của hai toán hạng có cân bằng không, nếu có thì điều kiện trở thành true (A = B) là không true
!= Kiểm tra xem giá trị của hai toán hạng là cân bằng hay là không, nếu không cân bằng thì điều kiện trở thành true (A != B) là true
> Kiểm tra xem giá trị của toán hạng trái có lớn hơn giá trị của toán hạng phải không, nếu có thì điều kiện trở thành true (A > B) là không true
< Kiểm tra xem giá trị của toán hạng trái có nhỏ hơn giá trị của toán hạng phải không, nếu có thì điều kiện trở thành true (A < B) là true
>= Kiểm tra xem giá trị của toán hạng trái có lớn hơn hoặc bằng giá trị của toán hạng phải không, nếu có thì điều kiện trở thành true (A >= B) là không true
<= Kiểm tra xem giá trị của toán hạng trái có nhỏ hơn hoặc bằng giá trị của toán hạng phải không, nếu có thì điều kiện trở thành true (A <= B) là true

Mệnh đề WHERE là hữu ích khi bạn muốn lấy các hàng đã được lựa chọn từ một bảng, đặc biệt khi bạn sử dụng JOIN trong MySQL. Các JOIN sẽ được trình bày trong chương khác.

Sử dụng Primary Key là thói quen phổ biến để tìm kiếm các bản ghi để giúp việc tìm kiếm này nhanh hơn.

Nếu điều kiện đã cho không so 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.

Ví dụ lấy dữ liệu với mệnh đề WHERE trong MySQL

Ví dụ sau sẽ trả về tất cả bản ghi từ bảng sinhvienk60 mà có tên là Thanh:

SELECT * FROM sinhvienk60 WHERE ten="Thanh";

Kết quả là:

+------+------------+------------+---------+
| mssv | ho         | ten        | diemthi |
+------+------------+------------+---------+
|  2   | Nguyen Van | Thanh      | 9.00    |
+------+------------+------------+---------+

Trừ khi thực hiện một so sánh LIKE trên một chuỗi, việc so sánh là không phân biệt kiểu chữ. Bạn có thể làm cho việc tìm kiếm là phân biệt kiểu chữ bởi sử dụng từ khóa BINARY như sau:

SELECT * FROM sinhvienk60 WHERE BINARY ten="thanh";

Với bảng đã tạo của chúng ta thì không có bản ghi nào có tên là thanh, do đó lệnh trên không cho kết quả nào.

Lấy dữ liệu với mệnh đề WHERE bởi sử dụng PHP Script

Bạn có thể sử dụng cùng lệnh SQL là SELECT với mệnh đề WHERE trong hàm PHP là mysql_query(). Hàm này được sử dụng để thực thi lệnh SQL và sau đó hàm PHP khác là mysql_fetch_array() có thể được sử dụng để lấy toàn bộ dữ liệu đã chọn. Hàm này trả về các hàng dưới dạng một mảng liên hợp, một mảng số hoặc cả hai. Hàm này trả về FALSE nếu không có hàng nào như vậy.

#Ví dụ

Ví dụ sau trả về tất cả bản ghi có tên là Thanh từ bảng sinhvienk60:

<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Khong the ket noi: ' . mysql_error());
}
$sql = 'SELECT mssv, ho, 
               ten, diemthi
        FROM sinhvienk60
        WHERE ten="Thanh"';

mysql_select_db('sinhvien');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Khong the lay du lieu: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "MSSV :{$row['mssv']}  <br> ".
         "Ho: {$row['ho']} <br> ".
         "Ten: {$row['ten']} <br> ".
         "Diem Thi : {$row['diemthi']} <br> ".
         "--------------------------------<br>";
} 
echo "Lay du lieu thanh cong
";
mysql_close($conn);
?>

Sao chép code trên trong một trình soạn thảo chẳng hạn, lưu là where.php, bạn cần xác định các tham số $dbuser và $dbpass thích hợp (tùy theo cách bạn đã thiết lập với MySQL), sau đó, mở trình duyệt, chạy locallhost/where.php sẽ cho kết quả như sau:

Mệnh đề WHERE trong MySQL-PHP
Mệnh đề WHERE trong MySQL-PHP

Trong các chương trước, bạn đã thấy cách sử dụng lệnh SELECT trong SQL để lấy dữ liệu từ bảng MySQL. Bạn cũng đã hiểu cách sử dụng một mệnh đề điều kiện WHERE để chọn các bản ghi cần thiết.

Mệnh đề WHERE với dấu bằng (=) làm việc khá khéo léo khi chúng ta muốn thực hiện một so khớp chính xác. Giống lệnh if "ho = 'Nguyen'". Nhưng có thể bạn muốn lọc tất cả kết quả mà trong ho chứa "nguyen". Việc này có thể được xử lý bởi sử dụng mệnh đề LIKE đi cùng với mệnh đề WHERE.

Nếu mệnh đề LIKE trong SQL được sử dụng với các ký tự %, thì nó làm việc giống như một siêu ký tự (*) trong UNIX trong khi liệt kê tất cả các file hoặc thư mục tại dòng nhắc lệnh.

Khi không sử dụng ký tự %, mệnh đề LIKE là giống như dấu bằng đi cùng với mệnh đề WHERE.

Mệnh đề LIKE trong MYSQL

Cú pháp SQL chung của lệnh SELECT đi cùng với mệnh đề LIKE để lấy dữ liệu từ bảng MySQL là:

SELECT truong1, truong2,...truongN FROM ten_bang
WHERE truong1 LIKE dieuKien [AND [OR]] truong2 = 'giaTri'
  • Bạn có thể xác định bất kỳ điều kiện nào bởi sử dụng mệnh đề WHERE.

  • Bạn có thể sử dụng mệnh đề LIKE cùng với mệnh đề WHERE.

  • Bạn có thể sử dụng mệnh đề LIKE thay cho dấu bằng.

  • Khi LIKE được sử dụng cùng với ký hiệu % thì nó làm việc giống như một siêu ký tự *.

  • Bạn có thể xác định nhiều hơn một điều kiện bởi sử dụng các toán tử AND hoặc OR.

  • Một mệnh đề WHERE…LIKE có thể được sử dụng cùng với lệnh DELETE hoặc UPDATE trong SQL để xác định một điều kiện.

 

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

Để lấy dữ liệu đã được lựa chọn từ bảng MySQL, bạn có thể sử dụng lệnh SELECT với mệnh đề WHERE…LIKE.

#Ví dụ

Ví dụ sau trả về tất cả bản ghi từ bảng sinhvienk60 có ho bắt đầu với từ Nguyen:

SELECT * FROM sinhvienk60 WHERE ho LIKE 'Nguyen%';

Kết quả là:

Mệnh đề LIKE trong MySQL
Mệnh đề LIKE trong MySQL

Sử dụng mệnh đề LIKE bên trong PHP Script

Bạn dùng cú pháp tương tự của mệnh đề WHERE…LIKE trong hàm PHP là mysql_query(). Hàm này được sử dụng để thực thi lệnh SQL và sau đó hàm PHP khác là mysql_fetch_array() có thể được sử dụng để lấy dữ liệu đã chọn nếu mệnh đề WHERE…LIKE được sử dụng cùng với lệnh SELECT.

Nhưng nếu mệnh đề WHERE…LIKE đang được sử dụng với lệnh DELETE hoặc UPDATE thì lời gọi hàm PHP là không cần thiết.

#Ví dụ

Bạn thử ví dụ sau để trả về tất cả bản ghi từ bảng sinhvienk60 có ho bắt đầu với từ Nguyen:

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Khong the ket noi: ' . mysql_error());
}
$sql = 'SELECT mssv, ho, 
               ten, diemthi
        FROM sinhvienk60
        WHERE ho LIKE "Nguyen%"';

mysql_select_db('sinhvien');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Khong the lay du lieu: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "MSSV :{$row['mssv']}  <br> ".
         "Ho : {$row['ho']} <br> ".
         "Ten : {$row['ten']} <br> ".
         "Diem Thi : {$row['diemthi']} <br> ".
         "--------------------------------<br>";
} 
echo "Lay du lieu thanh cong
";
mysql_close($conn);
?>

Sao chép code trên trong một trình soạn thảo chẳng hạn, lưu là like.php, bạn cần xác định các tham số $dbuser và $dbpass thích hợp (tùy theo cách bạn đã thiết lập với MySQL), sau đó, mở trình duyệt, chạy locallhost/like.php sẽ cho kết quả như sau:

Mệnh đề LIKE trong MySQL-PHP
Mệnh đề LIKE trong MySQL-PHP

Bạn đã thấy cách lệnh SELECT trong SQL lấy dữ liệu từ bảng MySQL. Khi bạn chọn các hàng, MySQL Server tự do trả về chúng trong bất kỳ thứ tự nào, trừ khi bạn chỉ thị cho nó cách sắp xếp kết quả. Bạn có thể sắp xếp một tập kết quả bởi việc thêm một mệnh đề ORDER BY mà xác định rõ các hàng hoặc các cột bạn muốn sắp xếp.

Mệnh đề ORDER BY trong MYSQL

Cú pháp SQL chung của lệnh SELECT đi cùng với mệnh đề ORDER BY để sắp xếp dữ liệu từ bảng MySQL là:

SELECT truong1, truong2,...truongN FROM ten_bang
ORDER BY truong1, [truong2...] [ASC [DESC]]
  • Bạn có thể sắp xếp kết quả trả về trên bất kỳ trường nào.

  • Bạn có thể sắp xếp kết quả trên nhiều hơn một trường.

  • Bạn có thể sử dụng từ khóa ASC hoặc DESC để nhận kết quả theo thứ tự tăng dần hoặc giảm dần. Theo mặc định, thứ tự là tăng dần.

  • Bạn có thể sử dụng mệnh đề WHERE…LIKE theo cách thông thường để xác định điều kiện.

Sử dụng mệnh đề ORDER BY để sắp xếp kết quả trong MySQL

Để lấy và sắp xếp dữ liệu từ bảng MySQL, bạn có thể sử dụng lệnh SELECT với mệnh đề ORDER BY.

Ví dụ sau sẽ trả về các bản ghi diemthi theo thứ tự tăng dần.

SELECT * FROM sinhvienk60 ORDER BY diemthi ASC;

Kết quả là:

+------+----------------+------------+---------+
| mssv | ho             | ten        | diemthi |
+------+----------------+------------+---------+
|   3  | Nguyen Hoang   | Huong      | 7.50    |
|   1  | Dinh Van       | Cao        | 8.00    |
|   2  | Nguyen Van     | Thanh      | 9.00    |
+------+----------------+------------+---------+
 

Sử dụng mệnh đề ORDER BY bên trong PHP Script

Bạn sử dụng cú pháp tương tự của mệnh đề ORDER BY trong hàm PHP là mysql_query(). Hàm này được sử dụng để thực thi lệnh SQL và sau đó hàm PHP khác là mysql_fetch_array() có thể được sử dụng để lấy tất cả dữ liệu đã chọn.

#Ví dụ

Ví dụ sau trả về kết quả với thứ tự giảm dần của ten:

<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Khong the ket noi: ' . mysql_error());
}
$sql = 'SELECT mssv, ho, 
               ten, diemthi
        FROM sinhvienk60
        ORDER BY  ten DESC';

mysql_select_db('sinhvien');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Khong the lay du lieu: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "MSSV :{$row['mssv']}  <br> ".
         "Ho : {$row['ho']} <br> ".
         "Ten : {$row['ten']} <br> ".
         "Diem Thi : {$row['diemthi']} <br> ".
         "--------------------------------<br>";
} 
echo "Lay du lieu thanh cong
";
mysql_close($conn);
?>

Sao chép code trên trong một trình soạn thảo chẳng hạn, lưu là orderby.php, bạn cần xác định các tham số $dbuser và $dbpass thích hợp (tùy theo cách bạn đã thiết lập với MySQL), sau đó, mở trình duyệt, chạy locallhost/orderby.php sẽ cho kết quả như sau:

Mệnh đề ORDER BY trong MySQL-PHP
Mệnh đề ORDER BY trong MySQL-PHP

Các bạn có thể tham khảo tài liệu tại W3C, PHP.NET

Ghi nguồn hoicode.com khi đăng tải lại bài viết này.
Link: Câu lệnh SELECT - WHERE - LIKE - ORDER BY trong MYSQL

Chia sẻ liên kết

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Facebook để được hỗ trợ nhanh nhất.

    Email của bạn sẽ được sử dụng với mục đích thông báo tin tuyển dụng mới hoặc các bài viết mới.

    captcha