Trong quá trình sử dụng SQL, chúng ta đôi khi gặp những vấn đề phức tạp đòi hỏi nhiều hơn chỉ một truy vấn đơn giản. Ví dụ, chúng ta có thể muốn so sánh kết quả của các truy vấn khác nhau, thực hiện các phép tính trên các tập hợp con dữ liệu hoặc sử dụng lại cùng một truy vấn nhiều lần. Làm thế nào chúng ta có thể giải quyết các vấn đề này trong SQL?
- 100+ Hình nền Chill cho điện thoại iPhone, Android đẹp mới nhất 2023
- Hướng dẫn xem ngày tốt sửa bếp theo tuổi
- Cách tính định mức 1 ca máy xúc bao nhiêu giờ nhanh chóng và chính xác
- Settle In là gì và cấu trúc cụm từ Settle In trong câu Tiếng Anh
- Bảng quy đổi điểm VSTEP sang điểm IELTS, TOEIC, TOEFL,…
Contents
Truy vấn con (Subquery)
Truy vấn con (Subquery) thường được sử dụng trong các câu truy vấn đòi hỏi tính toán phức tạp. Chúng ta sử dụng Subquery khi cần tính toán dữ liệu và tạo ra một bảng dữ liệu tạm thời mới. Truy vấn con được sử dụng một lần trong câu lệnh truy vấn nơi nó xác định. Có thể sử dụng truy vấn con (Subquery) trong các câu lệnh như SELECT, FROM, JOIN hoặc bất kỳ phép toán tập hợp nào (Set operators).
Bạn đang xem: [Tài liệu học SQL] Phần 6 – SQL nâng cao với SUBQUERY và CTE
Truy vấn con (Subquery) dùng với IN
Subquery khi được sử dụng với IN sẽ được coi là một điều kiện trong hàm IN. Cú pháp của Subquery dùng với IN như sau:
(SELECT column_name FROM Table_2)
Ví dụ: Từ bảng Person thuộc bộ dữ liệu AdventureWorksFull, truy vấn các cột BusinessEntityID, LastName. Với điều kiện thoả mãn BusinessEntityID có JobTitle là Marketing Specialist.
Truy vấn con (Subquery) dùng với IN.
Truy vấn con (Subquery) sử dụng với mệnh đề FROM
Subquery cũng có thể được sử dụng như một bảng dữ liệu khi được sử dụng trong mệnh đề FROM. Cú pháp của Subquery trong mệnh đề FROM như sau:
(SELECT column_name FROM Table WHERE Condition)
Xem thêm : Ngành dev là gì? Dev trong IT là gì? Khám phá tất tần tật về nghề dev!
Ví dụ: Từ bảng Product được gán tên SP và bảng ProductDescription (với điều kiện ModifiedDate = ‘2007-06-01’). Truy vấn các cột Name, ProductCategory và ProductNumber từ bảng Product và truy vấn cột Description từ bảng ProductDescription.
Truy vấn con (Subquery) sử dụng với mệnh đề FROM.
Một trong những ứng dụng khác của Subquery là Correlated Subquery. Truy vấn con tương quan là một truy vấn con sử dụng các giá trị từ truy vấn chính trong mệnh đề WHERE của nó.
Cú pháp của truy vấn con tương quan như sau:
SELECT Col_1, Col_2, Col_3
FROM Table_1
WHERE Col_Name Operator (SELECT Col_1 FROM Table_2 WHERE tb1.Related_Col = tb2.Related_Col)
Ví dụ: Từ bảng Product thuộc bộ dữ liệu AdventureWorks, truy vấn các cột ProductID, Name, ListPrice. Lọc điều kiện thoả mãn các sản phẩm có giá cao hơn mức giá trung bình của những sản phẩm có cùng ProductCategoryID.
Truy vấn con tương quan (Correlated Subquery).
READ MORE:
Bảng chứa dữ liệu tạm thời (Common Table Expressions)
Bảng chứa dữ liệu tạm thời (Common Table Expressions – CTE) là một công cụ mạnh mẽ trong SQL để tính toán và tạo ra các bảng chứa dữ liệu tạm thời, giúp chúng ta có thể tái sử dụng trong câu lệnh truy vấn chính. Điều này giúp giảm tải cho cơ sở dữ liệu.
Xem thêm : Làm tròn số thập phân, hiện 2 chữ số thập phân sau dấu phẩy C và C++
Cú pháp của CTE như sau:
WITH CTE_Name (Col_1, Col_2, ...)
AS
(
... WHERE Condition
)
SELECT Col_1, Col_2, Col_3, Col_4
FROM CTE_Name
Ví dụ: Từ bảng Product và bảng chứa dữ liệu tạm thời (CTE) kết hợp điểm chung (INNER JOIN) giữa bảng Product và bảng ProductCategory. Truy vấn các cột Name, ProductNumber, StandardCost. Với điều kiện StandardCost lớn hơn 1000.
Ưu và nhược điểm của Subquery và CTE:
- CTE có thể được sử dụng nhiều lần trong một truy vấn, trong khi Subquery chỉ có thể được sử dụng một lần.
- Subquery có thể được sử dụng trong mệnh đề WHERE kết hợp với từ khóa IN hoặc EXISTS, nhưng bạn không thể thực hiện điều này với CTE.
- CTE có thể được sử dụng để thực hiện các truy vấn đệ quy, rất hữu ích cho việc xử lý dữ liệu phân cấp hoặc dạng cây, trong khi Subquery không thể.
Bằng cách sử dụng những kỹ thuật này, chúng ta có thể viết các truy vấn nâng cao và mạnh mẽ có thể trả lời nhiều câu hỏi thú vị và hữu ích về dữ liệu. Chúng ta cũng có thể cải thiện khả năng đọc và duy trì các truy vấn của mình bằng cách chia nhỏ các truy vấn phức tạp thành các đơn vị nhỏ hơn, dễ quản lý hơn.
Hy vọng rằng bài viết này đã mang lại cho bạn những kiến thức bổ ích về SQL. Mong rằng chúng ta sẽ nhận được phản hồi, nhận xét và đóng góp từ mọi người để chúng tôi có thể cung cấp thêm nhiều giá trị hơn nữa.
Nguồn: https://ispacedanang.edu.vn
Danh mục: Học tập