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