MySQL REPLACE

Sommario: in questo tutorial, imparerete come usare l’istruzione MySQL REPLACE per inserire o aggiornare dati nelle tabelle del database.

Introduzione all’istruzione MySQL REPLACE

L’istruzione MySQL REPLACE è un’estensione dello standard SQL. L’istruzione MySQL REPLACE funziona come segue:

Passo 1. Inserire una nuova riga nella tabella, se si verifica un errore di chiave duplicata.

Step 2. Se l’inserimento fallisce a causa di un errore di chiave duplicata:

  • Cancellare la riga in conflitto che causa l’errore di chiave duplicata dalla tabella.
  • Inserire nuovamente la nuova riga nella tabella.

Per determinare se la nuova riga esiste già nella tabella, MySQL usa l’indice PRIMARY KEY o UNIQUE KEY. Se la tabella non ha uno di questi indici, il REPLACE funziona come una dichiarazione INSERT.

Per utilizzare l’istruzione REPLACE, è necessario avere almeno entrambi i privilegi INSERT e DELETE per la tabella.

Nota che MySQL ha la funzione REPLACE stringa che non è la dichiarazione REPLACE trattata in questo tutorial.

Utilizzare MySQL REPLACE per inserire una nuova riga

Il seguente illustra la sintassi dell’istruzione REPLACE:

REPLACE table_name(column_list)VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
È simile all’istruzione INSERT tranne che per la parola chiave REPLACE.

Diamo un’occhiata al seguente esempio di utilizzo dell’istruzione REPLACE per vedere come funziona.

Primo, create una nuova tabella chiamata cities come segue:

CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
Code language: SQL (Structured Query Language) (sql)

In seguito, inserite alcune righe nella tabella cities:

INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Code language: SQL (Structured Query Language) (sql)

Poi, interroga i dati della tabella cities per verificare l’operazione di inserimento.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
MySQL REPLACE - sample table

Dopo di che, utilizzare l’istruzione REPLACE per aggiornare la popolazione della città Los Angeles a 3696820.

REPLACE INTO cities(id,population)VALUES(2,3696820);
Code language: SQL (Structured Query Language) (sql)

Infine, interrogate nuovamente i dati della tabella cities per verificare la sostituzione.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
esempio MySQL REPLACE

Il valore nella colonna nameNULL ora. L’istruzione REPLACE funziona come segue:

  1. Prima, l’istruzione REPLACE ha cercato di inserire una nuova riga nella cities tabella. L’inserimento è fallito perché l’id 2 esiste già nella tabella cities.
  2. Poi, l’istruzione REPLACE ha cancellato la riga con id 2 e ha inserito una nuova riga con lo stesso id 2 e la popolazione 3696820. Poiché non è stato specificato alcun valore per la colonna name, essa è stata impostata su NULL.

Utilizzando l’istruzione MySQL REPLACE per aggiornare una riga

Il seguente illustra come utilizzare l’istruzione REPLACE per aggiornare i dati:

REPLACE INTO tableSET column1 = value1, column2 = value2;
Code language: SQL (Structured Query Language) (sql)

Questa istruzione è come l’istruzione UPDATE tranne per la parola chiave REPLACE. Inoltre, non ha la clausola WHERE.

Questo esempio usa la dichiarazione REPLACE per aggiornare la popolazione della città Phoenix a 1768980:

REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
Code language: SQL (Structured Query Language) (sql)

A differenza dell’istruzione UPDATE, se non si specifica il valore della colonna nella clausola SET, l’istruzione REPLACE userà il valore di default di quella colonna.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)

Utilizzare MySQL REPLACE per inserire dati da un’istruzione SELECT

Il seguente illustra l’istruzione REPLACE che inserisce dati in una tabella con i dati provenienti da una query.

REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Code language: SQL (Structured Query Language) (sql)

Nota che questa forma dell’istruzione REPLACE è simile all’istruzione INSERT INTO SELECT.

L’istruzione seguente usa l’istruzione REPLACE INTO per copiare una riga nella stessa tabella:

REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
Code language: SQL (Structured Query Language) (sql)

In questo tutorial, hai imparato diverse forme dell’istruzione MySQL REPLACE per inserire o aggiornare dati in una tabella.

  • Questo tutorial è stato utile?
  • SìNo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *