Mysql - Come inserire una nuova riga solo se i dati non esistono

Mysql - Come inserire una nuova riga solo se i dati non esistono
MySQL è un famoso RDBMS open source per archiviare i dati in database. L'inserimento di dati nelle tabelle del database è un compito comune. A volte, gli utenti non vogliono inserire dati duplicati per eliminare la ridondanza. MySQL consente agli utenti di inserire dati solo se non esistono già dati simili.

Questo post discuterà di inserire una nuova riga solo se i dati non esistono già nella tabella MySQL. Prima di iniziare con questo post, assicurati di accedere al server locale MySQL e hai scelto un database in cui si desidera lavorare.

Inserire una nuova riga solo se i dati non esistono utilizzando l'istruzione "INSERIRE IGNORE"

Bene, la risposta alla domanda nel titolo è piuttosto semplice e diretta. Usa semplicemente il "INSERIRE"Parola chiave insieme al"IGNORARE" Parola chiave. Ciò si assicurerà che i nuovi dati o la query di inserto vengano eseguiti solo quando non viene trovata alcuna precedente voce dei dati in MySQL. Per ottenere una breve panoramica di questo, dai un'occhiata alla seguente sintassi:

Inserisci Ignora in [Table-Name] ([Column1-Name], [Column2-Name], [Column3-Name]) valori ([Value1], [Value2], [Value3]);

Vediamo un esempio se l'utente desidera inserire un valore di riga "1","John" E "Doe" nel "Cliente"Tabella per le colonne"Id,""Nome di battesimo" E "Cognome"Rispettivamente. Esegui questa query per inserire questi valori se non se non esiste già questi valori:

Seleziona * dal cliente;
Inserisci Ignora nei valori del cliente (id, firstname, lastName) (1, "John", "doe");

L'output contiene due tabelle che visualizzano i dati della tabella prima e dopo l'esecuzione della query. Puoi notare che nulla sta cambiando nella tabella perché la riga esisteva già, quindi MySQL ha ignorato correttamente il processo di inserimento senza visualizzare l'errore:

Inserire una nuova riga solo se i dati non esistono utilizzando la clausola "non esiste"

In mysql, il "DOVE NON ESISTE"La clausola impedisce l'inserimento di righe se esistono già nella tabella quando viene utilizzata in"INSERIRE"Dichiarazione con una sottoquery per definire una condizione. Quando questa clausola viene utilizzata con la sottoquery "(Seleziona * da [tabella-name] [colonna-nome] = [espressione]);"Controlla se esiste una riga nella tabella che soddisfa la condizione. Se esiste una fila, il "Dove non esiste"La clausola restituirà un valore falso e il"SELEZIONARE"La dichiarazione non restituirà alcuna riga. Di conseguenza, la riga non verrà inserita nella tabella. La sintassi è fornita di seguito:

Inserisci in [Tabella-Name] ([Column1-Name], [Column2-Name], [Column3-Name])
Seleziona [valore1], [valore2], [valore3]
Dove non esiste (seleziona * da [tabella-name] [colonna-name] = [espressione]);

Vediamo un esempio se l'utente desidera inserire una riga nella tabella dei dipendenti contenenti valori "1","Americanas" E "Henriot"Nelle colonne"id","Nome della ditta" E "Nome del contatto"Rispettivamente. Ma solo se una riga con un ID di "1"Non si trova nel tavolo o non esiste. In quel caso particolare, la query diventerà:

Seleziona * dal dipendente;
INSERT IN Employee (ID, CompanyName, ContactName)
Seleziona 1, "Americanas", "Henriot"
Dove non esiste (selezionare * dal dipendente dove id = 1);

L'output visualizza una nuova riga che non è inserita come riga con "id" uguale a "1"Già esisteva.

Inserire una nuova riga solo se i dati non esistono utilizzando la clausola "su duplicate chiave aggiornamento"

Bene, un altro modo è usare il "Su duplicato aggiornamento della chiave"Clausola in Mysql. Poiché questa clausola verrà utilizzata con la query "Insert in" formando un'esecuzione "if-else". Ciò significa che i dati all'interno della tabella verranno aggiornati solo se è unico. Altrimenti, non si verificherebbe alcun cambiamento. La sintassi generale per questo è la seguente:

Inserisci in [Tabella-Name] ([Column1-Name], [Column2-Name], [Column3-Name]) VALORI ([Value1], [Value2], [Value3])
Su duplicato aggiornamento della chiave [column1-name] = [column1-name];

Vediamo un esempio, per inserire i valori in "2","Pascale","Nixon","Londra","UK" E “(171) 555-7788" sul tavolo "Cliente"Per le colonne"Id","Nome di battesimo","Cognome","città","Paese" E "telefono"Rispettivamente. Se la riga non esiste già, verrà inserita. Altrimenti, aggiornerà i valori in cui "Id = id"La condizione si incontra. Esegui questa domanda:

Seleziona * dal cliente;
Inserisci in Cliente (ID, FirstName, LastName, City, Country, Telefono)
Valori (2, "Pascale", "Nixon", "London", "UK", "(171) 555-7788")
Su duplicato aggiornamento della chiave id = id;

Questo è il tavolo prima di eseguire la query, puoi vedere "Id" uguale a "2" non esiste:

Dopo aver eseguito la query, questa query inserirà nuove righe nella tabella:

Hai inserito con successo una nuova riga, poiché i dati non esistono prima di eseguire la query.

Conclusione

In MySQL, inserire una nuova riga solo se i dati non esistono già utilizzando "Inserire ignorare"Affermazione o"Dove non esisteClausola in "INSERIRE" dichiarazione. Un altro modo per farlo è usare il "Su duplicato aggiornamento della chiaveClausola in "INSERIRE"Dichiarazione da aggiornare se la riga esiste già. Altrimenti, aggiungi una nuova riga. Il post ha discusso di come inserire una nuova riga solo se i dati non esistono.