07/09/2018, 13:40

Tìm Hiểu Về Mệnh Đề TOP, LIMIT, ROWNUM Trong SQL

Mệnh đề SELECT TOP được sử dụng để xác định rõ số lượng bản ghi để trả về. Mệnh đề SELECT TOP hữu ích trên các bảng lớn với hàng ngàn bản ghi bởi vì nếu ta trả về một số lượng lớn các bản ghi có thể ảnh hưởng đến hiệu suất. Lưu ý: Không phải tất cả các hệ thống cơ sở dữ liệu đều hỗ trợ mệnh đề ...

Mệnh đề SELECT TOP được sử dụng để xác định rõ số lượng bản ghi để trả về.

Mệnh đề SELECT TOP hữu ích trên các bảng lớn với hàng ngàn bản ghi bởi vì nếu ta trả về một số lượng lớn các bản ghi có thể ảnh hưởng đến hiệu suất.

Lưu ý: Không phải tất cả các hệ thống cơ sở dữ liệu đều hỗ trợ mệnh đề SELECT TOP. MySQL hỗ trợ mệnh đề LIMIT để chọn một số lượng hạn chế các bản ghi, trong khi Oracle sử dụng ROWNUM.

Cú Pháp Câu Lệnh SELECT TOP Trong Hệ Quản Trị Cơ Sở Dữ Liệu SQL Server / MS Access:

SELECT TOP số cột1, cột2, ...

FROM tên_bảng

WHERE điều_kiện;

Cú Pháp Câu Lệnh LIMIT Trong Hệ Quản Trị Cơ Sở Dữ Liệu MySQL:

SELECT cột1, cột2, ...

FROM tên_bảng

WHERE điều_kiện

LIMIT số;

Cú Pháp Câu Lệnh ROWNUM Trong Hệ Quản Trị Cơ Sở Dữ Liệu Oracle:

SELECT cột1, cột2, ...

FROM tên_bảng

WHERE ROWNUM <= số;

Dưới đây là dữ liệu từ bảng khach_hang trong cơ sở dữ liệu:

| ID | ten_khach_hang   | tuoi | dia_chi     |
|----|------------------|------|-------------|
| 1  | Nguyễn Thị Thắm  | 20   | Gia Lâm     |
| 2  | Hoàng Văn Sơn    | 21   | Hoàng Mai   |
| 3  | Phạm Thị Hương   | 20   | Hà Đông     |
| 4  | Nguyễn Văn Chiến | 22   | Nguyễn Trãi |
| 5  | Nguyễn Thị Thu   | 21   | Giáp Bát    |
| 6  | Nguyễn Thị Thảo  | 21   | Đào Tấn    |

Câu lệnh SQL sau đây chọn ba bản ghi đầu tiên từ bảng khach_hang:

SELECT TOP 3 * FROM khach_hang;

Kết quả trả về sẽ như sau:

| ID | ten_khach_hang   | tuoi | dia_chi     |
|----|------------------|------|-------------|
| 1  | Nguyễn Thị Thắm  | 20   | Gia Lâm     |
| 2  | Hoàng Văn Sơn    | 21   | Hoàng Mai   |
| 3  | Phạm Thị Hương   | 20   | Hà Đông     |

Câu lệnh SQL sau đây cho thấy ví dụ tương đương sử dụng mệnh đề LIMIT:

SELECT * FROM `khach_hang`

LIMIT 3;

Câu lệnh SQL sau đây cho thấy ví dụ tương đương bằng ROWNUM:

SELECT * FROM khach_hang

WHERE ROWNUM <= 3;

Câu lệnh SQL sau đây chọn 50% bản ghi đầu tiên từ bảng "Khách hàng":

SELECT TOP 50 PERCENT * FROM khach_hang;

Kết quả cũng trả về như sau:

| ID | ten_khach_hang   | tuoi | dia_chi     |
|----|------------------|------|-------------|
| 1  | Nguyễn Thị Thắm  | 20   | Gia Lâm     |
| 2  | Hoàng Văn Sơn    | 21   | Hoàng Mai   |
| 3  | Phạm Thị Hương   | 20   | Hà Đông     |

Câu lệnh SQL sau đây chọn ba bản ghi đầu tiên từ bảng khach_hang, trong đó có tuoi = 21:

SELECT TOP 3 * FROM khach_hang

WHERE tuoi = 21;

Kết quả trả về như sau:

| ID | ten_khach_hang   | tuoi | dia_chi     |
|----|------------------|------|-------------|
| 2  | Hoàng Văn Sơn    | 21   | Hoàng Mai   |
| 5  | Nguyễn Thị Thu   | 21   | Giáp Bát    |
| 6  | Nguyễn Thị Thảo  | 21   | Đào Tấn    |

Câu lệnh SQL sau đây cho thấy ví dụ tương đương sử dụng mệnh đề LIMIT:

SELECT * FROM khach_hang

WHERE tuoi = 21

LIMIT 3;

Câu lệnh SQL sau đây cho thấy ví dụ tương đương bằng ROWNUM:

SELECT * FROM khach_hang

WHERE tuoi = 21 AND ROWNUM <= 3;

Vậy là bài học của chúng ta đã kết thúc. Hẹn gặp lại các bạn trong các bài học tiếp theo.

Cảm ơn các bạn đã theo dõi!

0