Cơ bảnKiến thức cơ bản

Các lệnh SQL cơ bản: SELECT, INSERT, UPDATE, DELETE

8 phút đọc0 lượt xem
#sql#database#select#insert#update#delete

Tổng quan các lệnh SQL cơ bản

Bài viết này hướng dẫn chi tiết 4 lệnh SQL cơ bản: SELECT, INSERT, UPDATE, DELETE với ví dụ thực tế dùng bảng quản lý sinh viên Việt Nam.

Nếu chưa biết SQL là gì, hãy đọc SQL là gì? Hướng dẫn SQL cơ bản từ đầu.

Bảng luyện tập

-- Tạo bảng sinh viên
CREATE TABLE sinh_vien (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    ho_ten TEXT NOT NULL,
    tuoi INTEGER,
    email TEXT,
    nganh TEXT,
    diem_tb REAL
);

-- Thêm dữ liệu mẫu
INSERT INTO sinh_vien (ho_ten, tuoi, email, nganh, diem_tb) VALUES
    ('Nguyễn Văn Minh', 20, 'minh@email.com', 'CNTT', 8.5),
    ('Trần Thị Lan', 21, 'lan@email.com', 'CNTT', 9.0),
    ('Lê Hoàng Nam', 19, 'nam@email.com', 'Kinh tế', 7.5),
    ('Phạm Thị Mai', 22, 'mai@email.com', 'CNTT', 8.0),
    ('Võ Đức Hùng', 20, 'hung@email.com', 'Marketing', 7.0),
    ('Nguyễn Thị Hoa', 21, 'hoa@email.com', 'Kinh tế', 8.5),
    ('Đặng Văn Tùng', 23, 'tung@email.com', 'CNTT', 6.5);

SELECT — Truy vấn dữ liệu

SELECT cơ bản

SELECT * FROM sinh_vien;
SELECT ho_ten, nganh, diem_tb FROM sinh_vien;

WHERE — Lọc theo điều kiện

SELECT * FROM sinh_vien WHERE nganh = 'CNTT';
SELECT * FROM sinh_vien WHERE diem_tb >= 8.0;
SELECT * FROM sinh_vien WHERE nganh = 'CNTT' AND diem_tb >= 8.0;
SELECT * FROM sinh_vien WHERE nganh = 'CNTT' OR nganh = 'Marketing';
SELECT * FROM sinh_vien WHERE ho_ten LIKE '%Nguyễn%';
SELECT * FROM sinh_vien WHERE tuoi BETWEEN 20 AND 22;
SELECT * FROM sinh_vien WHERE nganh IN ('CNTT', 'Marketing');

ORDER BY — Sắp xếp

SELECT * FROM sinh_vien ORDER BY diem_tb DESC;
SELECT * FROM sinh_vien ORDER BY ho_ten ASC;

LIMIT và DISTINCT

SELECT * FROM sinh_vien ORDER BY diem_tb DESC LIMIT 3;
SELECT DISTINCT nganh FROM sinh_vien;

INSERT — Thêm dữ liệu

INSERT INTO sinh_vien (ho_ten, tuoi, email, nganh, diem_tb)
VALUES ('Bùi Văn Long', 20, 'long@email.com', 'CNTT', 7.5);

INSERT INTO sinh_vien (ho_ten, tuoi, email, nganh, diem_tb) VALUES
    ('Hoàng Thị Thảo', 19, 'thao@email.com', 'Marketing', 8.0),
    ('Phan Đức Anh', 22, 'anh@email.com', 'Kinh tế', 7.0);

UPDATE — Cập nhật dữ liệu

UPDATE sinh_vien SET email = 'minh.nguyen@gmail.com'
WHERE ho_ten = 'Nguyễn Văn Minh';

-- ⚠ QUAN TRỌNG: Luôn dùng WHERE!
-- UPDATE sinh_vien SET diem_tb = 0; -- NGUY HIỂM!

DELETE — Xóa dữ liệu

DELETE FROM sinh_vien WHERE id = 7;

-- ⚠ CẢNH BÁO: DELETE không WHERE sẽ xóa HẾT!
-- DELETE FROM sinh_vien; -- NGUY HIỂM!

Hàm tổng hợp (Aggregate Functions)

SELECT COUNT(*) AS tong_sv FROM sinh_vien;
SELECT AVG(diem_tb) AS diem_tb_chung FROM sinh_vien;
SELECT MAX(diem_tb) AS diem_cao_nhat FROM sinh_vien;
SELECT MIN(diem_tb) AS diem_thap_nhat FROM sinh_vien;

GROUP BY — Nhóm dữ liệu

SELECT nganh, COUNT(*) AS so_luong FROM sinh_vien GROUP BY nganh;

SELECT nganh, AVG(diem_tb) AS diem_tb_nganh
FROM sinh_vien GROUP BY nganh;

SELECT nganh, AVG(diem_tb) AS diem_tb_nganh
FROM sinh_vien GROUP BY nganh HAVING AVG(diem_tb) >= 8.0;

Bài tập thực hành

  1. Hiển thị tên và điểm trung bình của tất cả sinh viên
  2. Tìm sinh viên ngành CNTT, sắp xếp theo điểm giảm dần
  3. Tìm sinh viên từ 20 tuổi trở lên có điểm >= 8.0
  4. Đếm số sinh viên và tính điểm TB theo từng ngành
  5. Tìm sinh viên có điểm cao nhất

Câu hỏi thường gặp (FAQ)

Hỏi: WHERE và HAVING khác nhau thế nào?

Trả lời: WHERE lọc từng hàng trước khi nhóm. HAVING lọc nhóm sau khi GROUP BY.

Hỏi: Kiểm tra NULL thế nào?

Trả lời: Dùng IS NULL thay vì = NULL. Ví dụ: WHERE email IS NULL.

Bước tiếp theo

  1. Ôn SQL cơ bảnSQL là gì?

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.

Khóa học liên quan

The Complete SQL Bootcamp: Go from Zero to Hero

SQL từ cơ bản đến nâng cao với PostgreSQL.

4.7399.000 ₫
Xem khóa học →

MongoDB - The Complete Developer's Guide

Học MongoDB toàn diện: CRUD, aggregation, indexing.

4.6499.000 ₫
Xem khóa học →
Quảng cáo