Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn con trong oracle là gì

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định dạng một số dưới dạng phần trăm trong Oracle

  2. ODP.NET Oracle.ManagedDataAccess khiến phiên mạng ORA-12537 kết thúc tệp

  3. Làm thế nào để đưa ra một ràng buộc duy nhất cho một tổ hợp các cột trong Oracle?

  4. So sánh với ngày tháng trong Oracle sql

  5. Hàm FLOOR () trong Oracle