Truy vấn con trong Oracle
(1) Truy vấn con hoặc Truy vấn lồng nhau là một truy vấn trong một truy vấn SQL khác và được nhúng trong mệnh đề WHERE. Truy vấn con là một truy vấn trong một truy vấn
(2) Một truy vấn con được sử dụng để trả về dữ liệu sẽ được sử dụng trong truy vấn chính như một điều kiện để hạn chế hơn nữa dữ liệu được truy xuất.
(3) Truy vấn con trả lời các truy vấn có nhiều phần. Truy vấn chính trả lời một phần và truy vấn phụ trả lời phần khác
(4) Truy vấn con có thể được sử dụng với các câu lệnh SELECT, INSERT, UPDATE và DELETE cùng với các toán tử như =, <,>,> =, <=, IN, BETWEEN, v.v.
(5) Sử dụng truy vấn con trong mệnh đề FROM được gọi là chế độ xem nội tuyến .
(6) Sử dụng truy vấn con trong mệnh đề WHERE được gọi là truy vấn con lồng nhau . Cho phép tối đa 255 truy vấn lồng nhau.
Một số nguyên tắc cho các truy vấn con của Oracle
(1) Chúng ta cần luôn đặt các truy vấn phụ trong ngoặc đơn
(2) Chúng ta cần đặt các truy vấn con ở phía bên phải của toán tử so sánh
(3) Sử dụng toán tử hàng đơn với các truy vấn con hàng đơn và toán tử nhiều hàng với nhiều truy vấn con hàng
Cú pháp chung
SELECT col1, col2 FROM table1 WHERE col1 OPERATOR (SELECT col1 FROM table2 [WHERE])
Truy vấn con một hàng
Nó chỉ trả về một hàng kết quả và sử dụng một toán tử hàng duy nhất (phổ biến nhất là toán tử bằng (=)). Các toán tử khác là>, <,> =, =<
Truy vấn con một hàng có thể chọn dữ liệu từ cùng một bảng hoặc từ một bảng khác
SELECT ENAME FROM EMP WHERE SAL = (SELECT MIN(SAL) FROM EMP);SELECT ENAME FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'RESEARCH');
Truy vấn con nhiều hàng
Nó trả về một số hàng kết quả từ truy vấn con, sử dụng toán tử IN. Trong truy vấn trước, nếu có nhiều hơn một bộ phận nghiên cứu, truy vấn sẽ không thành công. Ví dụ về trả lại nhiều hàng trong truy vấn con
Toán tử khác được sử dụng là bất kỳ và tất cả
SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME LIKE 'R%');
Truy vấn con có liên quan
Truy vấn con tương quan là một truy vấn con dựa vào các cột từ truy vấn mẹ. Một truy vấn con tương quan được đánh giá cho mỗi hàng được xử lý bởi truy vấn mẹ. Câu lệnh mẹ có thể là CHỌN, CẬP NHẬT hoặc XÓA.
SELECT ENAME,SAL FROM EMP E1 WHERE SAL = (SELECT MAX(SAL) FROM EMP E2 WHERE E1.DEPTNO = E2.DEPTNO);
Dựa trên cùng một dữ liệu của emp và dept, đây là kết quả
Truy vấn con vô hướng
Nó trả về chính xác một giá trị từ một hàng, được sử dụng thường xuyên nhất trong mệnh đề VALUES của câu lệnh INSERT, trong mệnh đề ORDER BY hoặc WHERE và trong mệnh đề CHỌN:
SELECT ENAME, DEPTNO, (SELECT MAX(SAL) FROM EMP E2 WHERE E2.DEPTNO = E1.DEPTNO) HIGH_SAL FROM EMP E1 WHERE ENAME LIKE 'B%';
Truy vấn phụ thực thi một lần cho mỗi lần thực thi truy vấn chính. Truy vấn con một hàng chỉ có thể được sử dụng với các toán tử một hàng
Truy vấn con nhiều cột
Truy vấn có thể có nhiều hơn một cột trong mệnh đề CHỌN của truy vấn con hoặc trong các câu lệnh CẬP NHẬT
SELECT CITY,CITY_CODE,CITY_DESCRIPTION FROM LOCATIONS WHERE (LOCATION_ID, COUNTRY_ID) IN (SELECT LOCATION_ID, COUNTRY_ID FROM LOCATIONS WHERE STATE_PROVINCE = 'NEWYORK');
Truy vấn con trong các Tuyên bố DML khác
Truy vấn con có thể được sử dụng trong các câu lệnh UPDATE, DELETE và INSERT
Update Statement UPDATE EMP SET SALARY = (SELECT SALARY FROM EMP WHERE EMPLOYEE_ID = 112408) WHERE EMPLOYEE_ID = 193711; Insert Statement INSERT INTO DEPT (DEPT_ID, DEPT_NAME) VALUES ((SELECT MAX(DEPT_ID) FROM DEPT), 'NEW DEPT'); Delete Statement DELETE FROM CUSTOMERS WHERE AGE IN (SELECT AGE FROM CUST_BACK WHERE AGE > 40 );
Các bài viết có liên quan
cách viết truy vấn sql:Nối Oracle với các ví dụ (Sql joins) là gì, Các kiểu nối khác nhau, Nối bên trong, Nối ngoài, phép nối ngoài bên trái, phép nối ngoài bên phải, phép nối chéo với các ví dụ
Phép nối Oracle :Các phép nối trong Oracle là gì với các ví dụ (phép nối Sql), các kiểu liên kết khác nhau, phép nối bên trong, phép nối bên ngoài, phép nối bên ngoài bên trái, phép nối bên ngoài bên phải, phép nối chéo với các ví dụ
Các hàm ngày tháng trong oracle:Hãy xem bài đăng này để biết về oracle hàm ngày tháng, sự khác biệt về ngày oracle trong năm, sự khác biệt về ngày oracle trong ngày, sự khác biệt về ngày oracle trong tháng.
JSON trong oracle:Hãy xem bài đăng này về cách sử dụng JSON trong oracle, cách tạo bảng chứa dữ liệu JSON, cách để trích xuất, chèn dữ liệu JSON trong oracle
Oracle Sql tutorial:Liệt kê tất cả các bài học hướng dẫn sql có thể được sử dụng để thành thạo sql và sử dụng trong Oracle, quản lý và thao tác dữ liệu
https:// livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html