Inserire dati in una tabella

Setup

Per svolgere i seguenti esercizi, collegati al database sql_book (crealo se necessario):

Esegui la seguente istruzione SQL per creare una tabella per gli utenti:

 

Ci ritroviamo ora con una tabella vuota, come possiamo verificare con un'istruzione SELECT:

 

Sintassi delle query di inserimento

Il formato generale delle istruzioni di inserimento è il seguente:

Dobbiamo fornire tre informazioni:

  • il nome della tabella in cui vogliamo inserire i dati
  • i nomi delle colonne in cui andiamo a inserire i dati
  • i valori che vogliamo memorizzare nelle colonne elencate sopra

Aggiungere una singola riga

Prima di inserire i dati diamo un'occhiata alla tabella users e al tipo dei dati di ogni colonna:

Adesso vogliamo inserire un record (una riga) nella tabella users coi seguenti valori:

  • id: useremo il valore di default, e cioè un intero generato dalla funzione nextval (prossimo valore)
  • full_name: "John Smith"
  • enabled: false
  • last_login: useremo il valore di default, e cioè la data e l'ora corrente

Per prima cosa proviamo ad inserire i dati senza specificare le colonne:

Otterremo un errore:

Questo è perché la prima colonna sarebbe id, che è di tipo intero, e stiamo cercando di passarle una stringa ("John Smith").

Proviamo allora elencando anche i nomi delle colonne in cui vogliamo inserire i valori:

Nota che l'ordine dei valori deve corrispondere all'ordine delle colonne.

PostgreSQL risponderà con:

che significa che ha creato una nuova riga.

Aggiungere più righe

Anzichè usare un INSERT per ognuna delle righe da inserire, possiamo utilizzare un unico INSERT elencando poi tutti i valori da inserire. Ad esempio:

Mano a mano che inseriamo le righe, PostgreSQL aggiunge i valori di default per id e last_login:

Valori di default

Impostare un valore di default per una colonna fa sì che se non viene specificato un valore nel momento dell'inserimento, viene usato il valore di default. Prova a dare un occhio a come sono stati specificati questi valori di default al momento della creazione della tabella:

Vincoli

Nella creazione della tabella abbiamo inserito anche alcuni vincoli:

  • NOT NULL: il valore di queste colonne non può essere lasciato vuoto
  • UNIQUE: questa colonna non può avere valori duplicati... due utenti non posso avere lo stesso id!

Esercizi

  1. Collegati al database encyclopedia e aggiungi questi dati alla tabella countries:
  2. Aggiungi questi altri dati alla tabella countries:
  3. Aggiungi un record alla tabella delle celebrità per il cantautore Bruce Springsteen, nato il 23 settembre 1949 e tuttora vivente
    Suggerimento: PostgreSQL può accettare le date in molti formati, ad esempio:
  4. Aggiungi un record per l'attrice Scarlett Johansson, nata il 22 novembre 1984; lascia che la colonna deceased prenda il valore di default
  5. Aggiungi le seguenti righe alla tabella celebrities utilizzando un'unica istruzione INSERT; per Frank Sinatra imposta a true il valore per la colonna deceased; per Tom Cruise non settare esplicitamente un valore per la colonna deceased, ma lascia che venga utilizzato il valore di default
  6. Secondo te cosa succederrà se proverai a inserire le seguenti righe nel database?
  7. Aggiorna la colonna last_name della tabella celebrities in modo che i dati della domanda precedente possano essere inseriti, quindi inseriscili nella tabella
  8. Controlla lo schema della tabella celebrities: cosa succederà se specificheremo un valore NULL per la colonna deceased, come nell'esempio seguente?
  9. Controlla lo schema della tabella animals. Cosa succederà se proveremo a inserire i seguenti dati nella tabella?

    Identifica il problema e modifica la tabella in modo che i dati possano essere inseriti come sopra, quindi inseriscili.
  10. Collegati al database ls_burger ed esamina lo schema della tabella degli ordini. Basandoti sullo schema e sulle informazioni che seguono, scrivi ed esegui un'istruzione INSERT per aggiungere i dati alla tabella orders:
    ci sono tre clienti: James Bergman, Natasha O'Shea, Aaron Muller. L'email di James è james1998@email.com. Quella di Natasha è natasha@osheafamily.com. Aaron non ha fornito un indirizzo email.
    James ordina un LS Chicken Burger, Fries e Cola. Natasha ha due ordini: un LS Cheeseburger con Fries ma nessuna bibita, e un LS Double Deluxe Burger con Onion Rings e Chocolate Shake. Aaron ordina un LS Burger senza contorno nè bibita.
    Il costo degli articoli e i punti fedeltà sono elencati di seguito:
  • SQL

CFP CNOS-FAP DON BOSCO - via XIII Martiri, 86 - 30027 San Donà di Piave (VE) - tel. 0421 338 980 - Organismo di Formazione accreditato dalla Regione del Veneto