Istruzione INSERT
Utilizzare l'istruzione INSERT per creare record in una tabella di database. È possibile specificare:
-
Una o più liste di valori da inserire come nuovi record
-
Un'istruzione
SELECTche copia i dati di un'altra tabella da inserire come gruppo di nuovi record
I formati dell'istruzione INSERT sono:
INSERT INTO nome_tabella [(nome_colonna, ...)] VALUES [(expr, ...), ...]
INSERT INTO nome_tabella [(nome_colonna, ...)] SELECT nome_colonna, ... FROM nome_tabella [WHERE expr]
Con VALUES
nome_colonna è una lista facoltativa di nomi di colonna che specifica il nome e l'ordine delle colonne di cui sono stati specificati i valori nella clausola VALUES. Se si omette nome_colonna, la lista delle espressioni (expr) dovrà specificare i valori di tutte le colonne definite nella tabella e dovrà riflettere l'ordine delle colonne definito per la tabella.
La lista delle espressioni (expr) fornisce i valori per le colonne di un nuovo record. Per aggiungere più record, specificare una lista di espressioni tra parentesi per ogni record, separate da virgole. Di solito una lista di espressioni consiste in un valore costante per ogni colonna (ma la lista può anche essere una subquery). È necessario racchiudere i valori delle stringhe di caratteri tra coppie di virgolette singole ('). Per includere una virgoletta singola nel valore di una stringa di caratteri racchiusa tra virgolette singole, usare due virgolette singole insieme (ad esempio, 'L''aquilone').
Le subquery devono essere racchiuse tra parentesi.
Esempio
Inserire due liste di espressioni.
INSERT INTO dip (cognome, nome, id_dip, stipendio, data assunzione)
VALUES ('Rossi', 'Mario', 'E22345', 27500, DATE '2028-06-05'),
('Marks', 'Alea', 'E24682', 28500, DATE '2029-09-30')
Questa istruzione INSERT aggiunge un record alla tabella di database per ogni lista di valori specificata. In questo caso, sono stati aggiunti due record alla tabella di database dei dipendenti, dip. I valori sono stati specificati per cinque colonne. Alle restanti colonne della tabella è stato assegnato un valore vuoto, ossia Null.
Con SELECT
L'istruzione SELECT è una query che restituisce valori per ciascun valore nome_colonna specificato nella lista dei nomi di colonna. Se si specifica un'istruzione SELECT anziché una lista di espressioni di valori, sarà possibile selezionare un gruppo di righe da una tabella e inserirlo in un'altra tabella tramite una singola istruzione INSERT.
Esempio
Inserire utilizzando un'istruzione SELECT.
INSERT INTO dip1 (nome, cognome, id_dip, settore, stipendio)
SELECT nome, cognome, id_dip, settore, stipendio FROM dip
WHERE settore = 'D050'
In questo tipo di istruzione INSERT, il numero di colonne da inserire deve corrispondere al numero di colonne dell'istruzione SELECT. La lista di colonne da inserire deve corrispondere alle colonne nell'istruzione SELECT, analogamente a quanto accade per le espressioni di valore nell'altro tipo di istruzione INSERT. Ad esempio, la prima colonna inserita corrisponde alla prima colonna selezionata; la seconda alla seconda, e così via.
Le dimensioni e il tipo di dati di queste colonne corrispondenti devono essere compatibili. Ciascuna colonna della lista SELECT dovrebbe disporre di un tipo di dati accettato dal driver client ODBC o JDBC per un'istruzione INSERT/UPDATE standard della colonna corrispondente nella lista INSERT. Se la dimensione dei valori nella colonna della lista SELECT supera la dimensione dei valori nella colonna della lista INSERT corrispondente, i valori vengono troncati.
L'istruzione SELECT viene valutata prima dell'inserimento di qualsiasi valore.
Note
-
Nei campi Contenitore, è possibile inserire (
INSERT) solo testo, a meno che si prepari un'istruzione parametrizzata e si effettui lo streaming dei dati dall'applicazione. Per utilizzare dati binari, è sufficiente assegnare il nome del file racchiudendolo tra virgolette singole o utilizzare la funzionePutAs(). Quando si specifica il nome file, il tipo file viene dedotto dall'estensione del file:CopiaINSERT INTO nome_tabella (nome_contenitore) VALUES (? AS 'nome file.estensione file')I tipi di file non supportati sono inseriti come tipo FILE.
Quando si utilizza la funzione
PutAs(), specificare il tipo:PutAs(col, 'tipo'), dove il valore del tipo è un tipo file supportato come descritto in Recupero dei contenuti di un campo Contenitore: funzione CAST() e funzione RicavaCome(). -
nome_colonnapuò anche specificare una ripetizione di campo, ad esempio,lastDates[4].