Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apa itu subquery di oracle

SubQuery di Oracle

(1) Subquery atau Kueri bersarang adalah kueri dalam kueri SQL lain dan disematkan di dalam klausa WHERE. Subquery adalah kueri di dalam kueri

(2) Subquery digunakan untuk mengembalikan data yang akan digunakan dalam query utama sebagai syarat untuk lebih membatasi data yang akan diambil.

(3) Subquery menjawab pertanyaan yang memiliki banyak bagian. Kueri induk menjawab sebagian dan subkueri menjawab bagian lain

(4) Subquery dapat digunakan dengan pernyataan SELECT, INSERT, UPDATE, dan DELETE bersama dengan operator seperti =, <,>,>=, <=, IN, BETWEEN dll.

(5) Menggunakan subkueri dalam klausa FROM dikenal sebagai tampilan sebaris .

(6) Menggunakan subquery dalam klausa WHERE disebut subquery bersarang . Maksimal 255 kueri bersarang diperbolehkan.

Beberapa Pedoman untuk SubQuery Oracle

(1) Kita harus selalu menempatkan subquery dalam tanda kurung

(2) Kita perlu menempatkan subquery di sisi kanan operator perbandingan

(3) Gunakan operator baris tunggal dengan subkueri baris tunggal dan operator baris ganda dengan subkueri baris ganda

Sintaks Umum

SELECT col1, col2
FROM   table1
WHERE  col1  OPERATOR
(SELECT col1
FROM table2
[WHERE])

Subquery Baris Tunggal

Ini mengembalikan hanya satu baris hasil dan menggunakan operator baris tunggal (paling umum adalah operator yang sama (=)). Operator lainnya adalah > ,<,>=  ,=<

Subquery baris tunggal dapat memilih data dari tabel yang sama atau dari tabel lain

SELECT ENAME FROM EMP WHERE SAL = (SELECT MIN(SAL) FROM EMP);SELECT ENAME FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'RESEARCH');

Subkueri Beberapa Baris

Ini mengembalikan beberapa baris hasil dari subquery, menggunakan operator IN. Dalam kueri sebelumnya, jika ada lebih dari satu departemen penelitian, kueri tersebut akan gagal. Contoh mengembalikan lebih dari satu baris dalam subquery

Operator lain yang digunakan adalah any dan all

SELECT ENAME, DEPTNO FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME LIKE 'R%');

Subkueri Berkorelasi

Subquery berkorelasi adalah subquery yang bergantung pada kolom dari kueri induk. Subkueri yang berkorelasi dievaluasi untuk setiap baris yang diproses oleh kueri induk. Pernyataan induk dapat berupa SELECT, UPDATE, atau DELETE.

SELECT ENAME,SAL FROM EMP E1
WHERE SAL = (SELECT MAX(SAL)
FROM EMP E2 WHERE E1.DEPTNO = E2.DEPTNO);

Berdasarkan data emp dan dept yang sama, inilah hasilnya

Subquery Skalar

Ini mengembalikan tepat satu nilai dari satu baris, paling sering digunakan dalam klausa VALUES dari pernyataan INSERT, di dan klausa ORDER BY atau WHERE dan dalam klausa SELECT:

SELECT ENAME,
DEPTNO, (SELECT MAX(SAL)
FROM EMP E2
WHERE E2.DEPTNO = E1.DEPTNO) HIGH_SAL
FROM EMP E1
WHERE ENAME LIKE 'B%';

Sub kueri dijalankan sekali untuk setiap eksekusi kueri master. Subquery baris tunggal hanya dapat digunakan dengan operator baris tunggal

  Subkueri Beberapa Kolom

Kueri dapat memiliki  lebih dari satu kolom dalam klausa SELECT dari subkueri atau dalam pernyataan UPDATE

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');

Subquery dalam Pernyataan DML lainnya

Subquery dapat digunakan dalam pernyataan UPDATE, DELETE dan 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 );

Artikel Terkait
cara menulis kueri sql :Apa itu Oracle Bergabung dengan contoh (Sql joins), Berbagai jenis join , Inner Join, Outer join, left outer join, right outer join, cross join dengan contoh
Oracle Joins :Apa itu Oracle Joins dengan contoh (Sql joins), Berbagai jenis join , Inner Join, Outer join, left outer join, right outer join, cross join with contoh
Fungsi tanggal di oracle :Lihat posting ini untuk Oracle fungsi tanggal, perbedaan tanggal oracle dalam tahun, perbedaan tanggal oracle dalam hari, perbedaan tanggal oracle dalam bulan.
JSON di oracle :Lihat posting ini tentang cara menggunakan JSON di oracle, cara membuat tabel yang berisi data JSON, caranya untuk mengekstrak,memasukkan data JSON di oracle
Tutorial Oracle Sql :Daftar semua pelajaran tutorial sql yang dapat digunakan untuk menguasai sql dan digunakan di Oracle, manajemen dan manipulasi data
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. Fungsi SYSTIMESTAMP di Oracle

  2. Kumpulkan Statistik Skema Menggunakan FND_STATS di EBS 11i dan R12

  3. Ubah Kunci Utama

  4. Kumpulkan Massal PL/SQL Dengan Klausa LIMIT Di Database Oracle

  5. Cara Membuat Prosedur Di Dalam Paket di Oracle