Articles

6.1. Inserire dati

Quando una tabella viene creata, non contiene dati. La prima cosa da fare prima che un database possa essere molto utile è inserire i dati. I dati vengono concettualmente inseriti una riga alla volta. Naturalmente è possibile inserire anche più di una riga, ma non c’è modo di inserire meno di una riga. Anche se si conoscono solo alcuni valori di colonna, deve essere creata una riga completa.

Per creare una nuova riga, si usa il comando INSERT. Il comando richiede il nome della tabella e i valori delle colonne. Per esempio, consideriamo la tabella prodotti del capitolo 5:

CREATE TABLE products ( product_no integer, name text, price numeric);

Un esempio di comando per inserire una riga sarebbe:

INSERT INTO products VALUES (1, 'Cheese', 9.99);

I valori dei dati sono elencati nell’ordine in cui le colonne appaiono nella tabella, separati da virgole. Di solito, i valori dei dati saranno letterali (costanti), ma sono permesse anche espressioni scalari.

La sintassi di cui sopra ha l’inconveniente di dover conoscere l’ordine delle colonne nella tabella. Per evitarlo puoi anche elencare le colonne esplicitamente. Per esempio, entrambi i seguenti comandi hanno lo stesso effetto di quello sopra:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);

Molti utenti considerano una buona pratica elencare sempre i nomi delle colonne.

Se non avete valori per tutte le colonne, potete ometterne alcune. In questo caso, le colonne saranno riempite con i loro valori predefiniti. Per esempio:

INSERT INTO products (product_no, name) VALUES (1, 'Cheese');INSERT INTO products VALUES (1, 'Cheese');

Il secondo modulo è un’estensione PostgreSQL. Riempie le colonne da sinistra con tanti valori quanti ne vengono dati, e il resto sarà predefinito.

Per chiarezza, si possono anche richiedere esplicitamente valori predefiniti, per singole colonne o per l’intera riga:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT);INSERT INTO products DEFAULT VALUES;

Si possono inserire più righe con un solo comando:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);

È anche possibile inserire il risultato di una query (che potrebbe essere nessuna riga, una riga o molte righe):

INSERT INTO products (product_no, name, price) SELECT product_no, name, price FROM new_products WHERE release_date = 'today';

Questo fornisce tutta la potenza del meccanismo delle query SQL (capitolo 7) per calcolare le righe da inserire.

Suggerimento: Quando si inseriscono molti dati allo stesso tempo, considerare l’uso del comando COPY. Non è flessibile come il comando INSERT, ma è più efficiente. Fare riferimento alla Sezione 14.4 per maggiori informazioni su come migliorare le prestazioni del caricamento in blocco.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *