Nên chọn top hay limit trong câu lệnh mysql năm 2024

Trong SQL, lệnh

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

7 được sử dụng để lấy ra N bản ghi hoặc X phần trăm bản ghi từ một bảng. Ở bài viết này sẽ hướng dẫn chi tiết cho bạn cách sử dụng câu lệnh TOP trong SQL với cú pháp và những ví dụ cụ thể để dễ hình dung và nắm bắt hàm tốt hơn.

Lưu ý: Không phải tất cả các Database đều hỗ trợ mệnh đề TOP. Ví dụ như MySQL hỗ trợ mệnh đề

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

8 để lấy ra số lượng hạn chế các bản ghi, trong khi Oracle sử dụng lệnh

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

9 và

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
ORDER BY ten_cot (có thể nhiều cột)
FETCH FIRST so_luong ROWS ONLY;

0 để thực hiện cùng thao tác này.

Mệnh đề

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

7 hữu ích trên các bảng lớn với hàng nghìn bản ghi; Việc trả lại một số lượng lớn bản ghi có thể ảnh hưởng đến hiệu suất.

Cú pháp lệnh TOP trong SQL

Cú pháp lệnh TOP trong SQL Server / MS Access:

SELECT TOP so_ban_ghi | phan_tram ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]

Cú pháp lệnh TOP trong MySQL:

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

Cú pháp lệnh TOP trong Oracle 12:

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
ORDER BY ten_cot (có thể nhiều cột)
FETCH FIRST so_luong ROWS ONLY;

Cú pháp lệnh TOP trong Oracle cũ hơn:

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE ROWNUM <= so_luong;

Cú pháp Oracle cũ hơn (với ORDER BY):

SELECT *
FROM (SELECT ten_cot(s) FROM ten_bang ORDER BY ten_cot)
WHERE ROWNUM <= so_luong;

Ví dụ về SQL TOP, LIMIT và FETCH FIRST

Giả sử bảng NHANVIEN có các bản ghi như sau:

++--+-+---+--+

ID TEN TUOI DIACHI LUONG
+----+----------+-----+-----------+----------+
1 Thanh 32 Haiphong 2000.00
2 Loan 25 Hanoi 1500.00
3 Nga 23 Hanam 2000.00
4 Manh 25 Hanoi     6500.00
5 Huy 27 Hanoi     8500.00
6 Cao 22 HCM 4500.00
7 Lam 24 Hanoi 10000.00
+----+----------+-----+-----------+----------+

Đề bài đưa ra là danh sách 3 nhân viên đầu tiên trong bảng NHANVIEN. Câu lệnh tương ứng sẽ như sau:

Trên SQL Server/MS Access:

SELECT TOP 3 * FROM NHANVIEN;

Trên MySQL:

ELECT * FROM NHANVIEN
LIMIT 3;

Trên Oracle:

SELECT * FROM NHANVIEN
FETCH FIRST 3 ROWS ONLY;

hoặc

SELECT * FROM NHANVIEN
WHERE ROWNUM <= 3;

Kết quả trả về tương tự nhau theo cả 3 trường hợp trên sẽ là:

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

0

Ví dụ về SQL TOP PERCENT

Đề bài đưa ra: Hiển thị danh sách 50% người đầu tiên trong bảng NHANVIEN. Cú pháp tương ứng sẽ như sau:

Trên SQL Server/MS Access:

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

1

Trên Oracle:

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

2

Cả 2 câu lệnh đều cho ra kết quả như bảng sau:

SELECT ten_cot (có thể nhiều cột)
FROM ten_bang
WHERE [dieu_kien]
LIMIT so_luong;

3

Ví dụ TOP kết hợp với WHERE

Đề bài đưa ra là tìm 3 người đầu tiên trong danh sách NHANVIEN có DIACHI tại Hanoi. Câu lệnh tương ứng sẽ như sau:

Mặc dù MySQL và SQL Server có cùng chức năng vẫn có sự khác biệt rõ ràng về định nghĩa cũng như các câu lệnh. Vậy làm thế nào để Data Analyst để phân biệt câu lệnh MySQL và SQL Server? Cùng MCI tìm hiểu những điểm khác nhau giữa hai hệ quản trị cơ sở dữ liệu này.

Mặc dù MySQL và SQL Server có cùng chức năng vẫn có sự khác biệt rõ ràng về định nghĩa cũng như các câu lệnh. Vậy làm thế nào để Data Analyst để phân biệt câu lệnh MySQL và SQL Server? Cùng MCI tìm hiểu những điểm khác nhau giữa hai hệ quản trị cơ sở dữ liệu này.

1. Khái niệm về SQL

SQL - Structured Query Language một loại ngôn ngữ truy vấn có tính cấu trúc, thường được ứng dụng vào quá trình vận hành cơ sở dữ liệu. Nhiệm vụ chính của SQL là để tạo, chỉnh sửa và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu quan hệ. Các cơ sở dữ liệu quan hệ có các bảng, trong các bảng này lại chứa các hàng và cột, mỗi hàng là một bản ghi, còn một cột sẽ là một trường. Những dữ liệu thường được lưu trữ trực tiếp trong bảng này, với mỗi dữ liệu lại tượng trưng cho một kiểu dữ liệu nhất định.

