Trong bài viết này tôi sẽ cung cấp cho bạn hiểu hơn về thứ tự viết câu SQL và trình tự SQL xử lý các câu lệnh như thế nào.
Cú pháp câu lệnh SQL:
[ WITH { [ XMLNAMESPACES ,] [ <common_table_expression> ] } ] SELECT select_list [ INTO new_table ] [ FROM table_source ] [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
Thứ tự thực hiện các câu lệnh SQL phụ thuộc vào loại câu lệnh bạn đang sử dụng. Dưới đây là trình tự chung cho các câu lệnh truy vấn SELECT:
1. FROM:
- Xác định nguồn dữ liệu cho truy vấn, có thể là một hoặc nhiều bảng, view hoặc CTE (Common Table Expressions).
- Nếu có nhiều nguồn dữ liệu, thứ tự liệt kê trong mệnh đề FROM sẽ ảnh hưởng đến thứ tự thực hiện các phép toán nối (JOIN).
2. JOIN:
- Kết hợp các hàng từ hai hoặc nhiều bảng dựa trên các điều kiện khớp.
- Loại JOIN (INNER, LEFT, RIGHT, FULL, CROSS) quyết định cách xử lý các hàng không khớp.
- Thứ tự liệt kê các bảng trong mệnh đề FROM có thể ảnh hưởng đến hiệu suất của phép toán JOIN.
3. ON:
- Chỉ định điều kiện khớp cho phép toán JOIN.
- Có thể sử dụng nhiều điều kiện ON cho mỗi phép toán JOIN.
4. WHERE:
- Lọc các hàng dựa trên các điều kiện cụ thể.
- Có thể sử dụng nhiều điều kiện WHERE được kết nối bằng các toán tử logic (AND, OR, NOT).
5. GROUP BY:
- Nhóm các hàng có cùng giá trị theo một hoặc nhiều cột.
- Tính toán các hàm tổng hợp (COUNT, SUM, AVG, MIN, MAX) cho mỗi nhóm.
6. HAVING:
- Lọc các nhóm dựa trên các điều kiện tổng hợp.
- Giống như mệnh đề WHERE nhưng áp dụng cho các nhóm thay vì các hàng riêng lẻ.
7. SELECT:
- Xác định các cột dữ liệu sẽ được trả về trong kết quả truy vấn.
- Có thể sử dụng các biểu thức, toán tử và hàm để xử lý dữ liệu.
- Thứ tự liệt kê các cột trong mệnh đề SELECT quyết định thứ tự các cột trong kết quả.
8. ORDER BY:
- Sắp xếp các hàng trong kết quả truy vấn theo một hoặc nhiều cột.
- Có thể sắp xếp theo thứ tự tăng dần (ASC) hoặc giảm dần (DESC).