istruzione INSERT INTO VALUES()

Abbiamo capito come creare tabelle, diamo ora uno sguardo dettagliato a come aggiungere dati a una tabella utilizzando una query SQL.

In effetti, è molto semplice farlo, ma ci sono diverse sfumature. L'opzione più semplice per inserire dati in una tabella richiede di specificare due cose:

  • nomi di colonna
  • valori di colonna (dati)

I nomi delle colonne devono essere specificati, poiché molto spesso le colonne hanno valori predefiniti che non vengono specificati durante l'inserimento dei dati. E di solito ogni tabella ha almeno una di queste colonne, ad esempio id riga.

La forma generale della query per l'inserimento di dati in una tabella è la seguente:

INSERT INTO table (column1, column2, column3) VALUES
    (value1, value2, value3),
    (value1, value2, value3),
    (value1, value2, value3);

Ad esempio, se desideri inserire un nuovo record nella tabella utente, ecco come apparirà la query:

INSERT INTO user (name, level, created_time) VALUES
	('Rabinovich', 5, ‘2022-06-06’);

INSERT INTO SELECT

Un altro scenario comune per l'inserimento di dati in una tabella è prenderli da un'altra tabella, schema o persino da un DBMS.

Per fare ciò, esiste un altro formato di query INSERT INTO, in cui, invece della parte VALUES, è possibile specificare una query per selezionare i dati.

La forma generale di tale richiesta è:

INSERT INTO table (column1, column2, column3)
SELECT-request;

Scriviamo una query che aggiungerà tutti gli utenti dalla tabella dei dipendenti alla tabella degli utenti:

INSERT INTO user (name, created_time)
   SELECT employee.name, employee.join_date
   FROM employee;

Abbiamo vari dati nella tabella dei dipendenti, ma da essi selezioniamo solo due campi: il nome e l'ora di arrivo in azienda.

Inoltre, la tabella utente richiede di specificare il livello utente - livello. I dipendenti non hanno un livello nella tabella dei dipendenti, quindi utilizzeremo il fatto che la tabella degli utenti ha un valore predefinito per il campo del livello. Semplicemente non specifichiamo il livello e SQL imposterà il valore predefinito.

Supponiamo di non essere soddisfatti del valore predefinito e di volere che il livello sia 99 e di sostituire user.created_time con la data odierna, quindi possiamo scrivere quanto segue:

INSERT INTO user (name, level, created_time)
   SELECT employee.name, 99, CURDATE()
   FROM employee;

C'è molto di più che si potrebbe fare, ma penso che questo sia sufficiente per ora. Puoi leggere di più sulla pagina MySQL ufficiale.