SQL bao gồm nhiều loại câu lệnh được phân loại là ngôn ngữ con SQL:

  • DQL: Data Query Language - Ngôn ngữ truy vấn dữ liệu.
  • DDL: Data Definition Language - Ngôn ngữ định nghĩa dữ liệu (Chứa các lệnh để tạo và sửa đổi các tác vụ).
  • DCL: Data Control Language - Ngôn ngữ điều khiển dữ liệu (Chứa các lệnh liên quan đến kiểm soát truy cập).
  • DML: Data Manipulation Language - Ngôn ngữ thao tác dữ liệu (Chứa các lệnh để chèn, cập nhật và xóa các hoạt động).

2. MySQL là gì?

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ, được xây dựng và phát triển bởi Oracle Corporation. MySQL cung cấp phân phối cấp phép kép. Nó là một phần mềm miễn phí và nguồn mở theo GPLv2 và cũng thuộc nhiều giấy phép độc quyền. MySQL được viết bằng ngôn ngữ C và C++. Nó hỗ trợ các hệ điều hành Linux, Solaris, macOS, Windows và FreeBSD. Về cơ bản, nó là một phần mềm sử dụng mã nguồn mở, được ứng dụng một cách rộng rãi trên thế giới.

Trong MySQL, bạn hoàn toàn có thể sử dụng SQL phục vụ cho việc lưu trữ và truy xuất hệ thống dữ liệu.

MySQL có 4 loại ngôn ngữ chính:

  • Ngôn ngữ điều khiển dữ liệu.
  • Ngôn ngữ định nghĩa dữ liệu.
  • Ngôn ngữ truy vấn có cấu trúc.
  • Ngôn ngữ thao tác dữ liệu.

Khi ứng dụng MySQL, các công việc sẽ được tiến hành nhanh chóng và đơn giản hơn.

Không những thế, đây còn là một công cụ hữu hiệu, hỗ trợ việc phát triển chương trình của các lập trình viên Backend, kết hợp cùng PHP để tạo ra những sản phẩm web chất lượng và một số ngôn ngữ khác để hỗ trợ tối ưu cho công việc.

3. Sự khác nhau cơ bản giữa SQL và MySQL

SQL MySQL SQL là ngôn ngữ truy vấn có cấu trúc được sử dụng để quản lý cơ sở dữ liệu liên kết. MySQL là một hệ thống quản lý cơ sở dữ liệu liên kết được sử dụng để lưu trữ, truy xuất, sửa đổi và quản trị cơ sở dữ liệu bằng SQL. Chúng ta có rất nhiều phần mềm cơ sở dữ liệu có sẵn trên thị trường. Những cái phổ biến bao gồm MySQL, SQL Server, Oracle, Informix, v.v. Nó là ngôn ngữ truy vấn Nó là phần mềm cơ sở dữ liệu, sử dụng SQL làm ngôn ngữ để truy vấn cơ sở dữ liệu. Vì đây là ngôn ngữ, nó không nhận được cập nhật. Các lệnh SQL luôn giữ nguyên. Vì nó là một phần mềm nên được cập nhật thường xuyên.

4. Sự khác nhau giữa các lệnh trong SQL và MySQL

Các yếu tố MS SQL Server MySQL Hàm độ dài SELECT LEN(data_string) FROM TableName SELECT CHARACTER_LENGTH(data_string) FROM TableName Hàm ghép SELECT (‘SQL’ + ‘SERVER’) SELECT CONCAT (‘My’, ‘SQL’) Chọn các bản ghi n hàng đầu từ một bảng SELECT TOP 10 * FROM TableName WHERE id = 2 SELECT * FROM TableName WHERE id = 2 LIMIT 10 Tạo GUID (Mã định danh duy nhất toàn cầu) SELECT NEWID() SELECT UUID() Nhận ngày giờ hiện tại SELECT GETDATE() SELECT NOW() Case Sensitive Collation Trong SQL Server, nếu cơ sở dữ liệu được xác định với đối chiếu phân biệt chữ hoa chữ thường thì tên bảng và tên cột trở nên phân biệt chữ hoa chữ thường.Hãy để chúng tôi lấy một ví dụ ở đây.Giả sử bạn đã tạo một bảng trong cơ sở dữ liệu đối chiếu phân biệt chữ hoa chữ thường:Tạo bảng Kỹ sư (SNo int, EngineeringName Varchar (80), Tiền lương)Quan sát chữ E viết hoa trong tên bảng.Bây giờ nếu tôi chạy truy vấn sau:Chọn * từ các engineerSau đó, nó sẽ đưa ra lỗi sau:Tên đối tượng không hợp lệ “engineers”Bạn cần viết tên bảng trong truy vấn trong cùng trường hợp như đã được đề cập tại thời điểm tạo bảng:Chọn * từ Engineers Trong MySQL, không có Case Sensitive Collation trong tên định danh

Trên đây là những cơ sở giúp bạn phân biệt MySQL và SQL Server. Hy vọng với những thông tin mà chúng tôi cung cấp ở trên sẽ giúp bạn lựa chọn sử dụng cơ sở quản trị dữ liệu phù hợp nhất.

Bên cạnh đó Học viện công nghệ MCI cũng luôn có các khóa học về Data SQL từ cơ bản đến nâng cao để bạn tham khảo lộ trình học. Xem thêm lộ trình học chi tiết tại đây.

Tổng hợp và biên tập

Chương trình đào tạo: Phân tích dữ liệu, Khoa học dữ liệu, Kĩ sư dữ liệu, Lập trình ứng dụng.