Menghapus baris dari sebuah tabel.
Sintaksis
DELETE [ optimizer_hint ] FROM table[subquery][@dblink ]
[ WHERE condition ]
[ RETURNING return_expression [, ...]
{ INTO { record | variable [, ...] }
| BULK COLLECT INTO collection [, ...] } ]Deskripsi
Gunakan pernyataan DELETE untuk menghapus baris yang memenuhi kondisi WHERE dalam tabel tertentu. Jika klausa WHERE tidak ditentukan, semua baris dalam tabel akan dihapus. Pernyataan ini dapat dieksekusi secara normal dan membuat tabel menjadi kosong.
TRUNCATE adalah metode yang lebih cepat untuk menghapus semua baris dari sebuah tabel.Klausa RETURNING INTO { record | variable [, ...]} hanya dapat digunakan jika Anda menjalankan perintah DELETE dalam program SPL. Set hasil dari perintah DELETE tidak boleh mencakup beberapa baris; jika tidak, pengecualian akan terjadi. Jika set hasil kosong, isi rekaman atau variabel target disetel ke null.
Klausa RETURNING BULK COLLECT INTO collection [, ...] hanya dapat digunakan jika Anda menjalankan perintah DELETE dalam program SPL. Jika Anda menentukan beberapa collection sebagai target dari klausa BULK COLLECT INTO, setiap collection harus berisi bidang skalar. collection tidak boleh berupa rekaman. Set hasil dari perintah DELETE dapat berisi nol, satu, atau beberapa baris. return_expression yang dievaluasi untuk setiap baris dari set hasil menjadi elemen dalam collection, mulai dari elemen pertama. Baris yang ada dalam collection dihapus. Jika set hasil kosong, collection juga akan kosong.
Anda harus memiliki hak istimewa DELETE pada tabel tempat Anda ingin menghapus data, serta hak istimewa SELECT pada tabel yang datanya dibaca dalam kondisi.
Parameter
| Parameter | Deskripsi |
| optimizer_hint | Petunjuk yang disematkan dalam komentar kepada pengoptimal, yang digunakan untuk memilih rencana eksekusi. |
| table | Nama tabel yang sudah ada. Nama tersebut dapat memenuhi syarat skema. |
| dblink | Nama tautan database, yang mengidentifikasi database jarak jauh. Untuk informasi lebih lanjut tentang tautan database, lihat perintah CREATE DATABASE LINK. |
| condition | Ekspresi nilai yang mengembalikan nilai bertipe BOOLEAN. Ekspresi nilai menentukan baris yang akan dihapus. |
| return_expression | Ekspresi yang dapat mencakup satu atau lebih kolom dalam table. Jika nama kolom dalam table ditentukan dalam return_expression, nilai yang digantikan untuk kolom ketika return_expression dievaluasi adalah nilai dari baris yang dihapus. |
| record | Rekaman yang bidangnya ingin Anda tetapkan dengan hasil evaluasi dari return_expression. Sebagai contoh, return_expression pertama ditetapkan ke bidang pertama dalam record, dan return_expression kedua ditetapkan ke bidang kedua dalam record. Jumlah bidang dalam record harus sesuai dengan jumlah ekspresi, dan bidang-bidang tersebut harus kompatibel tipe dengan ekspresi yang sesuai. |
| variable | Variabel yang ingin Anda tetapkan dengan hasil evaluasi dari return_expression. Jika Anda menentukan beberapa return_expression dan variable, return_expression pertama ditetapkan ke variable pertama, return_expression kedua ditetapkan ke variable kedua. Jumlah variabel yang ditentukan setelah kata kunci INTO harus sesuai dengan jumlah ekspresi yang mengikuti kata kunci RETURNING, dan variabel-variabel tersebut harus kompatibel tipe dengan ekspresi yang sesuai. |
| collection | Koleksi di mana elemen dibuat dari return_expression yang dievaluasi. Anda dapat menentukan koleksi dengan satu bidang atau koleksi dengan tipe rekaman. Anda juga dapat menentukan beberapa koleksi di mana setiap koleksi terdiri dari satu bidang. Jumlah ekspresi pengembalian harus sesuai dalam jumlah dan urutan dengan jumlah bidang dalam semua koleksi yang ditentukan. Setiap return_expression harus kompatibel tipe dengan bidang collection yang sesuai. |
| subquery | Parameter ini menentukan klausa subquery. |
Contoh
Hapus semua baris untuk karyawan 7900 dari tabel jobhist:
DELETE FROM jobhist WHERE empno = 7900;Kosongkan tabel jobhist:
DELETE FROM jobhist;Ambil hasil dari SELECT * FROM t sebagai objek, dan hapus semua data dari objek:
DELETE FROM (SELECT * FROM t);