TOP

SQL-Lezione 13. Aggiunta di dati (INSERT INTO)

Nelle sezioni precedenti abbiamo considerato il lavoro di recupero dei dati da tabelle create in precedenza. Ora è il momento di capire come creare/eliminare tabelle, aggiungere nuovi record ed eliminare quelli vecchi.

Per questi scopi, in SQL esistono operatori come:

  • CREATE - crea una tabella;
  • ALTER - cambia la struttura della tabella;
  • DROP - cancella una tabella o un campo;
  • INSERT - aggiunge dati alla tabella.
  • Iniziamo a conoscere questo gruppo di operatori con l'operatore INSERT.


    1. Aggiunta di linee intere

    Come suggerisce il nome, l'operatore INSERT INTO viene utilizzato per inserire (aggiungere) righe a una tabella di database.

    L'aggiunta può essere effettuata in diversi modi:

  • aggiungi una riga intera;
  • aggiungi parte di una nuova riga;
  • aggiungere i risultati della query.
  • Quindi, per aggiungere una nuova riga alla tabella, dobbiamo specificare il nome della tabella, elencare i nomi delle colonne e specificare i valori per ciascuna colonna utilizzando INSERT INTO table_name(field1, field2 ...) VALUES (value1, valore2 ...) costrutto. Consideriamo un esempio.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    Puoi anche modificare l'ordine dei nomi delle colonne, ma allo stesso tempo devi modificare l'ordine dei valori nel parametro VALUES.

    2. Aggiunta di parte delle linee

    Nell'esempio precedente, quando si utilizza l'operatore INSERT, abbiamo specificato esplicitamente i nomi delle colonne della tabella. Usando questa sintassi, possiamo saltare alcune colonne. Ciò significa che inserisci i valori per alcune colonne e non li fornisci per altre. Esempio:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    In questo esempio non abbiamo specificato i valori per le due colonne Address e Country. Puoi escludere alcune colonne dall'istruzione aaa se ti consente di definire la tabella. In questo caso, deve essere soddisfatta una delle seguenti condizioni: questa colonna è definita in modo da consentire un valore nullo (assenza di qualsiasi valore) oppure è specificato un valore predefinito nella definizione della tabella. Ciò significa che se non viene specificato alcun valore, verrà utilizzato il valore predefinito. Se si omette una colonna da una tabella che non consente la visualizzazione dei valori NULL nelle sue righe e non ha un valore definito per l'utilizzo predefinito, il DBMS emetterà un messaggio di errore e la riga non verrà aggiunta.

    3. Aggiunta dei dati selezionati

    Negli esempi precedenti abbiamo inserito i dati nella tabella digitandoli manualmente nella query. Tuttavia, l'operatore INSERT INTO ci permette di automatizzare questo processo se vogliamo inserire dati da un'altra tabella. Per questo esiste una costruzione in SQL come INSERT INTO ... SELECT ... . Questo design consente di selezionare contemporaneamente i dati da una tabella e inserirli in un'altra. Supponiamo di avere un'altra tabella Sellers_EU con l'elenco dei venditori del nostro prodotto in Europa e dobbiamo aggiungerli alla tabella generale Sellers. La struttura di queste tabelle è la stessa (lo stesso numero di colonne e gli stessi nomi), ma i dati sono diversi. Per fare ciò possiamo scrivere la seguente query:

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    È necessario prestare attenzione affinché i valori delle chiavi interne non si ripetano (campo ID), altrimenti si verificherà un errore. L'istruzione SELECT può anche includere una clausola WHERE per filtrare i dati. Va inoltre notato che il DBMS non presta attenzione ai nomi delle colonne contenute nell'operatore SELECT, si preoccupa solo dell'ordine della loro posizione. Pertanto, i dati nella prima colonna specificata e selezionata tramite SELECT verranno comunque inseriti nella prima colonna della tabella Sellers specificata dopo l'operatore INSERT INTO, indipendentemente dal nome del campo.

    4. Copia dei dati da una tabella all'altra

    Spesso, quando si lavora con i database, è necessario creare copie di qualsiasi tabella, a scopo di backup o modifica. Per creare una copia completa della tabella in SQL, viene fornito un operatore separato SELECT INTO. Dobbiamo ad esempio creare una copia della tabella Sellers, dovremo scrivere la query così:

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    A differenza della costruzione precedente INSERT INTO ... SELECT ... quando i dati vengono aggiunti a una tabella esistente, la costruzione SELECT ... INTO ... FROM ... copia i dati in una nuova tabella. Si può anche dire che la prima costruzione importa i dati e la seconda li esporta.

    Quando si utilizza la costruzione SELECT ... INTO ... FROM ... è necessario tenere presente quanto segue:

  • puoi utilizzare qualsiasi clausola nell'istruzione SELECT, come GROUP BY e HAVING;
  • puoi utilizzare un'unione per aggiungere dati da più tabelle;
  • i dati possono essere aggiunti a una sola tabella, indipendentemente da quante tabelle sono stati presi.