/ / Mọi thứ bạn cần biết về truy vấn phụ SQL

Mọi thứ bạn cần biết về truy vấn phụ SQL

Các truy vấn SQL là thịt và khoai tây của RDBMS CRUD (tạo, đọc, cập nhật, xóa). Nhưng khi ứng dụng hoặc cơ sở dữ liệu doanh nghiệp của bạn phát triển, nhu cầu về các truy vấn thông minh để truy xuất dữ liệu có điều kiện, yêu cầu cụ thể trở thành điều bắt buộc phải có.

SQL tương đối toàn diện, bao gồm nhiều chức năng — mỗi chức năng đều rất phù hợp cho các mục đích sử dụng kinh doanh khác nhau. Một trong những chức năng như vậy bao gồm việc sử dụng các truy vấn phụ.

Để làm cho mã của bạn hiệu quả và hiệu quả, bạn có thể sử dụng các truy vấn phụ trong mã SQL của mình để tìm nạp dữ liệu, thao tác với các biến hiện có và đạt được nhiều mục tiêu trong một lần.

Truy vấn phụ SQL là gì?

Truy vấn phụ là một truy vấn lồng nhau, hoạt động như một tham số trong một truy vấn chính khác. Truy vấn phụ là một truy vấn bên trong, trong khi truy vấn chính là truy vấn bên ngoài.

Truy vấn phụ được cho là trả về dữ liệu dưới dạng đối số trong ngoặc đơn cho truy vấn chính, trong khi truy vấn chính lấy thêm kết quả cuối cùng.

Truy vấn phụ được nhúng trong Lựa chọn tuyên bố hoặc trong Ở đâu mệnh đề. Cấu trúc như vậy cho phép truy vấn con hoạt động như một điều kiện lọc dữ liệu được mô tả tốt. Thật không may, các truy vấn phụ chỉ có thể sử dụng Nhóm theo lệnh và không Đặt bởi các lệnh, vì chúng chỉ được phép trong truy vấn chính.

Có liên quan: Mọi thứ bạn cần biết về câu lệnh SQL GROUP BY

Thông thường, mỗi truy vấn phụ bao gồm một cột duy nhất với Lựa chọn mệnh đề. Tuy nhiên, có những trường hợp trong đó truy vấn chính có nhiều cột. Một truy vấn con có thể được lồng trong một truy vấn con khác, làm cho nó trở thành một truy vấn con lồng nhau.

Độ nghiêm ngặt của truy vấn phụ như sau:

Select column_name from table where condition= 
(SELECT conditional_column FROM table) as alias;

Ví dụ: giả sử bạn có bảng sau:

TÔI Họ Tên thứ hai Phí cơ quan
1 John Tim 5000
2 Robert Graham 4000
3 Stephen Hicks 8000
4 Bob Marley 1000
5 Mary Ellen 9000

Trong bảng này, để lấy tên của những người đang có thu nhập cao hơn phí đại lý trung bình, bạn có thể viết một truy vấn phụ, thay vì viết nhiều dòng mã.

Có liên quan: Cách tạo bảng trong SQL

Đây là cách truy vấn trông như thế nào:

Select * from agent_details
where Agency_Fee > (select avg(Agency_Fee) from agent_details);

Lệnh trước > dấu hiệu là truy vấn bên ngoài, trong khi mọi thứ sau dấu > dấu hiệu là truy vấn bên trong.

Truy vấn bên trong sẽ tính phí đại lý trung bình trong truy vấn phụ và truy vấn bên ngoài sẽ hiển thị tất cả các giá trị lớn hơn giá trị trung bình được tính toán.


Giao diện SQL

Làm thế nào để sử dụng truy vấn con trong SQL?

Có một số cách khác nhau mà bạn có thể sử dụng truy vấn con trong SQL.

Truy vấn phụ với mệnh đề Where

Một trong những cấu trúc cơ bản nhất của truy vấn con trong SQL nằm trong mệnh đề Where. Đó là cách đơn giản nhất để xác định những gì bạn đang tìm kiếm. Câu lệnh select trả về các giá trị theo (các) điều kiện truy vấn phụ và sử dụng nó làm tham số cho truy vấn chính.

Cấu trúc truy vấn:

select * from table_name
where column_name = (select column_name from table_name);

Hãy giải thích điều này bằng một ví dụ.

Giả sử bạn muốn tìm phí đại lý cao thứ hai từ bảng agency_details. Để làm như vậy, có các hàm thay thế trong SQL; Tuy nhiên, phương pháp tốt nhất là sử dụng một truy vấn phụ.

Đây là cách bạn có thể xác định truy vấn phụ:

select *, max(Agency_fee)
from agent_details
where Agency_fee < (select max(Agency_fee) from agent_details);

Câu lệnh kết quả sẽ cho bạn thấy 8000, là mức phí cao thứ hai trong bảng nhất định. Khi truy vấn chạy, truy vấn phụ sẽ tính giá trị lớn nhất từ ​​danh sách phí. Số tiền phí cao nhất (9000) được lưu trữ trong bộ nhớ.


Giao diện SQL

