AI For Work: Ứng dụng AI – Thiết kế câu lệnh truy vấn SQL

P – Point (Quan điểm/Điểm chính)

Trong quá trình kiểm thử phần mềm, tester thường phải xác minh dữ liệu trong cơ sở dữ liệu thông qua truy vấn SQL. Tuy nhiên, không phải ai cũng có kỹ năng SQL vững, và việc viết truy vấn phức tạp từ nhiều bảng liên kết nên sẽ tốn nhiều thời gian. Việc ứng dụng Trí tuệ Nhân tạo (AI) như ChatGPT giúp tester tự động hóa quy trình viết SQL: chỉ cần cung cấp Schema (cấu trúc bảng, cột, quan hệ) và yêu cầu nghiệp vụ, AI sẽ sinh ra câu truy vấn SQL hoàn chỉnh, rõ ràng và có chú thích giải thích câu SQL.


R – Reason (Lý do/Giải thích)

AI đóng vai trò như một cộng sự SQL ảo cho tester:
– Giúp chuyển đổi ngôn ngữ nghiệp vụ (business language) sang ngôn ngữ kỹ thuật (SQL).
– Đảm bảo câu truy vấn logic, rõ ràng, có comment thay vì chỉ đưa ra kết quả “chạy được”.
– Hạn chế sai sót do giả định sai: AI được hướng dẫn không tự nghĩ thêm tên bảng/cột, mà yêu cầu người dùng cung cấp Schema chuẩn.
– Giúp tester tiết kiệm thời gian, tăng hiệu suất, và tập trung nhiều hơn vào phân tích kết quả thay vì vật lộn với cú pháp SQL.


E – Example (Ví dụ/Minh họa)

Dưới đây là mẫu Prompt có thể dùng để yêu cầu AI viết câu truy vấn SQL:

1. Prompt mẫu:

“Bạn là chuyên viên kiểm thử phần mềm. Dưới đây là mô tả các bảng dữ liệu (schema) trong hệ thống. Dựa vào đó, hãy viết câu truy vấn SQL để đáp ứng yêu cầu nghiệp vụ được nêu phía sau. Truy vấn cần đúng logic, rõ ràng, có comment giải thích. Không sử dụng dữ liệu giả định, không tự giả định tên bảng hoặc cột nếu không có đủ thông tin – yêu cầu người dùng cung cấp.
1. Schema:
Bảng <tên_bảng_1>
– <tên_cột_1>
– <tên_cột_2>
– <tên_cột_3>

Bảng <tên_bảng_2>
– <tên_cột_1>
– <tên_cột_2>
– <tên_cột_3>

2. Yêu cầu nghiệp vụ:
Tôi cần tìm <đối tượng chính: creator/order/video/…>
– Điều kiện lọc: <liệt kê các điều kiện rõ ràng, mỗi dòng một điều kiện>
– Điều kiện join: <liệt kê cách nối bảng và quan hệ cột>
– Điều kiện loại trừ (nếu có): <mô tả rõ ‘không có trong bảng nào’ hoặc ‘không thuộc tập hợp nào’>
– Điều kiện thời gian (nếu có): <chỉ rõ cột thời gian + logic max/min/mới nhất/cũ nhất>
– Điều kiện quốc gia/vùng miền (nếu có): <chỉ rõ cột country + giá trị mong muốn>
– Trường dữ liệu cần lấy: <liệt kê cột cụ thể cần xuất ra>
3. Quy định:
– Viết thẳng truy vấn bằng subquery ngay trong FROM.
– Mọi giá trị điều kiện đều phải đặt trong dấu ” – kể cả số.
– Lấy đúng các trường cụ thể thay vì *.
– Tất cả tên bảng/cột viết thường.
– Không phân tích trong SQL, chỉ viết comment — để giải thích.
4. Đầu ra mong muốn:
– Mặc định dùng chuẩn SQL:2011
– Truy vấn <Tên công cụ quản trị cơ sở dữ liệu> (Ví dụ: Navicat, Datagrip)
– Có phân tích chi tiết câu SQL sau khi viết.”

2. Ví dụ prompt: Viết SQL truy vấn ra các creator là air content để bắn sang CRM

“Bạn là chuyên viên kiểm thử phần mềm. Dưới đây là mô tả các bảng dữ liệu (schema) trong hệ thống. Dựa vào đó, hãy viết câu truy vấn SQL để đáp ứng yêu cầu nghiệp vụ được nêu phía sau. Truy vấn cần đúng logic, rõ ràng, có comment giải thích. Không sử dụng dữ liệu giả định, không tự giả định tên bảng hoặc cột nếu không có đủ thông tin – yêu cầu người dùng cung cấp.

1. Schema:

  • Bảng tiktok_creator_connects 

