Những kiến thức cơ bản về SQL? #6
Subqueries Là Gì?
Subqueries là các truy vấn nhỏ được thực hiện bên trong một truy vấn SQL chính. Chúng thường được sử dụng để trích xuất dữ liệu từ một bảng hoặc tập hợp dựa trên kết quả của truy vấn bên trong nó. Subqueries có thể trả về một hoặc nhiều giá trị, và chúng có thể được sử dụng trong các phần của câu lệnh SQL khác nhau như điều kiện WHERE, FROM, SELECT, và HAVING.
Cách Subqueries Hoạt Động
Khi một truy vấn chính chạy, các subquery bên trong nó được thực hiện trước. Kết quả của subquery được sử dụng trong truy vấn chính để hoàn thành câu lệnh. Subqueries có thể trả về một giá trị duy nhất hoặc một tập hợp giá trị, tùy thuộc vào cách bạn xây dựng chúng.
Cấu Trúc Của Một Subquery
Một subquery bắt đầu bằng một câu lệnh SELECT và được đặt trong dấu ngoặc (). Subquery có thể xuất hiện trong các phần khác nhau của một câu lệnh SQL.
1. Scalar Subquery:
- Định nghĩa: Câu truy vấn con scalar là một câu truy vấn con trả về một giá trị duy nhất.
- Sử dụng: Các câu truy vấn con scalar có thể được sử dụng để so sánh với một cột trong câu truy vấn chính hoặc để trích xuất một giá trị duy nhất từ một bảng.
SELECT name
FROM customers
WHERE id = (SELECT customer_id FROM orders WHERE order_number = '12345');
2. Row Subquery:
-
Định nghĩa: Câu truy vấn con row là một câu truy vấn con trả về một hàng dữ liệu hoặc một tập hợp các giá trị từ một hàng.
-
Sử dụng: Các câu truy vấn con row thường được sử dụng để so sánh toàn bộ hàng dữ liệu hoặc để trích xuất một tập hợp các giá trị từ hàng dữ liệu.
SELECT *
FROM employees
WHERE (first_name, last_name) = (SELECT first_name, last_name FROM managers WHERE department = 'HR');
3. Column Subquery:
-
Định nghĩa: Câu truy vấn con column là một câu truy vấn con trả về một cột dữ liệu hoặc một tập hợp các giá trị từ một cột.
-
Sử dụng: Các câu truy vấn con column thường được sử dụng để trích xuất tập hợp các giá trị từ một cột dựa trên điều kiện hoặc để tính toán một giá trị từ các cột dữ liệu.
SELECT department_name,
(SELECT AVG(salary) FROM employees WHERE department = departments.department_name) AS avg_salary
FROM departments;
4. Table Subquery:
-
Định nghĩa: Câu truy vấn con table là một câu truy vấn con trả về một bảng dữ liệu hoặc một tập hợp các hàng từ một bảng.
-
Sử dụng: Các câu truy vấn con table thường được sử dụng để trích xuất
dữ liệu từ một bảng dựa trên điều kiện hoặc để thực hiện các phép biến đổi dữ liệu phức tạp.
SELECT *
FROM (SELECT * FROM orders WHERE order_date >= '2023-01-01') AS recent_orders
WHERE total_amount > 1000;
Lợi ích của Subqueries
Sử dụng subqueries có thể giúp bạn:
- Tích hợp và xử lý dữ liệu từ nhiều bảng hoặc nguồn dữ liệu khác nhau.
- Tạo các điều kiện phức tạp và tìm kiếm dữ liệu dựa trên kết quả của các truy vấn con.
- Tính toán và trả về giá trị dựa trên dữ liệu từ bảng khác.
Ví dụ về subqueries có thể bao gồm việc tìm kiếm thông tin về khách hàng có hóa đơn đầu tiên hoặc tính tổng số đơn đặt hàng của mỗi khách hàng từ một bảng dữ liệu.
Trong tổng quan, subqueries là một công cụ quan trọng để mở rộng khả năng truy vấn dữ liệu trong SQL, cho phép bạn thực hiện các truy vấn phức tạp và phân tích dữ liệu một cách hiệu quả hơn.
All rights reserved