Bagaimana MySQL Menghapus Dengan Pernyataan Gabung Hapus

Tutorial ini akan membahas cara menggunakan klausa MySQL DELETE dalam pernyataan JOIN untuk menghapus data dari beberapa tabel yang memenuhi kondisi yang ditentukan.

Tujuan dari tutorial ini adalah untuk membantu Anda memahami bagaimana menggunakan klausa DELETE bersama dengan klausa JOIN untuk menghapus data sekaligus. Jika Anda baru mengenal MySQL, pertimbangkan tutorial kami yang lain, seperti tutorial JOINS dan DROP tables.

Mari kita mulai.

Penggunaan Dasar: Hapus Dengan Inner Join

Metode Hapus pertama yang akan kita bahas adalah bagaimana menggunakan klausa MySQL DELETE di dalam pernyataan INNER JOIN untuk menghapus data dari baris yang cocok dengan tabel lain.

Sintaks umum untuk mengimplementasikan kueri seperti itu ditunjukkan di bawah ini:

DELETE tbl1, tbl2 FROM tbl1 INNER JOIN tbl2 ON tbl1.col = tbl2.col WHERE [condition];

Biarkan saya meyakinkan Anda bahwa itu lebih mudah daripada yang terlihat. Mari saya jelaskan:

Kita mulai dengan menentukan tabel dari mana kita ingin menghapus data. Tabel ditentukan antara klausa DELETE dan FROM.

Di bagian kedua, kami menentukan kondisi untuk baris yang cocok di tabel yang ditetapkan. Sebagai contoh:

tbl1.col = tbl2.col

Akhirnya, kami menetapkan kondisi WHERE yang menentukan baris dalam tabel yang ditentukan untuk dihapus.

Contoh Kasus Penggunaan

Biarkan saya menggunakan contoh untuk mengilustrasikan bagaimana kita dapat menggunakan klausa DELETE dan INNER JOIN untuk menghapus baris dari beberapa tabel. Pertimbangkan pertanyaan di bawah ini:

CREATE SCHEMA society;
USE society;
DROP TABLE IF EXISTS users, contacts;
CREATE TABLE users(
    user_id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(100),
    last_name VARCHAR(100),
    state VARCHAR(50)
);
CREATE TABLE contacts(
    home_id INT PRIMARY KEY AUTO_INCREMENT,
    tel VARCHAR(50),
    address VARCHAR(255)
);
INSERT INTO users(first_name, last_name, state) VALUES ("John", "Muller", "Colorado"), ("Mary", "Jane", "California"), ("Peter", "Quill", "New York");
INSERT INTO contacts(tel, address) VALUES ("303-555-0156", "281 Denver, Colorado"), ("661-555-0134", "302 Drive, Bakersfield"), ("516-555-0148", "626 Est Meadow, NYC");

Setelah kami memiliki data tersebut, kami dapat menggambarkan cara menggunakan DELETE dengan INNER JOIN seperti yang ditunjukkan pada kueri di bawah ini:

DELETE society.users, society.contacts FROM society.users INNER JOIN contacts ON user_id=home_id WHERE user_id=3;

Query di atas akan menampilkan hasil seperti gambar di bawah ini:

dua baris terpengaruh dalam 7 md, yang menunjukkan bahwa dua baris telah dihapus.

Hapus dengan LEFT JOIN

Metode Delete kedua yang akan kita bahas adalah dengan menggunakan LEFT JOIN. Sintaks umum untuk jenis penghapusan ini adalah seperti yang ditunjukkan di bawah ini:

DELETE tbl1 FROM tbl1 LEFT JOIN tbl2 ON tbl1.col = tbl2.col WHERE tble.col IS NULL;

UNTUK DELETE dengan LEFT JOIN, kami hanya menetapkan satu tabel—tidak seperti INNER JOIN di mana kami menetapkan dua tabel.

Pertimbangkan seluruh kueri di bawah ini:

USE society;
DROP TABLE IF EXISTS users, contacts;
CREATE TABLE users(
    user_id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(100),
    last_name VARCHAR(100),
    state VARCHAR(50)
);
CREATE TABLE contacts(
    home_id INT PRIMARY KEY AUTO_INCREMENT,
    tel VARCHAR(50),
    address VARCHAR(255)
);
INSERT INTO users(first_name, last_name, state) VALUES ("John", "Muller", "Colorado"), ("Mary", "Jane", "California"), ("Peter", "Quill", "New York"), ("Mystic", "Arts", "South Carolina");
INSERT INTO contacts(tel, address) VALUES ("303-555-0156", "281 Denver, Colorado"), ("661-555- 0134", "302 Drive, Bakersfield"), ("516-555-0148", "626 Est Meadow NYC"), ("843-555-0105", null);
 
DELETE users FROM users LEFT JOIN contacts ON user_id = home_id WHERE address IS NULL;
SELECT * FROM users;

Setelah kita mengeksekusi query di atas, user yang alamatnya null setelah JOIN dihapus dan hasil outputnya seperti di bawah ini:

Kesimpulan

Dalam tutorial ini, kami membahas cara menggunakan MySQL DELETE dengan pernyataan JOIN untuk menghapus data dari beberapa tabel.

Related Posts