Get Appointment

SQL Basic Thực Hành: Hướng Dẫn Cài MySQL + 20 Bài Tập SQL
Blog Devpro
SQL Basic

Hướng dẫn học SQL Basic thực hành từ đầu: cài MySQL, MySQL Workbench, import database mẫu và luyện 20 bài SELECT, GROUP BY, HAVING, Subquery, JOIN.

Blog Devpro
Blog Devpro

SQL BASIC THỰC HÀNH – HƯỚNG DẪN CÀI MYSQL VÀ 20 BÀI TẬP CHO NGƯỜI MỚI

1. Giới thiệu bài thực hành SQL Basic

Đây là tài liệu SQL Basic thực hành dành cho người mới bắt đầu, giúp bạn từng bước cài đặt môi trường, tạo cơ sở dữ liệu mẫu và trực tiếp thực hành các câu lệnh SQL cơ bản.

Thay vì chỉ học lý thuyết, bạn sẽ sử dụng một database mẫu để thực hiện 20 bài tập SQL Basic, từ các câu lệnh SELECT đơn giản đến GROUP BY, HAVING, Subquery và JOIN nhiều bảng.

Sau khi hoàn thành bài thực hành, bạn sẽ làm quen với các nội dung:

✓ SELECT và lựa chọn cột dữ liệu

✓ WHERE và lọc dữ liệu

✓ DISTINCT

✓ ORDER BY

✓ LIMIT

✓ COUNT, SUM, AVG

✓ GROUP BY và HAVING

✓ Các hàm SQL cơ bản

✓ Subquery

✓ INNER JOIN

✓ LEFT JOIN

✓ RIGHT JOIN

✓ JOIN nhiều bảng

✓ Thực hành truy vấn trên các bài toán Trường học, Bán hàng và Nhân sự


2. Phần mềm sử dụng: MySQL và MySQL Workbench

Toàn bộ bài thực hành sử dụng MySQL 8.0+.

Để thực hành, bạn cần cài đặt:

✓ MySQL Community Server – hệ quản trị cơ sở dữ liệu.

✓ MySQL Workbench – công cụ giao diện giúp viết và thực thi các câu lệnh SQL.

Tải MySQL

Bạn có thể tải MySQL tại trang chính thức:

MySQL Community Server:

https://dev.mysql.com/downloads/mysql/

MySQL Workbench:

https://dev.mysql.com/downloads/workbench/

Đối với sinh viên sử dụng Windows, có thể sử dụng MySQL Installer để cài đặt:

https://dev.mysql.com/downloads/installer/


3. Hướng dẫn cài đặt MySQL trên Windows

Bước 1: Tải MySQL Installer

Truy cập:

https://dev.mysql.com/downloads/installer/

Tải MySQL Installer và chạy file cài đặt.

Bước 2: Chọn các thành phần cần cài

Trong quá trình cài đặt, cần đảm bảo máy tính có:

✓ MySQL Server

✓ MySQL Workbench

Bước 3: Cấu hình MySQL Server

Thực hiện các bước cấu hình theo hướng dẫn của MySQL Installer.

Khi hệ thống yêu cầu thiết lập tài khoản quản trị, sử dụng:

User: root

Sau đó tạo mật khẩu cho tài khoản root.

Lưu ý: Hãy ghi nhớ mật khẩu này vì bạn sẽ sử dụng nó để kết nối MySQL Workbench với MySQL Server.

Bước 4: Hoàn thành cài đặt

Sau khi quá trình cài đặt hoàn tất, mở:

MySQL Workbench

4. Kiểm tra MySQL sau khi cài đặt

Mở MySQL Workbench.

Chọn kết nối MySQL Local Instance và nhập mật khẩu root đã tạo khi cài đặt.

Tạo một SQL Tab mới.

Chạy câu lệnh:

SELECT VERSION();

Nếu MySQL trả về thông tin phiên bản, môi trường đã được cài đặt thành công.

Tiếp tục thử câu lệnh:

SELECT 'Hello SQL' AS message;

Nếu Result Grid hiển thị:

Hello SQL

thì bạn đã sẵn sàng bắt đầu thực hành.


5. Tải Database thực hành SQL Basic

Toàn bộ 20 bài tập sử dụng database:

