Trong bối cảnh dữ liệu ngày càng đóng vai trò trung tâm trong các hệ thống thông tin, ngôn ngữ SQL (Structured Query Language) trở thành công cụ cốt lõi để định nghĩa cấu trúc, thao tác và khai thác dữ liệu trên các hệ quản trị cơ sở dữ liệu quan hệ. Dưới góc độ là người thực hiện chia sẻ, tôi tiến hành tổng hợp và phân tích nội dung từ tài liệu tham khảo “The Ultimate Guide of SQL” cùng một số nguồn cơ bản khác, nhằm xây dựng một cái nhìn hệ thống về SQL phục vụ cho học tập và ứng dụng thực tiễn.
Báo cáo trình bày: (1) vai trò của SQL và các nhóm lệnh chính; (2) các thành phần truy vấn cơ bản như SELECT, WHERE, GROUP BY, HAVING; (3) các kỹ thuật truy vấn nâng cao gồm JOIN, truy vấn lồng, CTE, toán tử tập hợp, hàm cửa sổ (window functions) và hàm thời gian; (4) thảo luận việc vận dụng các kỹ thuật này vào các bài toán phỏng vấn tuyển dụng và các tình huống thực tế. Kết quả cho thấy việc nắm vững các khối kiến thức nền tảng kết hợp với kỹ thuật nâng cao sẽ giúp người học chủ động hơn trong phân tích dữ liệu và đáp ứng tốt hơn các yêu cầu nghề nghiệp liên quan đến dữ liệu.
1. ĐẶT VẤN ĐỀ
Sự phát triển mạnh mẽ của các hệ thống thông tin, thương mại điện tử, mạng xã hội và các ứng dụng phân tích dữ liệu đã làm cho khối lượng dữ liệu phát sinh hàng ngày trở nên khổng lồ. Các tổ chức không chỉ cần lưu trữ mà còn phải khai thác dữ liệu để ra quyết định. Trong đa số trường hợp, dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) như MySQL, PostgreSQL, SQL Server, Oracle,…
Từ thực tế đó, tôi viết báo cáo này dựa trên tài liệu tham khảo “The Ultimate Guide of SQL” được cung cấp dưới dạng hình ảnh trên Panpage Laravel & PHP Developers. Mục đích là hệ thống hóa lại nội dung một cách logic, làm cơ sở cho việc học tập cũng như chuẩn bị cho các việc phỏng vấn tuyển dụng liên quan đến SQL.
2. MỤC TIÊU VÀ PHẠM VI
2.1. Mục tiêu
- Trình bày tổng quan có hệ thống về SQL, từ các nhóm lệnh cơ bản đến các kỹ thuật truy vấn nâng cao.
- Làm rõ mối liên hệ giữa kiến thức lý thuyết và các bài toán thực tiễn, đặc biệt là các câu hỏi phỏng vấn thường gặp.
- Đề xuất một lộ trình tự học SQL dựa trên tài liệu tham khảo và phân tích cá nhân.
2.2. Phạm vi
- Bài viết tập trung vào SQL chuẩn và các khái niệm cơ bản áp dụng được trên hầu hết hệ quản trị CSDL quan hệ; không đi sâu vào khác biệt cụ thể giữa từng hệ.
- Các ví dụ và câu hỏi phỏng vấn được trích lọc, giản lược từ tài liệu tham khảo để đảm bảo tính khái quát và mạch lạc.
3. CƠ SỞ LÝ THUYẾT VỀ SQL
3.1. Các nhóm lệnh chính trong SQL
Dựa trên tài liệu tham khảo, các câu lệnh SQL phân chia thành một số nhóm chức năng:
- Dữ liệu định nghĩa – DDL (Data Definition Language): CREATE, ALTER, DROP, TRUNCATE dùng để tạo, sửa, xoá cấu trúc các đối tượng như bảng, view, schema. Đây là nền tảng để xây dựng “bộ khung” cho cơ sở dữ liệu.
- Dữ liệu thao tác – DML (Data Manipulation Language): INSERT, UPDATE, DELETE cho phép thêm, sửa, xoá các bản ghi trong bảng. Nhóm này liên quan trực tiếp đến hoạt động vận hành hàng ngày trên dữ liệu.
- Kiểu dữ liệu: Gồm các nhóm chính: số (INT, FLOAT, DECIMAL…), chuỗi (CHAR, VARCHAR, TEXT…), ngày giờ (DATE, DATETIME, TIMESTAMP…), cùng các kiểu đặc thù khác. Việc lựa chọn đúng kiểu dữ liệu là điều kiện để đảm bảo tính chính xác và hiệu quả lưu trữ.
Các nhóm lệnh trên tạo thành bộ công cụ cơ bản mà bất kỳ người sử dụng SQL nào cũng cần nắm vững trước khi tiếp cận các kỹ thuật nâng cao.
3.2. Cấu trúc truy vấn dữ liệu cơ bản
Trọng tâm của SQL là câu lệnh SELECT. Theo tài liệu tham khảo, một câu truy vấn thường được xây dựng từ các thành phần:
- SELECT: chỉ định các cột cần lấy.
- FROM: chỉ định bảng hoặc tập kết quả.
- WHERE: đặt điều kiện lọc.
- ORDER BY: sắp xếp kết quả.
- LIMIT hoặc TOP: giới hạn số dòng trả về.
- Các toán tử logic và so sánh: AND, OR, NOT, LIKE, IN, BETWEEN…
Các hàm tổng hợp (SUM, COUNT, AVG, MAX, MIN) kết hợp với GROUP BY và HAVING cho phép thống kê dữ liệu theo từng nhóm, ví dụ như tổng doanh thu theo tháng hoặc số lượng sinh viên theo lớp.
.png)
Hình 1. Hình minh họa bảng Customers và câu lệnh Select
4. CÁC KỸ THUẬT TRUY VẤN NÂNG CAO
4.1. JOIN – kết hợp dữ liệu từ nhiều bảng
JOIN là kỹ thuật cốt lõi trong SQL dùng để liên kết dữ liệu dựa trên khoá chung. Tài liệu tham khảo hệ thống hóa các loại JOIN gồm: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN và SELF JOIN.
Dưới góc độ người thực hiện, tôi nhận thấy việc hiểu rõ ý nghĩa từng loại JOIN là điều kiện tiên quyết để thiết kế được các truy vấn tổng hợp phức tạp, như kết hợp thông tin nhân viên – phòng ban – lương – dự án trong một báo cáo duy nhất.
.png)
Hình 2. Tổng hợp các loại JOIN: INNER, LEFT, RIGHT, FULL OUTER trên hai tập dữ liệu
4.2. Subquery và CTE – tổ chức truy vấn nhiều bước
Subquery là truy vấn lồng bên trong câu lệnh khác, thường được sử dụng để:
- Lọc dữ liệu dựa trên kết quả của truy vấn phụ.
- Tính toán giá trị trung gian (ví dụ: mức lương cao nhất) làm điều kiện cho truy vấn chính.
CTE (Common Table Expressions) với từ khóa WITH được giới thiệu như một cách viết truy vấn rõ ràng hơn so với subquery truyền thống. CTE cho phép định nghĩa “bảng logic tạm thời” và tái sử dụng nhiều lần trong cùng câu truy vấn. Qua việc tham khảo tài liệu, tôi đánh giá rằng CTE đặc biệt hữu ích đối với các bài toán nhiều bước như tính tăng trưởng năm – sau – năm (year-on-year), phân hạng dữ liệu hoặc phân tích chuỗi thời gian.
4.3. Toán tử tập hợp: UNION và UNION ALL
UNION và UNION ALL được dùng để gộp kết quả của nhiều truy vấn có cùng cấu trúc cột. Sự khác biệt chính là UNION loại bỏ các dòng trùng lặp, trong khi UNION ALL giữ nguyên. Đây là công cụ quan trọng khi cần kết hợp dữ liệu từ nhiều nguồn tương đương, chẳng hạn gộp bảng dữ liệu bán hàng của các năm khác nhau.
4.4. Truy vấn tồn tại và logic điều kiện
Tài liệu đề cập tới EXISTS để kiểm tra sự tồn tại của bản ghi thỏa điều kiện trong truy vấn con, rất phù hợp với những bài toán như “kiểm tra khách hàng đã từng mua hàng hay chưa”.
Bên cạnh đó, CASE WHEN cho phép xây dựng logic điều kiện ngay trong câu truy vấn, hỗ trợ phân loại dữ liệu (ví dụ: xếp hạng khách hàng theo mức chi tiêu) mà không cần viết thêm mã ở tầng ứng dụng.
4.5. Window Functions và hàm thời gian
Một trong những phần quan trọng nhất của tài liệu tham khảo là window functions. Các hàm như ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, NTILE, FIRST_VALUE, LAST_VALUE kết hợp với mệnh đề OVER (PARTITION BY … ORDER BY …) cho phép:
- Xếp hạng phần tử trong nhóm (ví dụ: lương cao thứ nhất, thứ hai).
- Truy xuất giá trị ở dòng trước hoặc sau để tính chênh lệch.
- Tính các chỉ số cộng dồn hoặc trung bình trượt theo thời gian.
Khi áp dụng trên dữ liệu thời gian, các hàm ngày giờ như NOW, CURRENT_DATE, DATEADD, DATEDIFF giúp tính toán số ngày chênh lệch, cộng thêm khoảng thời gian cho một mốc ngày cụ thể, từ đó hỗ trợ mạnh cho các báo cáo liên quan đến lịch sử giao dịch, tăng trưởng doanh thu, v.v.
5. VẬN DỤNG TRONG CÁC BÀI TOÁN PHỎNG VẤN VÀ THỰC TIỄN
Dựa trên phần câu hỏi phỏng vấn trong tài liệu, tôi nhận thấy các nhà tuyển dụng thường sử dụng những bài toán thực tế để kiểm tra mức độ nắm vững SQL của ứng viên. Một số dạng câu hỏi tiêu biểu gồm:
- Tìm mức lương cao thứ hai: yêu cầu ứng viên sử dụng DENSE_RANK hoặc các kỹ thuật truy vấn lồng để xác định giá trị đứng thứ hai, qua đó đánh giá khả năng dùng window functions hoặc subquery.
- Xoá bản ghi trùng lặp: buộc ứng viên hiểu rõ khái niệm trùng lặp theo nhiều cột và biết cách kết hợp GROUP BY, hàm tổng hợp và DELETE.
- Tính tổng cộng dồn và trung bình trượt: thường liên quan đến SUM() OVER hoặc AVG() OVER với cửa sổ thời gian, rất phổ biến trong phân tích tài chính và hành vi người dùng.
- Lọc nhân viên mới nhất trong mỗi phòng ban: kết hợp sắp xếp, điều kiện ngày nghỉ việc và có thể sử dụng window functions để chọn duy nhất bản ghi mong muốn.
.png)
Hình 3. Block sơ đồ “SQL Aggregate Functions”
Thông qua việc phân tích các ví dụ này, tôi nhận thấy rằng kiến thức SQL ở mức “thuần cú pháp” là chưa đủ. Ứng viên cần tư duy theo hướng thuật toán trên dữ liệu: xác định bước trung gian cần tính, lựa chọn kỹ thuật thích hợp (JOIN, CTE, window function,…) và viết truy vấn rõ ràng, dễ kiểm tra.
6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Từ việc tổng hợp và phân tích tài liệu “The Ultimate Guide of SQL” dưới góc độ cá nhân, tôi rút ra một số kết luận chính:
- SQL là kỹ năng nền tảng, mang tính hệ thống.
Việc học SQL nên bắt đầu từ việc hiểu vai trò của từng nhóm lệnh (DDL, DML), nắm vững cấu trúc câu truy vấn cơ bản và các kiểu dữ liệu. Đây là nền tảng để hạn chế lỗi thiết kế và thao tác dữ liệu.
- Các kỹ thuật nâng cao giúp giải quyết bài toán thực tế một cách hiệu quả hơn.
JOIN, subquery, CTE, UNION và đặc biệt là window functions cho phép biểu diễn các yêu cầu phức tạp như xếp hạng, cộng dồn, so sánh theo thời gian… một cách ngắn gọn và tối ưu hơn so với cách triển khai ở tầng ứng dụng.
- Các câu hỏi phỏng vấn phản ánh sát nhu cầu thực tiễn.
Nội dung trong tài liệu tham khảo cho thấy nhà tuyển dụng kỳ vọng ứng viên không chỉ thuộc cú pháp, mà còn biết lựa chọn chiến lược truy vấn phù hợp để xử lý các tình huống dữ liệu đa dạng.
- Đề xuất lộ trình tự học SQL cho sinh viên
- Giai đoạn 1: Học và luyện tập các lệnh cơ bản (DDL, DML, SELECT, WHERE, GROUP BY, HAVING).
- Giai đoạn 2: Thực hành trên các website luyện SQL trực tuyến để tăng phản xạ.
- Giai đoạn 3: Nghiên cứu JOIN, subquery, CTE, window functions thông qua các ví dụ tương tự trong tài liệu tham khảo.
- Giai đoạn 4: Hệ thống hóa kiến thức qua việc giải các bộ câu hỏi phỏng vấn và tự xây dựng các bài toán từ dữ liệu thực tế.
.jpg)
Hình 4. Poster “Clauses in SQL” Where, And, Or, Like, Limit, Order By, Group By
TÀI LIỆU THAM KHẢO
[1] Tài liệu “The Ultimate Guide of SQL” (bản chụp hình có nguồn tham khảo cung cấp tại https://www.facebook.com/groups/1875707456014085).
[2] W3Schools – SQL Tutorial, truy cập tại: https://www.w3schools.com/sql/
[3] SQLBolt – Learn SQL with interactive lessons, truy cập tại: https://sqlbolt.com/