INSERT IF NOT EXISTS in MySQL

Preet Sanghavi 28 März 2022
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.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Verwandter Artikel - MySQL Query