sql_basic

Database đã được chuẩn bị sẵn bảng, khóa ngoại và dữ liệu mẫu phục vụ cho bài thực hành.

👉 Tải Database mẫu và đáp án 20 bài tập SQL Basic

Sau khi tải về, bạn sẽ có file:

sql_basic_sample.sql

Database gồm 3 nhóm dữ liệu chính.

Nhóm 1: Trường học

Gồm các bảng:

students
classes
teachers

Dữ liệu được sử dụng để thực hành SELECT và JOIN giữa sinh viên, lớp học và giáo viên.

Nhóm 2: Bán hàng

Gồm các bảng:

customers
orders
products
order_details

Dữ liệu được sử dụng để thực hành truy vấn khách hàng, đơn hàng, sản phẩm, doanh thu và JOIN nhiều bảng.

Nhóm 3: Nhân sự

Gồm các bảng:

employees
departments

Dữ liệu được sử dụng để thực hành các hàm SQL, Subquery, GROUP BY và HAVING.


6. Import Database vào MySQL Workbench

Sau khi tải file sql_basic_sample.sql, thực hiện các bước sau.

Bước 1: Mở MySQL Workbench

Khởi động MySQL Workbench và kết nối vào MySQL Server.

Bước 2: Mở file SQL

Chọn:

File → Open SQL Script

Chọn file:

sql_basic_sample.sql

Bước 3: Chạy file SQL

Sau khi file được mở trong MySQL Workbench, chọn Execute để chạy toàn bộ script.

Phần đầu của file có các câu lệnh:

DROP DATABASE IF EXISTS sql_basic;

CREATE DATABASE sql_basic
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

USE sql_basic;

Các câu lệnh này sẽ tự động:

✓ Xóa database sql_basic cũ nếu đã tồn tại.

✓ Tạo lại database sql_basic.

✓ Chọn sql_basic làm database hiện tại.

✓ Tạo các bảng.

✓ Tạo khóa chính và khóa ngoại.

✓ Thêm dữ liệu mẫu.

Lưu ý: Mỗi lần chạy lại toàn bộ file, database sql_basic cũ sẽ bị xóa và tạo lại từ đầu.

Vì vậy, không lưu dữ liệu quan trọng của bạn trong database này.


7. Kiểm tra Database sau khi import

Chạy:

SHOW DATABASES;

Kiểm tra trong kết quả có database:

sql_basic

Sau đó chạy:

USE sql_basic;

SHOW TABLES;

Bạn sẽ thấy các bảng dữ liệu đã được tạo.

Tiếp tục kiểm tra:

SELECT * FROM students;

Nếu Result Grid xuất hiện danh sách sinh viên thì database đã được import thành công.


8. Cách làm 20 bài thực hành SQL

Với mỗi bài tập, không nên xem đáp án ngay.

Hãy thực hiện theo quy trình:

Đọc yêu cầu → Xác định bảng → Xác định dữ liệu cần lấy → Viết câu SQL → Execute → Kiểm tra kết quả → Đối chiếu đáp án

Ví dụ:

Yêu cầu: Liệt kê toàn bộ sinh viên.

Trước khi viết SQL, hãy tự xác định:

Dữ liệu nằm trong bảng nào?

Cần lấy những cột nào?

Có cần điều kiện lọc không?

Có cần sắp xếp không?

Sau đó mới viết câu SQL và chạy thử.


PHẦN I – SELECT CƠ BẢN

Bài 1. Liệt kê toàn bộ sinh viên

Hiển thị toàn bộ dữ liệu trong bảng:

students

Kiến thức cần sử dụng: SELECT.


Bài 2. Lựa chọn cột và đặt tên cột

Hiển thị các thông tin:

id
name
class_id

Đổi tên cột:

class_id

thành:

Ma_lop

Kiến thức cần sử dụng: SELECT và AS.


Bài 3. Sắp xếp sinh viên theo tuổi

Hiển thị:

id
name
age

Sắp xếp danh sách sinh viên theo tuổi tăng dần.

Kiến thức cần sử dụng: ORDER BY.


Bài 4. Lấy danh sách lớp không trùng lặp

Hiển thị danh sách các lớp mà sinh viên đang học.

Yêu cầu:

✓ Không hiển thị class_id trùng nhau.

✓ Không lấy giá trị NULL.

Kiến thức cần sử dụng: DISTINCT, WHERE và IS NOT NULL.


Bài 5. Hiển thị 5 sinh viên đầu tiên

Hiển thị 5 sinh viên đầu tiên.

Danh sách được sắp xếp theo:

id

Kiến thức cần sử dụng: ORDER BY và LIMIT.


PHẦN II – SELECT NÂNG CAO, GROUP BY VÀ HAVING

Bài 6. Đếm tổng số đơn hàng

Sử dụng bảng:

orders

Đếm tổng số đơn hàng hiện có trong database.

Kiến thức cần sử dụng: COUNT.


Bài 7. Tính tổng tiền mỗi khách hàng đã mua

Hiển thị:

Mã khách hàng
Tên khách hàng
Tổng số tiền đã mua

Sắp xếp danh sách theo tổng doanh thu giảm dần.

Kiến thức cần sử dụng: JOIN, SUM, GROUP BY và ORDER BY.


Bài 8. Lọc khách hàng theo thành phố

Tìm những khách hàng ở:

Ha Noi
TP.HCM

Kiến thức cần sử dụng: WHERE và IN.


Bài 9. Tính giá trị đơn hàng trung bình

Tính giá trị đơn hàng trung bình của từng khách hàng.

Chỉ hiển thị những khách hàng có giá trị đơn hàng trung bình:

Lớn hơn 5.000.000

Sắp xếp kết quả giảm dần theo giá trị đơn hàng trung bình.

Kiến thức cần sử dụng: AVG, GROUP BY, HAVING và ORDER BY.


Bài 10. Thống kê đơn hàng theo tháng

Đếm số đơn hàng của từng tháng trong năm:

2024

Kết quả cần được sắp xếp theo thứ tự tháng.

Kiến thức cần sử dụng: COUNT, MONTH, YEAR và GROUP BY.


PHẦN III – SUBQUERY VÀ CÁC HÀM SQL

Bài 11. Tìm nhân viên có lương cao nhất

Tìm nhân viên có mức lương cao nhất trong công ty.

Gợi ý: Có thể sử dụng một truy vấn để tìm mức lương lớn nhất trước.

Kiến thức cần sử dụng: Subquery và MAX.


Bài 12. Tìm nhân viên có lương cao hơn mức trung bình

Tính mức lương trung bình của toàn bộ nhân viên.

Sau đó tìm những nhân viên có lương cao hơn mức lương trung bình của công ty.

Sắp xếp danh sách theo lương giảm dần.

Kiến thức cần sử dụng: Subquery, AVG và ORDER BY.


Bài 13. Xử lý chuỗi và số

Hiển thị:

Tên nhân viên viết HOA
Lương được làm tròn đến hàng nghìn

Kiến thức cần sử dụng: UPPER và ROUND.


Bài 14. Tính số năm làm việc

Dựa vào:

hire_date

hãy tính số năm làm việc của từng nhân viên tính đến thời điểm hiện tại.

Kiến thức cần sử dụng: TIMESTAMPDIFF và CURDATE.


Bài 15. Thống kê nhân viên theo phòng ban

Liệt kê những phòng ban có ít nhất:

5 nhân viên

Kiến thức cần sử dụng: LEFT JOIN, COUNT, GROUP BY và HAVING.


PHẦN IV – JOIN VÀ TRUY VẤN NHIỀU BẢNG

Bài 16. Hiển thị sinh viên và lớp học

Hiển thị:

Mã sinh viên
Tên sinh viên
Tên lớp

Dữ liệu nằm trong hai bảng:

students
classes

Sử dụng:

INNER JOIN

Bài 17. Hiển thị lớp học và giáo viên

Hiển thị toàn bộ lớp học cùng giáo viên phụ trách.

Yêu cầu:

Các lớp chưa có giáo viên vẫn phải xuất hiện trong kết quả.

Sử dụng:

LEFT JOIN

Bài 18. Hiển thị giáo viên và lớp học

Hiển thị toàn bộ giáo viên cùng lớp học được phân công.

Yêu cầu:

Giáo viên chưa được phân công lớp vẫn phải xuất hiện.

Thực hành:

RIGHT JOIN

