Chúng ta đã đi qua một chặng đường quan trọng trong hành trình làm chủ SQL – nắm vững các lệnh cơ bản nhất để thao tác với dữ liệu: từ SELECT, INSERT, UPDATE đến DELETE. Giờ là lúc bạn áp dụng toàn bộ kiến thức đó vào một mini project thực tế. Trong bài này, chúng ta sẽ xây dựng một hệ thống quản lý học sinh đơn giản bằng SQL – không dùng framework hay giao diện gì cả, chỉ là SQL thuần. Mục tiêu là giúp bạn vận dụng linh hoạt các lệnh đã học, đồng thời làm quen tư duy tổ chức dữ liệu.
Mục tiêu bài học
- Ôn tập các câu lệnh SQL cơ bản
- Làm quen với tư duy thiết kế bảng dữ liệu thực tế
- Luyện tập cách kết hợp nhiều lệnh SQL trong một dự án
- Hiểu cách đọc – thêm – sửa – xóa dữ liệu trong ngữ cảnh cụ thể
Đề bài: Quản lý học sinh
Bạn hãy xây dựng một CSDL quản lý học sinh đơn giản gồm 1 bảng duy nhất students
. Mỗi dòng là một học sinh với các thông tin:
Trường dữ liệu | Kiểu dữ liệu | Ghi chú |
---|---|---|
id | INT | Khóa chính, tự tăng |
name | VARCHAR(100) | Họ và tên học sinh |
birth_year | INT | Năm sinh |
gender | ENUM | ‘male’, ‘female’, ‘other’ |
class | VARCHAR(10) | Lớp học (VD: 10A1, 11B2…) |
average_score | FLOAT | Điểm trung bình |
Các bước thực hiện
Bước 1. Tạo cơ sở dữ liệu và bảng
CREATE DATABASE student_management;
USE student_management;
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
birth_year INT,
gender ENUM('male', 'female', 'other'),
class VARCHAR(10),
average_score FLOAT
);
Bước 2. Thêm dữ liệu mẫu
INSERT INTO students (name, birth_year, gender, class, average_score)
VALUES
('Nguyễn Văn A', 2005, 'male', '10A1', 8.2),
('Trần Thị B', 2004, 'female', '11B2', 7.5),
('Lê Hoàng C', 2006, 'male', '10A1', 9.0),
('Phạm Ngọc D', 2005, 'other', '10A2', 6.8);
Bước 3. Truy vấn dữ liệu
- Xem toàn bộ học sinh:
SELECT * FROM students;
- Tìm học sinh lớp 10A1:
SELECT * FROM students
WHERE class = '10A1';
- Danh sách học sinh có điểm trung bình trên 8:
SELECT name, average_score
FROM students
WHERE average_score > 8;
Bước 4. Cập nhật & xóa dữ liệu
- Cập nhật điểm trung bình của học sinh tên “Trần Thị B”:
UPDATE students
SET average_score = 8.1
WHERE name = 'Trần Thị B';
- Xóa học sinh có id = 4:
DELETE FROM students
WHERE id = 4;
Bài tập nâng cao (tuỳ chọn)
- Tính tuổi học sinh bằng cách lấy
YEAR(CURDATE()) - birth_year
- Lọc ra học sinh có điểm từ 7 đến 9
- Sắp xếp danh sách theo điểm trung bình giảm dần
Tổng kết
Mini project này giúp bạn kết nối toàn bộ kiến thức SQL cơ bản vào một ví dụ thực tiễn. Nếu bạn thấy phần này thú vị, hãy tự nghĩ thêm bảng “giáo viên”, “môn học”, “kết quả học tập” để mô phỏng một hệ thống quản lý trường học hoàn chỉnh hơn.
Thảo luận