Thứ tự thực hiện câu lệnh Select trong SQL Server
Đăng lúc: 10:34 AM - 04/01/2024 bởi Charles Chung - 1010SELECT là một câu truy vấn khá phức tạp, nó có thể được áp dụng lồng trong UPDATE, DELETE để lọc ra đúng dữ liệu cần thực hiện truy vấn. Vậy thứ tự thực hiện các mệnh đề của câu SELECT trong SQL Server như thế nào, bài viết này sẽ làm rõ điều đó.
Câu lệnh SELECT (mang nghĩa lấy dữ liệu hay câu lệnh truy vấn) trong SQL trả về một tập kết quả các bản ghi từ một hoặc nhiều bảng. Sau đây là cú pháp của câu lệnh SELECT trong SQL Server:
Cú pháp đầy đủ của câu lệnh SELECT trong SQL Server rất phức tạp, nhưng các mệnh đề chính có thể được tóm tắt như sau:
[ 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 ] ]
Bỏ qua [ WITH { [ XMLNAMESPACES ,] [ <common_table_expression> ] } ] có thể diễn giải cụ thể như sau:
SELECT DISTINCT <TOP> <danh sách các cột>
FROM <tên bảng 1>
<kiểu join> JOIN <tên bảng 2>
ON <các điều kiện join>
WHERE <các điều kiện where>
GROUP BY <danh sách các cột group by>
HAVING <các điều kiện having>
ORDER BY <danh sách các cột order by>
Trong đó thứ tự thực hiện như sau:
(1) FROM <tên bảng 1>
(2) ON <các điều kiện join>
(3) <kiểu join> JOIN <tên bảng 2>
(4) WHERE <các điều kiện where>
(5) GROUP BY <danh sách các cột group by>
(6) HAVING <các điều kiện having>
(7) SELECT
(8) DISTINCT
(9) ORDER BY <danh sách các cột order by>
(10) <TOP> <danh sách các cột>
Ví dụ 1
1 2 3 4 5 6 7 8 9 |
/* Lấy ra 5 quyển sách có giá cao nhất thông tin lấy từ 2 bảng books và categories gồm (bookid, title, price, categoryname) */ SELECT TOP 5 BookId, Title, Price,CategoryName FROM Books b INNER JOIN Categories c ON c.CategoryId=b.CategoryId ORDER BY Price DESC |
Ví dụ 2
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* Thống kế các loại sách có tên loại bắt đầu bằng chữ 'Sách' và có tổng giá >200000 Thông tin đưa ra gồm (CategoryId, CategoryName, TotalPrice) và được sắp xếp tăng dần theo tên loại */ SELECT c.CategoryId,CategoryName, sum(Price) as TotalPrice FROM Books b INNER JOIN Categories c ON c.CategoryId=b.CategoryId WHERE CategoryName like N'Sách%' GROUP BY c.CategoryId, CategoryName HAVING sum(Price)>200000 ORDER BY c.CategoryName ASC |
thay lời cảm ơn!
Các bài cũ hơn
- Luồng xử lý câu lệnh T-SQL trong SQL Server (09:32 AM - 04/01/2024)
- Sinh mã vạch QRCode và Bar Code 128 từ một chuỗi ký tự sử dụng thư viện ZXing trong .NET C# (09:44 AM - 02/01/2024)
- Đổi số tiền vnđ thành chữ trong C# và Java (09:29 AM - 01/01/2024)
- Tích hợp trình soạn thảo CKEditor và trình quản lý tệp tin elFinder trong Asp.Net Core MVC 6 (08:26 PM - 29/12/2023)
- Xử lý quay và dịch chuyển ảnh sử dụng OpenCV trong Python (10:48 PM - 27/12/2023)