Come aggiungere dati in una tabella SQL

Nel linguaggio SQL l'inserimento dei dati in una tabella si compie tramite l'istruzione INSERT INTO.

INSERT INTO tabella [ (lista attributi) ]
VALUES ( lista valori)

La tabella deve essere già stata creata nel database.

Gli attributi e i valori devono essere separati tra loro da una virgola dentro le rispettive liste.

Nota. La lista degli attributi è opzionale. Se non è indicata la lista degli attributi nel comando INSERT INTO, il DBMS segue di default l'ordine delle colonne al momento della creazione della tabella. In altri termini, il primo valore della serie viene registrato nel primo campo della tabella, il secondo valore nel secondo campo, e così via.

Per inserire inserire valori soltanto in determinati attributi devo indicarli nella lista degli attributi.

INSERT INTO tabella (campo1, campo3)
VALUES (valore1, valore2)

In questo caso l'assegnazione dei valori segue la sequenza della lista degli attributi e non l'ordine di presentazione dei campi nella tabella.

La lista degli attributi può anche essere parziale.

I campi mancanti sono riempiti con valori nulli o di default purché non si violi qualche vincolo.

Nota. Nell'esempio precedente ho preso in considerazione il campo1 e il campo3. Il valore1 è assegnato al campo1, mentre il valore2 è assegnato al campo3.

L'inserimento dei dati viene rifiutato se viola un vincolo di dominio o di tabella.

    Un esempio pratico

    Ho la tabella Persone composta da quattro attributi (Nome, Cognome, Età, Residenza).

    L'attributo Età è numerico mentre gli altri sono alfanumerici. Non ci sono vincoli.

    la tabella persone

    Per aggiungere un nuovo record nel database scrivo

    INSERT INTO Persone
    VALUES ('Maria', 'Rossetti', 18, 'Milano')

    Non essendo indicata la lista degli attributi, i valori sono assegnati ai campi seguendo l'ordine di presentazione dei campi stessi nella tabella ( nome, cognome, età, residenza ).

    I dati alfanumerici vanno posti tra virgolette o apici per poterli distinguere dalla sintassi del comando.

    Il risultato è il seguente:

    la tabella dopo l'inserimento

    Alla tabella è stata aggiunta una nuova riga con i dati indicati.

    Nota. Se l'ordine dei campi fosse diverso, si rischia di registrare un'informazione nel posto sbagliato. Per evitare questo rischio è sempre preferibile indicare nell'istruzione la sequenza desiderata dei campi da utilizzare.

    Esempio 2

    Ho la tabella Persone

    la tabella persone

    Posso aggiungere i dati alla tabella anche indicando la lista degli attributi

    INSERT INTO Persone (età, nome, cognome, residenza)
    VALUES (18, 'Maria', 'Rossetti', 'Milano' )

    La sequenza degli attributi può anche essere diversa dall'ordine delle colonne nella tabella.

    Il comando prende in considerazione soltanto la sequenza che ho specificato ( età, nome, cognome, residenza ).

    la tabella dopo l'inserimento

    Il risultato finale è sempre lo stesso.

    La riga è stata aggiunta alla tabella.

    Esempio 3

    In questo esempio aggiungo una nuova riga indicando soltanto alcune colonne della tabella.

    INSERT INTO Persone (nome, cognome)
    VALUES ('Maria', 'Rossetti' )

    Le colonne vanno indicate nella lista degli attributi e i rispettivi valori nella clausola VALUES.

    Nei campi mancanti è aggiunto un valore nullo o di default se presente.

    un esempio di inserimento con valori parziali

    E' però importante che tutti i vincoli siano rispettati.

    Nota. Se il campo Residenza avesse il vincolo NOT NULL la precedente query verrebbe rifiutata dal DBMS senza alcun inserimento dei dati nella tabella.

    Esempio 4

    In questo esempio aggiungo alla tabella Persone dei dati provenienti da un'altra tabella del database (Studenti).

    INSERT INTO Persone ( SELECT Nome, Cognome, 0, Città FROM Studenti )

    Tutti i record selezionati dalla tabella Studenti sono aggiunti alla tabella Persone.

    La sequenza dei valori da inserire deve rispettare l'ordine degli attributi nella tabella di destinazione.

    In questo caso non è presente la clausola VALUES.

    E così via.

     

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    SQL