1. Giới thiệu về SQL
SQL (Structured Query Language) là ngôn ngữ truy vấn có cấu trúc, được sử dụng để tương tác với hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) như MySQL, PostgreSQL, SQL Server, Oracle, SQLite,…
SQL cho phép:
• Tạo và quản lý cơ sở dữ liệu
• Thêm, sửa, xóa dữ liệu
• Truy vấn, lọc và phân tích dữ liệu
• Phân quyền người dùng và bảo mật dữ liệu
⸻
2. SQL Cơ Bản
2.1. Các lệnh chính trong SQL
SQL cơ bản thường xoay quanh nhóm lệnh:
1. DDL (Data Definition Language – Ngôn ngữ định nghĩa dữ liệu)
• CREATE – Tạo mới bảng, cơ sở dữ liệu
• ALTER – Thay đổi cấu trúc bảng
• DROP – Xóa bảng hoặc cơ sở dữ liệu
2. DML (Data Manipulation Language – Ngôn ngữ thao tác dữ liệu)
• INSERT – Thêm dữ liệu
• UPDATE – Sửa dữ liệu
• DELETE – Xóa dữ liệu
3. DQL (Data Query Language – Ngôn ngữ truy vấn dữ liệu)
• SELECT – Lấy dữ liệu
4. DCL (Data Control Language – Ngôn ngữ điều khiển dữ liệu)
• GRANT – Cấp quyền
• REVOKE – Thu hồi quyền
⸻
2.2. Cú pháp cơ bản
Tạo bảng:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Thêm dữ liệu:
INSERT INTO users (name, email)
VALUES (‘Trung Vu’, ‘trung@example.com’);
Truy vấn dữ liệu:
SELECT name, email FROM users;
Cập nhật dữ liệu:
UPDATE users
SET name = ‘Trung Nguyễn’
WHERE id = 1;
Xóa dữ liệu:
DELETE FROM users WHERE id = 1;
⸻
2.3. Các toán tử và điều kiện cơ bản
• =, <> (khác), <, >, <=, >=
• BETWEEN … AND …
• IN (danh sách giá trị)
• LIKE (tìm kiếm theo mẫu, dùng % hoặc _)
• IS NULL / IS NOT NULL
Ví dụ:
SELECT * FROM users
WHERE email LIKE ‘%gmail.com’;
⸻
2.4. Sắp xếp và giới hạn kết quả
SELECT * FROM users
ORDER BY created_at DESC
LIMIT 10;
⸻
3. SQL Nâng Cao
3.1. JOIN – Kết hợp bảng
JOIN dùng để lấy dữ liệu từ nhiều bảng dựa trên mối quan hệ giữa chúng.
• INNER JOIN: Chỉ lấy dữ liệu khi có giá trị khớp ở cả hai bảng.
• LEFT JOIN: Lấy tất cả dữ liệu từ bảng bên trái, bảng bên phải chỉ lấy khi khớp.
• RIGHT JOIN: Ngược lại với LEFT JOIN.
• FULL JOIN: Lấy tất cả dữ liệu từ cả hai bảng (một số hệ CSDL không hỗ trợ trực tiếp, như MySQL).
Ví dụ:
SELECT orders.id, users.name, orders.total
FROM orders
INNER JOIN users ON orders.user_id = users.id;
⸻
3.2. Nhóm và tổng hợp dữ liệu
Dùng GROUP BY kết hợp với các hàm:
• COUNT() – Đếm số dòng
• SUM() – Tính tổng
• AVG() – Tính trung bình
• MIN(), MAX() – Giá trị nhỏ nhất/lớn nhất
Ví dụ:
SELECT user_id, COUNT(*) AS total_orders, SUM(total) AS total_amount
FROM orders
GROUP BY user_id
HAVING total_orders > 5;
⸻
3.3. Subquery – Truy vấn lồng
SELECT name, email
FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 1000000
);
⸻
3.4. Index – Chỉ mục
Index giúp tăng tốc truy vấn nhưng tiêu tốn bộ nhớ.
CREATE INDEX idx_email ON users(email);
⸻
3.5. View – Bảng ảo
CREATE VIEW top_customers AS
SELECT user_id, SUM(total) AS total_amount
FROM orders
GROUP BY user_id
ORDER BY total_amount DESC;
⸻
3.6. Transaction – Giao dịch
Giao dịch đảm bảo tính toàn vẹn dữ liệu, có thể COMMIT hoặc ROLLBACK.
START TRANSACTION;
UPDATE accounts SET balance = balance – 500 WHERE id = 1;
UPDATE accounts SET balance = balance + 500 WHERE id = 2;
COMMIT;
— Nếu có lỗi: ROLLBACK;
⸻
3.7. Stored Procedure – Thủ tục lưu trữ
DELIMITER //
CREATE PROCEDURE GetUserOrders(IN uid INT)
BEGIN
SELECT * FROM orders WHERE user_id = uid;
END //
DELIMITER ;
⸻
4. Lưu ý khi làm việc với SQL
• Luôn sao lưu dữ liệu trước khi thay đổi lớn
• Dùng LIMIT khi thử nghiệm truy vấn
• Tối ưu chỉ mục khi bảng lớn
• Bảo mật: Tránh SQL Injection bằng Prepared Statements
• Viết code rõ ràng và có chú thích
⸻
5. Kết luận
SQL là nền tảng quan trọng cho mọi lập trình viên và quản trị cơ sở dữ liệu. Việc nắm chắc từ cơ bản đến nâng cao sẽ giúp bạn làm việc hiệu quả, tối ưu hiệu suất và đảm bảo an toàn dữ liệu.
Hãy bắt đầu từ những câu lệnh đơn giản, sau đó dần khám phá JOIN, GROUP BY, SUBQUERY, INDEX… và áp dụng vào các dự án thực tế.




Để lại một bình luận
Bạn phải đăng nhập để gửi bình luận.