SQL, hoặc ngôn ngữ truy vấn có cấu trúc, cho phép chúng tôi thu thập dữ liệu từ cơ sở dữ liệu thông qua các truy vấn. Nó cũng cho phép chúng tôi chèn, cập nhật và xóa dữ liệu đó.
Trong bài đăng trên blog này, chúng tôi sẽ tập trung vào cách tìm nạp dữ liệu và giới hạn kết quả bằng cách sử dụng SQL.
Tại sao bạn nên giới hạn kết quả truy vấn SQL?
Cơ sở dữ liệu thường là một tập hợp dữ liệu khổng lồ. Đôi khi chúng ta không cần tìm nạp tất cả các kết quả. Để giới hạn kết quả, chúng tôi có thể tối ưu hóa truy vấn.
Giới hạn kết quả truy vấn là quan trọng đối với hiệu suất DB. Việc tìm nạp một kết quả lớn khi nó không được yêu cầu sẽ phát sinh thêm tải trên cơ sở dữ liệu và ảnh hưởng đến trải nghiệm người dùng.
Cách giới hạn kết quả truy vấn trong SQL
Cú pháp khác nhau đối với SQL Server, Oracle và MySQL để giới hạn dữ liệu.
- MySQL sử dụng
LIMIT
. - ORACLE sử dụng
FETCH FIRST
. - MS Access và SQL Server sử dụng
TOP
.
Chúng ta sẽ xem các ví dụ về cách hoạt động chi tiết của từng cái bên dưới.
Cơ sở dữ liệu Demo
Chúng tôi có bảng sau có tên students
với chi tiết của họ như bạn có thể thấy bên dưới:
ID | Tên | Giới tính |
---|---|---|
1 | Ryan | M |
2 | Joanna | F |
3 | Miranda Andersen | F |
4 | Dalia Mata | F |
5 | Lilianna Boyd | F |
6 | Lexie Sharp | M |
7 | Jazlene Cordova | F |
8 | Brycen Werner | M |
9 | Karissa Turner | F |
10 | Aisha Dodson | F |
11 | Aydin Reeves | M |
Cách giới hạn truy vấn trong MySQL
Dưới đây là cú pháp cho MySQL.
SELECT (expression)
FROM
table_name
LIMIT 5;
Ví dụ:chúng tôi sẽ chọn 5 bản ghi đầu tiên từ bảng.
Hãy sử dụng bảng students
của chúng tôi cho cuộc trình diễn này.
-- fetch top 5 values from table
SELECT * FROM students
LIMIT 5;
Đầu ra:
Cách kết hợp LIMIT với ORDER BY
Khi bạn kết hợp LIMIT với ORDER BY, bạn có thể nhận được nhiều kết quả có ý nghĩa hơn. Ví dụ:chúng tôi có thể sử dụng điều này để tìm 5 sinh viên hàng đầu đạt điểm cao hơn 70% trong bài kiểm tra của họ.
Hãy đặt bàn của chúng ta students
với cột name
và chọn 5 đầu từ kết quả. Bạn có thể làm như thế này:
SELECT * FROM students
order by name
LIMIT 5;
Đầu ra:
Cách giới hạn kết quả - Cú pháp Oracle
Dưới đây là cú pháp tương đương cho ví dụ đầu tiên của chúng tôi trong Oracle.
SELECT * FROM students
FETCH FIRST 5 ROWS ONLY;
Trong các phiên bản Oracle cũ hơn, bạn có thể sử dụng ROWNUM để hạn chế số hàng được trả về bởi một truy vấn.
Ví dụ:
SELECT * FROM
students
WHERE ROWNUM < 5;
Cách giới hạn kết quả trong cú pháp SQL - MS Access
Dưới đây là cú pháp tương đương cho ví dụ đầu tiên của chúng tôi trong MS Access.
SELECT TOP 5 * FROM students;
Kết thúc
Chức năng LIMIT có thể rất mạnh để tối ưu hóa truy vấn khi được kết hợp với sắp xếp. Các truy vấn hiệu quả nhẹ hơn trên hệ thống và nhanh chóng cho người dùng. Chúng tôi luôn khuyên bạn nên GIỚI HẠN kết quả nếu có.