Torna all'elenco degli articoli Articoli
Tempo di lettura: 6 minuti

Che cos'è l'istruzione INSERT in SQL?

L'istruzione INSERT in SQL viene utilizzata per aggiungere nuovi dati al database. Questo articolo vi spiegherà come usarla e vi mostrerà esempi pratici.

Quando si impara l'SQL, ci si concentra sull'estrazione di dati da un database, lavorando principalmente con SELECT. In SQL esistono anche istruzioni che consentono di modificare i dati in un database.

La prima è l'istruzione INSERT: aggiunge dati a una tabella. I dati vengono aggiunti come una nuova riga nella tabella.

L'istruzione SQL INSERT inserisce una o più righe di dati in una tabella. Si può anche vedere INSERT scritto come INSERT INTO, ma entrambi si comportano allo stesso modo. L'inclusione di INTO è facoltativa nella maggior parte delle varianti di SQL.

L'istruzione INSERT è considerata un comando di manipolazione dei dati SQL. Gli altri comandi sono UPDATE e DELETE, che potete imparare in questo corso accessibile Come INSERT, UPDATE o DELETE dati in SQL da LearnSQL.it.

Sintassi di SQL INSERT

La sintassi di SQL INSERT ha due forme:

  1. Utilizzo di INSERT con i nomi delle colonne.
  2. Utilizzo di INSERT senza nomi di colonne.

Vediamo le sottili differenze tra le due e le regole che si applicano a ciascuna sintassi.

Sintassi SQL INSERT con i nomi delle colonne

La sintassi per l'uso di INSERT con i nomi delle colonne specificati è la seguente:

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

Quando si specificano le colonne in questo modo, le colonne e i valori devono corrispondere per ordine, tipo di dati e numero. Se si inserisce un valore stringa, questo deve essere racchiuso tra virgolette. I valori numerici non devono essere tra virgolette.

Ad esempio, immaginiamo di avere una tabella con le seguenti colonne:

CREATE TABLE person (name varchar(255), age int, date_of_birth date);

Dobbiamo scrivere la nostra query SQL per tenere conto del tipo di dati di ciascuna colonna:

INSERT INTO person (name, age, date_of_birth)
VALUES ('John Doe', 25, '1996-02-18');

Quando si includono nomi di colonne come questo, è possibile omettere alcuni valori a seconda della definizione della tabella. Ad esempio, se le colonne della tabella consentono i valori NULL o sono state impostate con valori predefiniti, è possibile escludere completamente queste colonne dall'istruzione INSERT.

Si immagini che sia stata creata la seguente tabella, con un valore DEFAULT per la colonna date_of_birth:

CREATE TABLE person (name varchar(255), age int, date_of_birth date DEFAULT ('1900-01-01'));

Ora, se si scrive la seguente query, escludendo completamente la colonna date_of_birth dall'istruzione INSERT INTO, questa verrà popolata con il valore DEFAULT invece che con NULL.

INSERT INTO person (name, age)
VALUES ('John Doe', 25);

Visualizzate il risultato di INSERT selezionandolo dalla vostra tabella:

SELECT * from person
nameagedate_of_birth
John Doe251900-01-01

È ora di vedere come cambia la sintassi quando si usa INSERT senza specificare i nomi delle colonne.

Sintassi SQL INSERT senza nomi di colonne

La sintassi per utilizzare INSERT senza i nomi delle colonne è la seguente:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

Se si sceglie di non elencare i nomi delle colonne, è necessario inserire i valori in ogni colonna della tabella, assicurandosi di mantenere l'ordine corretto. Per conoscere l'ordine corretto delle colonne, si può consultare lo schema informativo della tabella.

Applichiamo questa sintassi a un esempio pratico. Creiamo una semplice tabella come abbiamo fatto in precedenza:

CREATE TABLE person (name varchar(255), age int, date_of_birth date);

Questo crea la nostra tabella, ma come si fa ad aggiungervi più righe di dati senza specificare i nomi delle colonne? Si può semplicemente scrivere questa query:

INSERT INTO person
VALUES ('John Doe', 25, '1996-02-18'),
VALUES ('Ben Watson', 31, '1990-04-16'),
VALUES ('Lucy Smith', 27, '1993-06-29');

Si noti che i valori sono elencati nell'ordine della definizione della tabella: prima il nome della persona, poi l'età e infine la data di nascita. Con questa sintassi non è possibile omettere alcuna colonna; è necessario fornire un valore per ogni colonna. Si noti che le virgole sono usate per separare i valori all'interno di ogni riga e per separare i valori di una riga da quelli di un'altra, con un punto e virgola per terminare la dichiarazione. In questo modo è possibile aggiungere più righe senza dover utilizzare i nomi delle colonne.

Come INSERIRE IN UNA TABELLA ESISTENTE

Per questi esempi, immaginiamo di avere una tabella esistente chiamata people. Essa contiene il nome, il cognome e l'età della persona.

people

first_namelast_nameage
JohnSmith23
MaryConway54
PaulJohnson33

Come si fa ad aggiungere una nuova persona a questa tabella? Guardate la query SQL qui sotto:

INSERT INTO people (first_name, last_name, age)
VALUES ('Sandra', 'Cruz', 28);

Notate che ci atteniamo alle regole di cui abbiamo parlato in precedenza. L'ordine, il tipo di dati e il numero di colonne e valori corrispondono. Anche i valori delle stringhe sono racchiusi tra virgolette per first_name e last_name. La mancata inclusione di queste virgolette darebbe luogo a un errore.

Abbiamo aggiunto con successo una persona alla nostra tabella. Ma immaginiamo di dover aggiungere più persone. Scrivere più dichiarazioni INSERT richiederebbe molto tempo. Fortunatamente, esiste un modo migliore.

Vediamo un esempio di aggiunta di più righe di dati alla nostra tabella, senza specificare i nomi delle colonne.

INSERT INTO people
VALUES
	('Jacob', 'Ward', 40),
	('Stacey', 'Tuite', 65),
('Thomas', 'Rice', 43);

Si può notare quanto tempo questa sintassi possa far risparmiare se si intende aggiungere molte righe alla tabella in una sola volta.

Per ulteriori esempi e spiegazioni approfondite, si può prendere in considerazione la possibilità di seguire un corso incentrato sull'argomento. Consultate questo post del blog che spiega i vantaggi di iscriversi a un corso specializzato sull'argomento dei comandi INSERT, UPDATE e DELETE. Quando si replicano questi esempi, è importante capire come i permessi possono influenzare l'uso dell'istruzione INSERT.

Permessi SQL INSERT

Per inserire dati in un database è necessario il permesso INSERT. È possibile che si abbia solo l'autorizzazione a selezionare i dati, soprattutto se si lavora con un database di cui non si è l'amministratore. In questo caso, non è possibile inserire i dati in una tabella e potrebbe essere necessario chiedere all'amministratore del database questi privilegi.

Aggiungere nuovi dati alle tabelle con SQL INSERT

Questo conclude il nostro articolo su SQL INSERT. Abbiamo discusso le sottili differenze tra l'aggiunta di righe singole o multiple alla tabella, consentendovi di aggiungere dati nel modo più efficace. Abbiamo anche accennato alle autorizzazioni necessarie se non siete l'amministratore del vostro database. Non esitate a mettere tra i preferiti questa pagina per poterla consultare facilmente. Abbiamo detto che INSERT è uno dei modi per modificare i dati all'interno delle tabelle. Gli altri comandi che modificano i dati sono UPDATE e DELETE. Per saperne di più, consultate questo articolo su INSERT, UPDATE e DELETE.