back to top

SQL INSERT INTO – Inserimento di dati in una tabella

Fino a questo momento abbiamo visto come creare e modificare la struttura di una tabella ed eventualmente come cancellarla fisicamente dal database, utilizzando i comandi della categoria DDL (Data Definition Language). Da questo capitolo inizia il percorso con cui impareremo a gestire i dati di una tabella utilizzando i comandi della categoria DML (Data Manipulation Language).

Nel capitolo della guida dedicato a CREATE TABLE abbiamo creato due tabelle ("autori" e "libri"). Utilizziamo adesso l’istruzione INSERT INTO per inserire dati in entrambe le tabelle. La sintassi è la seguente:

INSERT INTO nome_tabella (elenco_campi) VALUES (elenco_valori)

Facciamo un esempio di inserimento nella tabella utenti:

INSERT INTO utenti (autore) VALUES ('J.R.R. Tolkien')

Se ben ricordate la tabella utenti è formata dal campi "id" e dal campo "autore" ma abbiamo valorizzato solo il campo autore. Il campo "id", infatti, è un contatore di tipo auto incrementale e quindi si valorizza da se senza dover andare a specificare alcun valore in modo esplicito.

Si noti che la specifica dei campi interessati è facoltativa, se omessa il DBMS presumerà che i valori riguardino tutti i campi della tabella nell’ordine esatto in cui sono stati creati. Omettere l’elenco dei campi, quindi, comporta che sarà necessario specificare un valore per ogni colonna della tabella.

Tornando all’esempio precedente se avessimo lanciato la seguente query:

INSERT INTO utenti VALUES ('J.R.R. Tolkien')

Avremmo ottenuto un errore, in quanto abbiamo indicato un unico valore a fronte di due colonne della tabella. La giusta query sarebbe stata la seguente:

INSERT INTO utenti VALUES (NULL, 'J.R.R. Tolkien')

Così facendo il campo "id" sarebbe stato valorizzato come NULL e il DBMS gli avrebbe assegnato automaticamente il giusto valore in modo incrementale.

NOTA: quando si elencano i campi non è necessario rispettare l’ordine di questi nella tabella. I campi che non vengono elencati (quindi sono ignorati in fase di INSERT) verranno valorizzati con i valori di default eventualmente previsti in fase di creazione della tabella o, in mancanza, dal DBMS per quello specifico tipo di dato.

Ai fini della nostra guida andiamo a popolare la tabella "autori" con alcuni dati di prova:

INSERT INTO utenti VALUES (NULL, 'J.R.R. Tolkien');
INSERT INTO utenti VALUES (NULL, 'E.A. Poe');
INSERT INTO utenti VALUES (NULL, 'B. Stoker');

Nel codice qui sopra ho scritto tre diverse query utilizzando il punto e virgola come terminatore di ogni singola istruzione.

Il risultato dell’inserimento dati sarà una tabella come questa:

idautore
1J.R.R. Tolkien
2E.A. Poe
3B. Stocker

Facciamo adesso un altro esempio di inserimento dati, questa volta nella tabella "libri". Di seguito il codice indentato per una migliore leggibilità:

INSERT INTO libri
(
  id_autore,
  titolo,
  descrizione,
  prezzo,
  disponibile
)
VALUES
(
  1,
  'Il Signore degli Anelli',
  'Fantastico capolavoro di genere epico fantastico',
  29.99,
  True
)

Nel campo "id_autore" ho inserito l’id della tabella autori corrispondente a Tolkien (1), ovvero l’autore del libro Il Signore degli Anelli.

Per i campi "titolo" e "descrizione" abbiamo passato due stringhe di testo. Si noti come i dati tipo stringa debbano essere racchiusi all’interno di singoli apici. L’eventuale omissione degli apici produrrà un errore.

Il campo "prezzo" è stato valorizzato con un numero decimale (29,99) che corrisponde al prezzo del libro. Si noti che per i valori numerici non si usano gli apici; si noti altresì che al posto della virgola abbiamo usato il puntino (come previsto nello standard anglosassone).

Il campo "disponibile", infine, è stato valorizzato come True: non si tratta di una stringa (quindi non servono apici) essendo True un valore boleano.

Ai fini della nostra guida andiamo a popolare la tabella "libri" con alcuni dati di prova:

INSERT INTO libri (id_autore, titolo, descrizione, prezzo, disponibile) VALUES (1, 'Il Signore degli Anelli', 'Fantastico capolavoro di genere epico fantastico', 29.99, 1);
INSERT INTO libri (id_autore, titolo, descrizione, prezzo, disponibile) VALUES (2, 'Manoscritto trovato in una bottiglia', 'Breve racconto del terrore scritto da Edgar Allan Poe e pubblicato per la prima volta il 19 ottobre 1833 sul Baltimore Saturday Visiter,', 19.99, 1);
INSERT INTO libri (id_autore, titolo, descrizione, prezzo, disponibile) VALUES (2, 'I delitti della Rue Morgue', 'Breve racconto polizziesco scritto da Edgar Allan Poe e pubblicato nel 1841 sulla rivista The Graham Magazine di Filadelfia', 15.99, 0);
INSERT INTO libri (id_autore, titolo, descrizione, prezzo, disponibile) VALUES (3, 'Dracula', 'Il più celebre romanzo horror nato dalla penna di Bram Stoker', 21.50, 1);

Il risultato del nostro inserimento di dati sarà il seguente:

idid_autoretitolodescrizioneprezzodisponibile
11Il Signore degli AnelliFantastico capolavoro di genere epico fantastico29.991
22Manoscritto trovato in una bottigliaBreve racconto del terrore scritto da Edgar Allan Poe e pubblicato per la prima volta il 19 ottobre 1833 sul Baltimore Saturday Visiter19.991
32I delitti della Rue MorgueBreve racconto polizziesco scritto da Edgar Allan Poe e pubblicato nel 1841 sulla rivista The Graham Magazine di Filadelfia15.990
43DraculaIl più celebre romanzo horror nato dalla penna di Bram Stoker21.501
Pubblicitร