Sau khi phần này được tính toán, phần thứ hai của truy vấn sẽ được tính toán, phần này sẽ tìm ra mức phí cao thứ hai từ bảng (vì < dấu hiệu được sử dụng). Kết quả cuối cùng là 8000, là mức phí cao thứ hai trong bảng.

Truy vấn phụ trong mệnh đề từ

Một biến thể khác trong các truy vấn phụ là chuyển điều kiện trong từ mệnh đề. Như một khái niệm tương tự, truy vấn bên trong được xử lý trước và truy vấn bên ngoài được xử lý sau đó. Truy vấn bên trong sẽ lọc dữ liệu và hiển thị kết quả trong đó ID = 3.

Đây là truy vấn để tham khảo:

select a.* from (
select agency_fee from agent_details
where ID= 3) as a;

Giao diện SQL

Đây là một cấu trúc rất cơ bản; tuy nhiên, bảng dữ liệu của bạn càng phức tạp, bạn sẽ nhận được nhiều hàng dữ liệu hơn, phù hợp với điều kiện của bạn.

Sử dụng truy vấn phụ với câu lệnh chèn vào

Nếu bạn muốn cập nhật bảng hiện có với một số hàng dữ liệu mới, bạn có thể sử dụng Chèn vào bản tường trình. Một truy vấn phụ có thể tỏ ra khá hữu ích, nếu bạn muốn thêm các giá trị dựa trên (các) điều kiện cụ thể.

Cấu trúc truy vấn:

insert into table_name 
select * from table_name
where column_name = conditions;
select * from table_name;

Dưới đây là một ví dụ về cách bạn có thể sử dụng câu lệnh chèn vào với truy vấn phụ:

insert into agent_details
select * from agent_details
where agency_fee in (1000, 5000);
select * from agent_details;

Giao diện SQL

Khi truy vấn chạy, các giá trị phù hợp với điều kiện sẽ lại được chèn vào bảng hiện có. Các lựa chọn * tham chiếu chọn tất cả các cột cùng nhau và chèn nó vào bảng agent_details như nó vốn có. Các trong câu lệnh được sử dụng để xác định nhiều điều kiện lọc cùng một lúc.

Sử dụng truy vấn phụ với câu lệnh cập nhật

Có những tình huống trong đó bạn muốn cập nhật các bảng bên dưới trong khi chạy các truy vấn. Để làm như vậy, bạn có thể sử dụng cập nhật cùng với các lệnh truy vấn.

Đây là cách bạn sẽ viết truy vấn phụ để cập nhật thông tin trong bảng trong một trường hợp:

update table_name 
set column_name = new_value
where column_name =
(select column_name from table_name where = );

Dưới đây là một ví dụ minh họa việc sử dụng câu lệnh cập nhật:

UPDATE agent_details 
SET agency_fee = 35000
WHERE agency_fee =
(SELECT agency_fee FROM agent_details WHERE First_name='John');
select * from agent_details;

Truy vấn phụ sẽ lọc trên cột agency_fee và chọn ra (các) hàng nơi First_Name khớp John. Truy vấn bên ngoài được thực hiện tiếp theo, trong đó phí đại lý được cập nhật lên 35000 cho John Wick.


Giao diện SQL

Bạn có thể vượt qua một lựa chọn * tuyên bố để kiểm tra kết quả cuối cùng; bạn sẽ nhận thấy phí đại lý cho John Wick được cập nhật lên 35000, vì chỉ có trường hợp phù hợp với các điều kiện được xác định trong truy vấn.

Sử dụng truy vấn phụ với câu lệnh xóa

Cũng giống như câu lệnh cập nhật, trong đó bạn đang cập nhật các hàng dữ liệu trong bảng hiện có, xóa bỏ câu lệnh xóa (các) hàng dữ liệu dựa trên một điều kiện.

Cấu trúc câu lệnh xóa là:

delete from table_name where variable/column name = 
(select column_name from table_name where = condition);

Đây là một ví dụ:

Delete from agent_details 
where First_name IN
(select First_name from agent_details where agency_fee = 9000);
select * from agent_details;

Giao diện SQL

Sử dụng truy vấn con trong SQL

Truy vấn phụ là một tính năng tuyệt vời trong SQL, có thể giúp bạn không phải viết vô số dòng mã không cần thiết. Khi bạn có thể sử dụng các chức năng cơ bản của các truy vấn con để thực hiện việc đặt giá thầu, bạn sẽ không bao giờ muốn lo lắng về sự phức tạp của mã hóa SQL.

Tốt nhất bạn nên nâng cao kiến ​​thức SQL hiện có của mình để đảm bảo bạn luôn dẫn đầu trò chơi của mình. Hãy yên tâm, các bảng gian lận SQL có thể cung cấp cho bạn một ý tưởng hay về cách hoàn thiện những điều cơ bản của bạn chỉ trong nháy mắt.


MacBook với mã hiển thị trên màn hình
Bảng lừa dối lệnh SQL cơ bản cho người mới bắt đầu

Bạn muốn tìm hiểu thêm về SQL? Có khả năng xử lý các lệnh truy vấn SQL khác nhau là một cách tuyệt vời để vượt lên.

Đọc tiếp


Giới thiệu về tác giả

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *