🛰️ Bài Thực Hành 2: Thám Hiểm Chuyên Sâu Vũ Trụ Dữ Liệu Với SQL Nâng Cao

1. Khi Dữ Liệu “Lên Tiếng”

Bạn đã bao giờ tự hỏi làm thế nào để tìm ra một hành tinh cụ thể trong hàng tỷ thiên hà khi chỉ nhớ mang máng tên của nó? Hay làm sao để tính toán nhanh khối lượng của cả một vành đai tiểu hành tinh mà không cần đếm từng viên đá?

Mục tiêu của bài Lab này: Giúp bạn làm chủ bộ kỹ năng “truy quét” nâng cao. Chúng ta sẽ sử dụng Jupyter Notebook – chiếc máy tính bảng quyền năng của phi hành gia – để ra lệnh cho SQL thực hiện:

• Truy tìm theo mẫu chuỗi (LIKE) và sắp xếp thứ tự ưu tiên (ORDER BY).

• Phân nhóm dữ liệu (GROUP BY) và sử dụng các bộ lọc thông minh (HAVING).

• Kích hoạt các “hàm tính toán nội tại” (SUM, AVG, MIN, MAX).

• Thực hiện các “nhiệm vụ lồng nhau” (Sub-queries) và kết nối đa bảng.

Thời gian thực hiện: 90 phút.

2. Hệ Thống Cảm Biến Đa Tầng

Trong SQL nâng cao, chúng ta coi các bảng dữ liệu là những tinh hệ riêng biệt.

• String Patterns & Sorting: Giống như bộ lọc nhiễu của kính viễn vọng. LIKE giúp bạn tìm thấy tín hiệu mờ nhạt, còn ORDER BY giúp bạn xếp hạng chúng từ sáng nhất đến mờ nhất.

• Built-in Functions: Là những con chip xử lý số liệu được gắn sẵn trên phi thuyền. Thay vì bạn phải tự cộng trừ, hãy để SUM() hay AVG() làm thay.

• Sub-queries (Truy vấn con): Hãy tưởng tượng đây là một nhiệm vụ bí mật nằm bên trong một chiến dịch lớn. Bạn tìm ra “Mật mã A” từ bảng này, sau đó dùng chính “Mật mã A” đó để mở khóa bảng kia.

3. Jupyter Notebook Mission

Để bắt đầu, hãy khởi chạy phi thuyền (XAMPP) và mở giao diện lập trình (Jupyter Notebook).

🛠️ Bước 0: Kết nối Python với SQL

Trong Jupyter Notebook, hãy nhập đoạn mã sau để thiết lập kết nối (Hãy đảm bảo bạn đã cài mysql-connector-pythonhoặc ipython-sql):

Python

# Cài đặt thư viện nếu chưa có

# !pip install mysql-connector-python

import mysql.connector

# Kết nối tới database ‘lab1’ hoặc ‘lab2’ bạn đã tạo ở XAMPP

connection = mysql.connector.connect(

host=”localhost”,

user=”root”,

password=””,

database=”lab1″

)

cursor = connection.cursor()

print(“Sẵn sàng thám hiểm!”)

📍 Lab 2.1: String Patterns, Sorting & Grouping

Sử dụng dữ liệu nhân viên để thực hành:

• Task 1: Tìm những nhân viên có tên chứa ký tự ‘a’.

◦ Thần chú: SELECT * FROM EMPLOYEES WHERE F_NAME LIKE ‘%a%’;

• Task 2: Sắp xếp danh sách nhân viên theo lương giảm dần.

• Task 3: Nhóm nhân viên theo ID phòng ban và tính lương trung bình.

📍 Lab 2.2: Built-in Functions (Nhiệm vụ PETSALE)

Tải script PETSALE.sql lên phpMyAdmin, sau đó dùng Jupyter Notebook để trích xuất:

• Tính tổng doanh thu từ việc bán thú cưng (SUM).

• Tìm thú cưng có giá rẻ nhất trong kho lưu trữ (MIN).

📍 Lab 2.3: Sub-queries & Multiple Tables

Kết nối các bảng lại với nhau:

• Thử thách: Tìm tên nhân viên có mức lương cao hơn mức lương trung bình (Sử dụng Sub-query).