INSERT IF NOT EXISTS in MySQL
In diesem Tutorial möchten wir verstehen, wie die Klausel INSERT IF NOT EXISTS
in einer Tabelle in der MySQL-Datenbank verwendet wird.
Wir fügen oft bestimmte Werte in eine bestimmte Spalte einer Tabelle ein, ohne ihre Existenz in der Tabelle zu überprüfen. Manchmal ist es jedoch notwendig, doppelte Werte beim Einfügen in eine bestimmte Tabelle zu vermeiden.
Betrachten Sie das Beispiel eines Autohauses. Beim Einfügen von Daten in die Tabelle Autos
möchten wir nicht, dass die Auto-ID
eines bestimmten Autotyps zweimal in unsere Tabelle eingefügt wird.
MySQL stellt uns die Klausel INSERT IF NOT EXISTS
zur Verfügung, die uns hilft, diese Operation effizient auszuführen. Die grundlegende Syntax für INSERT IF NOT EXISTS
ist wie folgt.
INSERT INTO name_of_the_table (column_name)
SELECT * FROM (SELECT value_name) AS val
WHERE NOT EXISTS (<conditonal expression>);
In name_of_the_table
fügen wir den value_name
in den column_name
ein, wenn der conditional expression
erfüllt ist.
Aber bevor wir beginnen, lassen Sie uns einen Dummy-Datensatz erstellen.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
INSERT IF NOT EXISTS
in MySQL
Lassen Sie uns verstehen, wie man INSERT IF NOT EXISTS
in MySQL verwendet, indem Sie einen neuen Schüler namens Preet
mit der stu_id
als 8
einfügen.
Wir werden diesen Wert jedoch nur dann einfügen, wenn die Vornamen der vorhandenen Studierenden in der Tabelle nicht mit Preet
übereinstimmen. Wir können diese Operation mit der folgenden Abfrage durchführen.
INSERT INTO student_details(stu_id,stu_firstName, stu_lastName)
SELECT * FROM (SELECT 8 as stu_id, 'Preet' AS customer_name, 'Shah' AS stu_lastName) AS new_value
WHERE NOT EXISTS (
SELECT stu_firstName FROM student_details WHERE stu_firstName = 'Preet'
) LIMIT 1;
Überprüfen Sie nun die Tabelle student_details
mit der folgenden Abfrage.
SELECT * from student_information;
Die oben genannte Abfrage liefert uns die folgende Ausgabe.
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Wie wir sehen, wurden der Tabelle keine neuen Werte hinzugefügt, da der Vorname Preet
bereits in der Tabelle student_details
existiert.
Lassen Sie uns versuchen, einen weiteren Schüler mit stu_id
als 9
und stu_firstName
als Dhruv
und stu_lastName
als Shah
hinzuzufügen. Wir können diese Operation mit der folgenden Abfrage ausführen.
INSERT INTO student_details(stu_id,stu_firstName, stu_lastName)
SELECT * FROM (SELECT 9 as stu_id, 'Dhruv' AS customer_name, 'Shah' AS stu_lastName) AS new_value
WHERE NOT EXISTS (
SELECT stu_firstName FROM student_details WHERE stu_firstName = 'Dhruv'
) LIMIT 1;
Wie in der obigen Abfrage zu sehen, fügen wir den Studenten mit stu_firstName
als Dhruv
hinzu, falls er noch nicht in der Tabelle vorhanden ist.
Die Ausgabe der oben genannten Abfrage sieht wie folgt aus.
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Preet Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
9 Dhruv Shah
Ein neuer Eintrag Dhruv Shah
mit stu_id
als 9
wurde erstellt, da es keine Duplikate im Vornamen gibt.
Mit Hilfe des INSERT IF NOT EXISTS
-Statements können wir also effizient Details in eine Tabelle eintragen, vorausgesetzt, der einzufügende Wert erfüllt die geforderte Bedingung in der NOT EXISTS
-Klausel in MySQL.