SQL (Structured Query Language) là ngôn ngữ tiêu chuẩn dùng để tương tác với cơ sở dữ liệu quan hệ (RDBMS – Relational Database Management System). Với SQL, bạn có thể:
- Tạo, chỉnh sửa và xóa bảng dữ liệu.
- Thêm, sửa, xóa dữ liệu.
- Truy vấn dữ liệu theo điều kiện.
- Quản lý quyền truy cập.
- Tối ưu hóa và phân tích dữ liệu.
SQL hoạt động trên nhiều hệ quản trị cơ sở dữ liệu phổ biến như MySQL, PostgreSQL, SQL Server, Oracle. Dù mỗi hệ thống có một số khác biệt nhỏ, cú pháp SQL cơ bản thường tương đồng.
Các khái niệm cơ bản trong SQL
– Cơ sở dữ liệu (Database)
Là tập hợp có tổ chức các bảng dữ liệu liên quan.
– Bảng (Table)
Cấu trúc dữ liệu dạng hàng (row) và cột (column).
Ví dụ bảng Users:
| id | name | |
| 1 | Nguyễn An | an@example.com |
| 2 | Lê Bình | binh@example.com |
– Cột (Column) và Hàng (Row)
- Cột: xác định kiểu dữ liệu (INT, VARCHAR, DATE…).
- Hàng: chứa dữ liệu cụ thể cho mỗi bản ghi.
– Khóa chính (Primary Key)
Trường hoặc nhóm trường duy nhất định danh bản ghi.
– Khóa ngoại (Foreign Key)
Trường liên kết bảng này với bảng khác.
Các câu lệnh SQL cơ bản
Tạo bảng
sql
Sao chépChỉnh sửa
CREATE TABLE Users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(100)
);
Thêm dữ liệu
sql
Sao chépChỉnh sửa
INSERT INTO Users (name, email)
VALUES (‘Nguyễn An’, ‘an@example.com’),
(‘Lê Bình’, ‘binh@example.com’);
Truy vấn dữ liệu
sql
Sao chépChỉnh sửa
SELECT * FROM Users; — Lấy tất cả dữ liệu
SELECT name, email FROM Users WHERE id = 1; — Lấy theo điều kiện
Cập nhật dữ liệu
sql
Sao chépChỉnh sửa
UPDATE Users
SET email = ‘an_new@example.com’
WHERE id = 1;
Xóa dữ liệu
sql
Sao chépChỉnh sửa
DELETE FROM Users WHERE id = 2;
Xóa bảng
sql
Sao chépChỉnh sửa
DROP TABLE Users;
Các kỹ thuật truy vấn nâng cao
Sắp xếp dữ liệu (ORDER BY)
sql
Sao chépChỉnh sửa
SELECT * FROM Users ORDER BY name ASC; — Tăng dần
SELECT * FROM Users ORDER BY name DESC; — Giảm dần
Giới hạn số bản ghi (LIMIT)
sql
Sao chépChỉnh sửa
SELECT * FROM Users LIMIT 5; — Lấy 5 dòng đầu
Lọc dữ liệu nâng cao (WHERE, AND, OR, IN, BETWEEN, LIKE)
sql
Sao chépChỉnh sửa
SELECT * FROM Users WHERE name LIKE ‘Nguyễn%’;
SELECT * FROM Orders WHERE price BETWEEN 100 AND 500;
SELECT * FROM Users WHERE id IN (1, 3, 5);
Gộp dữ liệu (GROUP BY) và điều kiện nhóm (HAVING)
sql
Sao chépChỉnh sửa
SELECT department, COUNT(*) AS total
FROM Employees
GROUP BY department
HAVING total > 5;
Kết hợp bảng (JOIN)
- INNER JOIN: Chỉ lấy dữ liệu khớp ở cả hai bảng.
- LEFT JOIN: Lấy tất cả dữ liệu bảng bên trái + dữ liệu khớp bảng bên phải.
- RIGHT JOIN: Ngược lại LEFT JOIN.
- FULL JOIN: Lấy tất cả dữ liệu ở cả hai bảng.
Ví dụ:
sql
Sao chépChỉnh sửa
SELECT Orders.id, Users.name, Orders.total
FROM Orders
INNER JOIN Users ON Orders.user_id = Users.id;
Truy vấn lồng nhau (Subquery)
sql
Sao chépChỉnh sửa
SELECT name
FROM Users
WHERE id IN (
SELECT user_id FROM Orders WHERE total > 1000
);
Kỹ thuật tối ưu hóa và nâng cao
Tạo chỉ mục (Index) để tăng tốc truy vấn
sql
Sao chépChỉnh sửa
CREATE INDEX idx_email ON Users(email);
Chỉ mục giúp tăng tốc độ tìm kiếm nhưng tốn thêm bộ nhớ và ảnh hưởng đến tốc độ ghi dữ liệu.
Sử dụng View
sql
Sao chépChỉnh sửa
CREATE VIEW HighValueOrders AS
SELECT * FROM Orders WHERE total > 1000;
View như một “bảng ảo” lưu truy vấn phức tạp.
Stored Procedure và Function
sql
Sao chépChỉnh sửa
CREATE PROCEDURE GetUserOrders(IN userId INT)
BEGIN
SELECT * FROM Orders WHERE user_id = userId;
END;
Giúp tái sử dụng và bảo mật truy vấn.
Trigger
sql
Sao chépChỉnh sửa
CREATE TRIGGER before_user_insert
BEFORE INSERT ON Users
FOR EACH ROW
SET NEW.created_at = NOW();
Tự động thực hiện hành động khi xảy ra sự kiện (INSERT, UPDATE, DELETE).
Quản lý giao dịch (Transaction)
sql
Sao chépChỉnh sửa
START TRANSACTION;
UPDATE Accounts SET balance = balance – 100 WHERE id = 1;
UPDATE Accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
Transaction đảm bảo tính toàn vẹn dữ liệu (cùng thành công hoặc cùng thất bại).

Mẹo học SQL hiệu quả
- Bắt đầu từ cơ bản: Hiểu bảng, cột, khóa.
- Thực hành nhiều: Dùng MySQL Workbench, pgAdmin hoặc SQLite Studio.
- Làm dự án nhỏ: Ví dụ quản lý sinh viên, bán hàng.
- Đọc tài liệu chính thức: MySQL Docs, PostgreSQL Docs.
- Học song song tối ưu hóa: Hiểu Index, Explain Plan.
- Tránh thuộc lòng mù quáng: Nên hiểu logic câu lệnh.
- Luyện giải bài tập trên LeetCode, HackerRank.
Học SQL không chỉ là ghi nhớ cú pháp mà còn là hiểu cách dữ liệu được lưu trữ và xử lý. Khi nắm vững từ cơ bản (SELECT, INSERT, UPDATE, DELETE) đến nâng cao (JOIN, INDEX, VIEW, PROCEDURE, TRANSACTION), bạn sẽ có khả năng xử lý dữ liệu chuyên nghiệp, phục vụ cho lập trình, phân tích dữ liệu và quản trị hệ thống.
Tóm lại:
- Bắt đầu với lệnh cơ bản.
- Hiểu mối quan hệ bảng.
- Thực hành nhiều với dữ liệu thật.
Nâng cấp dần kiến thức tối ưu và bảo mật.
