Apa Itu Sub Query di MySQL/SQL

Posted by Admin on 7 Oktober 2020, 19:50:15 KATEGORI : Database TAG : nested query, query bersarang, sql, subquery

Subquery adalah kueri dalam kueri dan tertanam dalam klausa WHERE, bisa disebut juga sebagai permintaan dalam permintaan atau permintaan bersarang.

Sebuah subquery digunakan untuk mengembalikan data yang akan digunakan dalam query utama sebagai syarat untuk lebih membatasi data yang akan diambil.

Subqueries dapat digunakan dengan SELECT, INSERT, UPDATE, dan DELETE statements bersama dengan operator seperti =, <,>,> =, <=, IN, BETWEEN dll.

Aturan subqueries harus mengikuti:

  • Subqueries harus tertutup dalam tanda kurung.
  • Sebuah subquery hanya dapat memiliki satu kolom pada klausa SELECT, kecuali beberapa kolom yang di query utama untuk subquery untuk membandingkan kolom yang dipilih.
  • ORDER BY tidak dapat digunakan dalam subquery, meskipun permintaan utama dapat menggunakan ORDER BY.GROUP BY dapat digunakan untuk melakukan fungsi yang sama seperti ORDER BY dalam subquery.
  • Subqueries yang kembali lebih dari satu baris hanya dapat digunakan dengan beberapa value operator, seperti operator IN.
  • Daftar SELECT tidak bisa menyertakan referensi ke nilai-nilai yang mengevaluasi ke BLOB, ARRAY, CLOB, atau NCLOB.
  • Sebuah subquery tidak dapat segera tertutup dalam fungsi set.
  • Operator BETWEEN tidak dapat digunakan dengan subquery;Namun, BETWEEN dapat digunakan dalam subquery.

Subkueri dengan Pernyataan SELECT

Sintaks dasar dari sub query adalah sebagai berikut:

SELECT column_name [, column_name ]
FROM   table1 [, table2 ]
WHERE  column_name OPERATOR
   (SELECT column_name [, column_name ]
   FROM table1 [, table2 ]
   [WHERE])

Contoh

SELECT *
   FROM CUSTOMERS
   WHERE ID IN (SELECT ID
         FROM CUSTOMERS
         WHERE SALARY > 4500) ;

Subkueri dengan Pernyataan INSERT

Subkueri juga bisa digunakan dengan pernyataan INSERT. Pernyataan INSERT menggunakan data yang dikembalikan dari subkueri untuk dimasukkan ke dalam tabel lain. Data yang dipilih di subquery dapat dimodifikasi dengan salah satu fungsi karakter, tanggal atau angka.

INSERT INTO TABLE_NAME [ (column1 [, column2 ]) ]
   SELECT [ *|column1 [, column2 ]
   FROM table1 [, table2 ]
   [ WHERE VALUE OPERATOR ]

Contoh

INSERT INTO CUSTOMERS_BKP
   SELECT * FROM CUSTOMERS
   WHERE ID IN (SELECT ID
   FROM CUSTOMERS) ; 

Subkueri dengan Pernyataan UPDATE

Subkueri dapat digunakan bersama dengan pernyataan UPDATE. Salah satu atau beberapa kolom dalam tabel dapat diperbarui saat menggunakan subkueri dengan pernyataan UPDATE.

UPDATE TABLE
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
   (SELECT COLUMN_NAME
   FROM TABLE_NAME)
   [ WHERE) ]

Contoh

UPDATE CUSTOMERS
   SET SALARY = SALARY * 0.25
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP
      WHERE AGE >= 27 );

Subkueri dengan Pernyataan DELETE

Subkueri dapat digunakan bersama dengan pernyataan DELETE seperti pernyataan lain yang disebutkan di atas.

DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
   (SELECT COLUMN_NAME
   FROM TABLE_NAME)
   [ WHERE) ]

Contoh

DELETE FROM CUSTOMERS
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP
      WHERE AGE >= 27 );

Referensi

  • https://www.tutorialspoint.com/sql/sql-sub-queries.htm