Bài 19. JOIN 3 bảng

Hiển thị:

Tên sinh viên
Tên lớp
Tên giáo viên

Thông tin nằm trong ba bảng:

students
classes
teachers

Hãy xác định quan hệ giữa ba bảng trước khi viết câu SQL.


Bài 20. Case Study – Bán hàng

Sử dụng các bảng:

customers
orders
products
order_details

để thực hiện các yêu cầu sau.

Bài 20a. Hiển thị đơn hàng theo khách hàng

Hiển thị:

Mã đơn hàng
Tên khách hàng
Ngày đặt hàng
Tổng tiền

Bài 20b. Tính tổng số lượng sản phẩm đã bán

Với mỗi sản phẩm, tính tổng số lượng đã bán.

Hiển thị:

Mã sản phẩm
Tên sản phẩm
Tổng số lượng đã bán

Sắp xếp theo tổng số lượng bán giảm dần.


Bài 20c. Tìm khách hàng có tổng chi tiêu cao nhất

Tính tổng số tiền mua hàng của từng khách hàng.

Sau đó tìm khách hàng có tổng chi tiêu cao nhất.


9. BÀI TẬP LUYỆN THÊM

Sau khi hoàn thành 20 bài trên, hãy thử tự viết thêm các câu truy vấn sau.

✓ Tìm sinh viên lớn tuổi nhất.

✓ Đếm số sinh viên của từng lớp.

✓ Tính tuổi trung bình của sinh viên trong từng lớp.

✓ Tìm những sinh viên chưa được xếp lớp.

✓ Tính lương trung bình của từng phòng ban.

✓ Tìm nhân viên có mức lương cao thứ hai.

✓ Tìm nhân viên chưa thuộc phòng ban nào.

✓ Tìm sản phẩm bán được nhiều nhất.

✓ Tìm khách hàng chưa có đơn hàng.

✓ Tìm 3 khách hàng có tổng chi tiêu cao nhất.


10. MỘT SỐ LỖI THƯỜNG GẶP

Lỗi: Unknown database 'sql_basic'

Hãy chạy lại toàn bộ file:

sql_basic_sample.sql

Lỗi: No database selected

Chạy:

USE sql_basic;

Sau đó thực hiện lại câu truy vấn.


Không thấy bảng sau khi import

Chạy:

SHOW TABLES;

Nếu sử dụng MySQL Workbench, bạn cũng có thể Refresh phần Schemas.


Không nhớ đang sử dụng database nào

Chạy:

SELECT DATABASE();

Kết quả cần là:

sql_basic

Nếu không phải, chạy:

USE sql_basic;

Viết câu SQL nhưng không có dữ liệu

Kiểm tra lần lượt:

USE sql_basic;

SHOW TABLES;

SELECT * FROM students;

Nếu bảng students có dữ liệu thì database đã được import thành công.


11. ĐÁP ÁN 20 BÀI SQL BASIC

Khuyến nghị: Hãy tự làm bài trước khi xem đáp án.

Một bài SQL có thể có nhiều cách viết đúng khác nhau. Đáp án được cung cấp chỉ là một phương án tham khảo trên MySQL 8.0.

👉 Xem và tải đáp án 20 bài tập SQL Basic tại đây


12. TỔNG KẾT

SQL là một kỹ năng nên học thông qua thực hành trực tiếp trên dữ liệu.

Thay vì chỉ ghi nhớ cú pháp, hãy cố gắng hiểu mỗi câu truy vấn đang giải quyết vấn đề gì:

Cần lấy dữ liệu gì? → Dữ liệu nằm ở bảng nào? → Điều kiện lọc là gì? → Có cần nhóm dữ liệu không? → Có cần JOIN với bảng khác không?

Sau 20 bài thực hành, bạn đã làm quen với lộ trình:

SELECT → WHERE → ORDER BY → DISTINCT → LIMIT → COUNT/SUM/AVG → GROUP BY → HAVING → Subquery → JOIN

Hãy tiếp tục thay đổi yêu cầu của từng bài, tự viết thêm truy vấn và kiểm tra kết quả. Đây là cách hiệu quả để hình thành kỹ năng SQL thay vì chỉ học thuộc câu lệnh.


Thuộc danh mục
  • Gallery
Facebook