Lệnh C (CREATE) & R (READ)

Bài 2 và bài 3 sẽ giúp chúng ta đi qua một chương trình huấn luyện đặc biệt mang tên: "Bí kíp luyện rồng: Làm chủ 4 phép thuật CRUD".

CRUD chính là 4 kỹ năng tối thượng mà bất kỳ một kỹ sư dữ liệu nào trên thế giới cũng phải thuộc lòng. Ý nghĩa của từ này trước khi vào code:

  • C - Create (Tạo ra / Thêm mới) $\rightarrow$ Lệnh SQL: INSERT

  • R - Read (Đọc / Tìm kiếm) $\rightarrow$ Lệnh SQL: SELECT

  • U - Update (Cập nhật / Sửa đổi) $\rightarrow$ Lệnh SQL: UPDATE

  • D - Delete (Xóa bỏ) $\rightarrow$ Lệnh SQL: DELETE

🍎 BÀI 2: PHÉP THUẬT C (CREATE) & R (READ)

Ở bài 1, chúng ta đã có một cái tủ trống không. Bây giờ, hai con sẽ học cách ném đồ vào tủ và tìm kiếm chúng.

1. Phép thuật C (Create) - Thêm kho báu vào tủ

Để thêm một dòng dữ liệu mới, ngôn ngữ SQL dùng lệnh INSERT INTO tên_bảng (các_cột) VALUES (các_giá_trị).

Hãy tạo file bai2_crud_cr.py và gõ đoạn code nạp năng lượng cho kho báu này:

import sqlite3

ket_noi = sqlite3.connect("kho_bau.db")
nguoi_tho = ket_noi.cursor()

# --- PHÉP THUẬT 1: INSERT (THÊM ĐỒ VÀO KHO) ---
# Chúng ta không cần thêm cột 'id' vì máy tính tự động tăng (1, 2, 3...) rồi!
nguoi_tho.execute("""
INSERT INTO kho_bau (ten_vat_pham, so_luong, gia_tri) 
VALUES ('Kiếm Kim Cương', 1, 500)
""")

nguoi_tho.execute("""
INSERT INTO kho_bau (ten_vat_pham, so_luong, gia_tri) 
VALUES ('Táo Vàng Ròng', 15, 50)
""")

nguoi_tho.execute("""
INSERT INTO kho_bau (ten_vat_pham, so_luong, gia_tri) 
VALUES ('Giáp Bạc', 3, 200)
""")

# Ép database lưu lại dữ liệu ngay lập tức
ket_noi.commit()
print("Úm ba la! Đã cất 3 món bảo vật vào tủ thành công!")

ket_noi.close()

Nghiệm thu nhanh: Hãy mở phần mềm DB Browser for SQLite, bấm nút Refresh (hoặc F5), vào tab Browse Data. Các con sẽ thấy ngay 3 hàng dữ liệu xuất hiện cực kỳ gọn gàng với ID tự động là 1, 2, 3!

2. Phép thuật R (Read) - Đọc và Lọc dữ liệu thông minh

Bây giờ, nếu kho báu có hàng ngàn món đồ, làm sao để tìm ra món đồ mình cần? Chúng ta dùng lệnh SELECT kết hợp với bộ lọc WHERE.

Hãy gõ tiếp đoạn code "kính lúp soi tìm" này vào cuối file (hoặc tạo file mới):

import sqlite3

ket_noi = sqlite3.connect("kho_bau.db")
nguoi_tho = ket_noi.cursor()

# --- PHÉP THUẬT 2: SELECT (ĐỌC VÀ LỌC) ---
print("\n--- CÁC MÓN BẢO VẬT CÓ GIÁ TRỊ TRÊN 100 VÀNG ---")

# Dấu * nghĩa là lấy TẤT CẢ các cột. WHERE giúp ta lọc điều kiện.
nguoi_tho.execute("SELECT * FROM kho_bau WHERE gia_tri > 100")

# Lệnh fetchall() giúp Python gom tất cả kết quả tìm được về thành một Danh sách (List)
danh_sach_tim_duoc = nguoi_tho.fetchall()

# Dùng vòng lặp for (Bài 4) để in từng món đồ ra màn hình
for mon_do in danh_sach_tim_duoc:
    # mon_do sẽ là một Tuple chứa: (id, ten, so_luong, gia_tri)
    print(f"Mã số: {mon_do[0]} | Tên: {mon_do[1]} | Số lượng: {mon_do[2]} | Giá trị: {mon_do[3]} vàng")

ket_noi.close()