creator_handle 

creator_id 

country

  • Bảng tiktok_video_lives 

creator_id 

content_id 

create_time_video 

  • Bảng tiktok_orders 

creator_username 

creator_id

promotion_position_id

2. Yêu cầu nghiệp vụ:

Tôi cần tìm những creator: 

– Có creator_id trong bảng tiktok_creator_connects not null

– Có content_id có trong bảng tiktok_video_lives nhưng không có trong bảng tiktok_orders

– Những promotion_position_id đã tồn tại trong bảng order không lấy ra, biết content_id = promotion_position_id

– Lấy cho tôi create_time_video cũ nhất theo creator_id của country = 1

3. Quy định:

– Viết thẳng truy vấn bằng subquery ngay trong FROM.

– Mọi giá trị điều kiện đều phải đặt trong dấu ” – kể cả các giá trị số như 60, 70 …

– Lược bỏ 1 số điều kiện nhấn mạnh không cần đến (Ví dụ: Điều kiện đã được truyền thì ko cần nhắc lại) nhưng cần đảm bảo câu lệnh chạy vẫn đúng yêu cầu nghiệp vụ trên.

– Lấy đúng các trường cụ thể thay vì dùng dấu *

– Tất cả tên bảng và tên trường đã đổi về chữ thường – nếu có xuất hiện chữ in hoa

– Không viết chú thích phân tích trong câu lệnh

4. Đầu ra mong muốn:

– Mặc định dùng chuẩn SQL:2011

– Truy vấn Datagrip 

– Có phân tích chi tiết câu SQL”

Kết quả:

📌 Phân tích chi tiết câu SQL

1. Cụm subquery trong FROM – tìm video cũ nhất mỗi creator

👉 Ý nghĩa:

  • Lấy danh sách từng creator_id.
  • Với mỗi creator_id, chọn ra thời gian video nhỏ nhất (cũ nhất).
  • Chỉ xét các video (content_id) không nằm trong promotion_position_id của bảng order.
  • Kết quả ra bảng tạm earliest: gồm creator_id và create_time_video nhỏ nhất của họ.

2. Join lại với bảng video để lấy đúng content_id

👉 Ý nghĩa:

  • Sau khi biết create_time_video cũ nhất, join lại để lấy content_id tương ứng.
  • Trường hợp có nhiều video trùng thời gian cũ nhất → trả về nhiều content_id (không loại bỏ).

3. Join với bảng creator để lọc quốc gia

👉 Ý nghĩa:

  • Gắn thông tin creator (creator_handle, country) vào bản ghi video.
  • Đây là chỗ kết nối từ video về thông tin tác giả.

4. Điều kiện cuối cùng (WHERE)

👉 Ý nghĩa:

  • Đảm bảo creator phải có creator_id hợp lệ (không NULL).
  • Chỉ lấy creators thuộc country = ‘1’.

5. SELECT đầu ra

👉 Ý nghĩa:

  • Chỉ lấy các cột cần thiết: thông tin creator + video cũ nhất của họ.
  • Không dùng * → đúng theo yêu cầu “lấy đúng các trường cụ thể”.

✅ Tóm gọn luồng xử lý:

  • Từ tiktok_video_lives: tìm video cũ nhất của mỗi creator nhưng loại bỏ video nào đã có order.
  • Ghép với bảng video để lấy content_id chính xác.
  • Ghép với bảng creator để lọc country = ‘1’ và loại NULL.
  • Xuất ra thông tin mong muốn.

P – Point (Kết luận/Quan điểm nhắc lại)

Tận dụng AI để hỗ trợ viết câu lệnh SQL giúp tester giảm đáng kể thời gian và công sức khi thao tác với dữ liệu. Dựa vào trải nghiệm thực tế:

  • Thực hiện thủ công: trung bình mất 1h để viết SQL cho 1 task, một sprint có 2 task → mất 2h/sprint. Với 2 sprint/tháng → mất 4h/tháng/team.
  • Khi sử dụng AI: chỉ mất 0.5h/task, tức là 1h/sprint. Với 2 sprint/tháng → mất 2h/tháng/team.

👉 Như vậy, team TopTop tiết kiệm được 2h/tháng.

Nói cách khác, AI giúp đội ngũ team TopTop (ThuongNT, ThuyNT2, HuongNTT2) giảm bớt thời gian viết truy vấn lặp đi lặp lại, tập trung nhiều hơn vào việc xác minh logic nghiệp vụ, phân tích dữ liệu kiểm thử và cải thiện chất lượng sản phẩm. Đây là bước tiến quan trọng để team test phát huy vai trò như “người đồng hành chất lượng” trong các dự án Agile, thay vì chỉ dừng lại ở thao tác kỹ thuật.

Related Posts