Cách Truy Vấn Dữ Liệu Với SELECT Trong MySQL Hiệu Quả Nhất

24/02/2026 P T P Chung 9 phút đọc 0 bình luận

Mở đầu

Trong thế giới của cơ sở dữ liệu quan hệ, khả năng truy vấn và khai thác thông tin chính là cốt lõi của mọi ứng dụng. Và trong MySQL, lệnh SELECT chính là công cụ mạnh mẽ nhất để làm điều đó. Dù bạn đang xây dựng một trang web thương mại điện tử, hệ thống quản lý nhân sự hay ứng dụng IoT, việc nắm vững cách viết và tối ưu các câu lệnh SELECT sẽ quyết định hiệu năng và trải nghiệm người dùng. Trong bài viết này, chúng ta sẽ cùng khám phá từng thành phần của lệnh SELECT, từ cú pháp cơ bản đến các mẹo nâng cao, giúp bạn tự tin xử lý mọi tình huống truy vấn dữ liệu.

Cú pháp cơ bản của SELECT

Cấu trúc đơn giản nhất

Mọi câu lệnh SELECT đều bắt đầu bằng từ khóa SELECT, theo sau là danh sách các cột cần lấy, và kết thúc bằng FROM cùng tên bảng:

SELECT ten_cot1, ten_cot2
FROM ten_bang;

Lấy tất cả các cột

Khi bạn muốn xem toàn bộ dữ liệu trong bảng mà không cần liệt kê từng cột, ký tự * sẽ giúp bạn:

SELECT *
FROM ten_bang;

Tuy nhiên, nên hạn chế dùng * trong sản phẩm thực tế vì nó có thể làm chậm truy vấn khi bảng có nhiều cột hoặc cột có kiểu dữ liệu lớn.

Lấy dữ liệu duy nhất với DISTINCT

Nếu bảng chứa nhiều giá trị trùng lặp và bạn chỉ cần mỗi giá trị xuất hiện một lần, DISTINCT sẽ giúp:

SELECT DISTINCT ten_cot
FROM ten_bang;

Ví dụ, khi truy vấn danh sách các thành phố trong bảng khách hàng, DISTINCT đảm bảo mỗi thành phố chỉ xuất hiện một lần.

Lọc dữ liệu với WHERE

Điều kiện đơn giản

Mệnh đề WHERE cho phép bạn lọc hàng dựa trên điều kiện cụ thể:

SELECT ten, tuoi
FROM nhan_vien
WHERE tuoi > 25;

Kết hợp nhiều điều kiện

Bạn có thể kết hợp nhiều điều kiện bằng AND, OR, và nhóm chúng bằng dấu ngoặc:

SELECT *
FROM san_pham
WHERE gia > 1000000
  AND (loai = 'Dien tu' OR loai = 'Gia dung');

Toán tử so sánh và LIKE

Ngoài các toán tử =, >, <, bạn có thể dùng LIKE để tìm kiếm chuỗi con:

SELECT ten
FROM khach_hang
WHERE ten LIKE 'Nguyen%';

Dấu % đại diện cho bất kỳ chuỗi ký tự nào, giúp tìm kiếm linh hoạt hơn.

Sắp xếp và giới hạn kết quả

Sắp xếp với ORDER BY

Để hiển thị kết quả theo thứ tự nhất định, dùng ORDER BY:

SELECT ten, luong
FROM nhan_vien
ORDER BY luong DESC;

Mặc định là tăng dần (ASC), thêm DESC để giảm dần.

Quảng cáo

300x250 In-Content Advertisement

Giới hạn số lượng hàng với LIMIT

Khi bảng có hàng ngàn bản ghi, LIMIT giúp bạn chỉ lấy một phần:

SELECT *
FROM don_hang
ORDER BY ngay_tao DESC
LIMIT 10;

Cú pháp này rất hữu ích cho việc phân trang hoặc hiển thị "Top N" kết quả.

Tổng hợp dữ liệu với các hàm nhóm

Các hàm tổng hợp phổ biến

MySQL cung cấp các hàm như COUNT, SUM, AVG, MAX, MIN để tính toán trên tập dữ liệu:

SELECT COUNT(*) AS tong_khach
FROM khach_hang;

SELECT AVG(gia) AS gia_trung_binh FROM san_pham;

GROUP BY và HAVING

Để tính toán theo nhóm (ví dụ: tổng doanh thu mỗi tháng), kết hợp GROUP BY với các hàm tổng hợp:

SELECT thang, SUM(doanh_thu) AS tong_thang
FROM bao_cao
GROUP BY thang;

Nếu bạn muốn lọc các nhóm sau khi đã nhóm xong, dùng HAVING:

SELECT ma_nhan_vien, COUNT(*) AS so_don
FROM don_hang
GROUP BY ma_nhan_vien
HAVING COUNT(*) > 5;

Một số mẹo nâng cao

Truy vấn lồng (Subquery)

Bạn có thể đặt một SELECT bên trong một SELECT khác để lọc hoặc tính toán:

SELECT ten
FROM san_pham
WHERE gia > (SELECT AVG(gia) FROM san_pham);

Sử dụng CASE WHEN

Để phân loại hoặc gán nhãn dữ liệu ngay trong truy vấn:

SELECT ten,
       CASE
           WHEN luong < 5000000 THEN 'Thap'
           WHEN luong < 10000000 THEN 'Trung binh'
           ELSE 'Cao'
       END AS muc_luong
FROM nhan_vien;

Tối ưu hiệu năng

- Luôn chỉ chọn các cột cần thiết thay vì *. - Đảm bảo các cột dùng trong WHEREORDER BYindex. - Hạn chế dùng DISTINCTORDER BY trên tập dữ liệu lớn nếu không thực sự cần thiết.

Kết luận

Lệnh SELECT trong MySQL là công cụ đa năng, cho phép bạn truy xuất, lọc, sắp xếp và tổng hợp dữ liệu theo mọi cách có thể tưởng tượng. Từ cú pháp cơ bản nhất cho đến các kỹ thuật nâng cao như truy vấn lồng hay hàm tổng hợp, mỗi thành phần đều góp phần giúp bạn khai thác tối đa tiềm năng của cơ sở dữ liệu. Điều quan trọng là không chỉ biết viết câu lệnh, mà còn phải hiểu cách tối ưu chúng để đảm bảo hiệu năng và khả năng mở rộng. Hãy thực hành thường xuyên, thử nghiệm với các bộ dữ liệu thực tế, và bạn sẽ sớm trở thành một chuyên gia trong việc truy vấn dữ liệu với MySQL.

Quảng cáo

728x90 Bottom Advertisement

Thay thế bằng mã Google AdSense

Chia sẻ bài viết

Facebook Twitter

Bình luận

Chia sẻ ý kiến của bạn về bài viết này

Viết bình luận

Bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị

Chưa có bình luận nào

Hãy là người đầu tiên bình luận về bài viết này!