Sintassi generale:
a) inserendo una nuova riga nella tabella:
INSERIRE<таблица>[(colonne)]
VALORI
b) Inserendo nella tabella una o più righe prese dalla sorgente specificata nella subquery:
INSERIRE<таблица>[(colonne)]
Regole:
Il numero di elementi nella sezione Colonne deve corrispondere al numero di elementi nella sezione Valori; i tipi di dati devono corrispondere o consentire la conversione implicita;
Nel caso in cui manchi la sezione "Colonne", la sezione "Valori" deve contenere tanti valori quante sono le colonne totali nella tabella editata, inoltre i valori devono essere elencati nello stesso ordine in cui le colonne della tabella sono dichiarate; pertanto, si consiglia di specificare sempre in modo esplicito l'elenco delle colonne a cui verranno aggiunti i nuovi valori;
Nel caso della sintassi (b), la sottoquery SELECT può essere indirizzata o alla stessa tabella, oa un'altra tabella del database, oa un altro database sul server;
Se per una colonna della tabella è impostato un valore predefinito ed è necessario utilizzare questo valore nel record aggiunto, nella sezione "Valori" per questa colonna è necessario scrivere parola chiave PREDEFINITO.
Esempi :
INSERT INTO dettaglio (detail_name)
VALORI ("cuscinetto")
INSERT INTO fornitura (id_fornitore, quantità_fornitura, costo_fornitura,
data_fornitura, ID_dettaglio)
VALORI (4, 177, 453,45, "25/09/2009", 1)
INSERIRE fornitore (tipo_fornitore, nome_fornitore)
VALORI (DEFAULT, "Smirnov S.S.")
Sintassi generale:
AGGIORNAMENTO<таблица>
IMPOSTATO<столбец> = <значение> [, <столбец> = <значение>]
Esempi :
IMPOSTA peso = 210
SET material_name = "Stagno"
DOVE materiale_id = 2
SET department_id = NULL,
delivery_date = delivery_date + 1 /*aumenta la data di consegna di un giorno
WHERE delivery_id = 1 OR department_id > 3
SET nome_dettaglio = nome_dettaglio + "!!!"
WHERE nome_dettaglio LIKE "_а%" E peso TRA 6 E 10
Sintassi generale:
ELIMINARE<таблица>
<условие>
Esempi :
WHERE dettaglio_id IN (2, 5, 8)
DOVE IL PESO È NULLO
Esercizio:
Popolare il database con ManagementStudio. Per fare ciò, utilizzare il comando "Apri tabella" del menu contestuale della tabella nel "Browser oggetti" (Fig. 4.1).
SELEZIONARE<список столбцов>
DA<таблица(-ы) источник>
Le clausole SELECT e FROM devono essere presenti in ogni query; altre sezioni possono mancare o essere parzialmente presenti.
Le domande più semplici:
1. Selezionare il nome e il peso delle parti
Riso. 5.1. Risultati della query n. 1
2. Selezionare tutte le informazioni dalla tabella dei materiali
Riso. 5.2. Risultati dell'interrogazione n. 2
L'unicità di DISTINCT
3. Selezionare i codici fornitore univoci dalla tabella delle forniture
Riso. 5.3. Risultati dell'interrogazione n. 3
DOVE vincolo
4. Selezionare la quantità e la data di consegna del particolare con codice 1
Riso. 5.4. Query n. 4 Risultati
5. Selezionare i nomi dei fornitori con i codici 1, 4 e 6
Riso. 5.5. Risultati della query n. 5
6. Selezionare tutte le informazioni sulle consegne effettuate prima del 1/10/2009
Riso. 5.6. Risultati dell'interrogazione n. 6
7. Selezionare tutte le informazioni sulla parte che non iniziano con la lettera "B" (in ogni caso) e il cui peso è inferiore a 50
Riso. 5.7. Risultati della query n. 7
8. Selezionare il nome e il codice del materiale per le parti con un peso da 5 a 10 g o con la lettera "n" nel nome nella terza posizione
Riso. 5.8. Risultati della query n. 8
9. Selezionare i nomi dei fornitori non più lunghi di 15 caratteri
Riso. 5.9. Risultati della query n. 9
10. Selezionare i mesi e gli anni di fornitura delle parti
Riso. 5.10. Risultati della query n. 10
Ordinamento ORDER BY
11. Ordinare le consegne prima per codice fornitore e poi per data di consegna
Riso. 5.11. Risultati della query n. 11
12. Seleziona i nomi dei fornitori con i codici 4, 6, 8, 9, ordinati alfabeticamente in ordine inverso
Riso. 5.12. Risultati della query n. 12
Aggregazione e raggruppamento GROUP BY
Riso. 5.13. Risultati della query n. 13
14. Determinare il peso medio delle parti in materiale con codice 2
Riso. 5.14. Risultati dell'interrogazione n. 2
15. Tra le consegne effettuate prima del 1/10/2009, scegli la consegna più grande e la più piccola
Riso. 5.15. Risultati della query n. 15
16. Per i fornitori con codici compresi tra 5 e 8, calcolare il numero totale di parti fornite da loro
Riso. 5.16. Risultati della query n. 16
Riso. 5.17. Risultati della query n. 17
HAVING restrizione di raggruppamento
18. Selezionare i materiali per i quali il peso totale delle parti realizzate con essi non è superiore a 20
Riso. 5.18. Risultati della query n. 18
19. Dalle consegne del 2008, selezionare le parti che sono state consegnate più di una volta
Riso. 5.19. Risultati della query n. 19
Conversione del tipoLANCIO
20. Ottieni informazioni sulle date di consegna in forma di testo
Riso. 5.20. Risultati della query n. 20
21. Ottieni informazioni dalla tabella delle parti come stringhe "La parte X ha peso Y"
Riso. 5.21. Risultati della query n. 21
AlternativeCASO
22. Dividere le parti in leggere (peso fino a 20), medie (tra 20 e 50) e pesanti
Riso. 5.22. Risultati della query n. 22
Gestione dei valori NULL
23. Ottieni informazioni sui dettagli e sui loro pesi e, se il peso non è specificato per la parte, scrivi -100 invece di NULL
Riso. 5.23. Risultati della query n. 23
La funzione di esistenza ESISTE
24. Selezionare il nome e il codice materiale solo delle parti che sono mai state fornite
Riso. 5.24. Risultati della query n. 24
25. Seleziona i nomi di quei materiali da cui non è composta una singola parte
Riso. 5.25. Risultati della query n. 25
Sottoquery
26. Ottieni informazioni sulla consegna più recente (per data).
Riso. 5.26. Risultati della query n. 26
27. Ricevi tutte le consegne di parti dal codice materiale 2
Riso. 5.27. Risultati della query n. 27
28. Per ogni fornitore, ottenere informazioni sulla prima (per data) della sua consegna
Riso. 5.28. Risultati della query n. 28
29. Per ogni fornitore, ottenere il nome e la data dell'ultimo ordine
Riso. 5.29. Risultati della query n. 29
UNISCITI alle tabelle
30. Ottieni una tabella della vista: il nome della parte, il nome del materiale di cui è composta questa parte
Riso. 5.30. Risultati della query n. 30
31. Ottenere una tabella del modulo: fornitore, nome della parte, quantità e data di consegna per le parti con un peso specificato
Riso. 5.31. Risultati della query n. 31
32. Selezionare tutte le informazioni su quelle parti che sono mai state fornite
Riso. 5.32. Risultati della query #32
Riso. 5.33. Risultati della query #33
34. Selezionare i nomi dei materiali e delle parti realizzate con essi
Riso. 5.34. Risultati della query n. 34
35. Ottieni tutti i dati su fornitori, consegne e dettagli
Riso. 5.35. Risultati della query #35
Unirsi ai tavoli UNION
36. Ottieni una tabella di nomi e pesi delle parti e l'ultima riga della tabella dovrebbe contenere i totali sotto forma del peso totale di tutte le parti
Riso. 5.36. Risultati della query #36
37. Ottieni una tabella di due campi, dove il primo campo è il nome della parte, materiale, fornitore o data di consegna, e il secondo campo è la lunghezza della stringa dal primo campo
Riso. 5.37. Risultati della query #37
Ultimo aggiornamento: 13/07/2017
Per aggiungere dati, viene utilizzato il comando INSERT, che ha la seguente sintassi formale:
INSERT nome_tabella [(elenco_colonne)] VALUES (valore1, valore2, ... valoreN)
All'inizio c'è un'istruzione INSERT INTO, quindi tra parentesi è possibile specificare un elenco di colonne, separate da virgole, in cui devono essere aggiunti i dati, e alla fine, dopo la parola VALUES, tra parentesi, i valori da aggiungere per le colonne sono elencate.
Ad esempio, supponiamo che il seguente database sia stato creato in precedenza:
CREARE DATABASE prodottidb; GO USE productsdb; CREATE TABLE Products (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)
Aggiungiamoci una riga usando il comando INSERT:
INSERISCI PRODOTTI VALORI ("iPhone 7", "Apple", 5, 52000)
Dopo il completamento con successo di server SQL Management Studio dovrebbe mostrare "1 riga/e interessate" nella finestra di messaggio:
Si noti che i valori per le colonne tra parentesi dopo la parola chiave VALUES vengono passati nell'ordine in cui sono dichiarati. Ad esempio, nell'istruzione CREATE TABLE sopra, puoi vedere che la prima colonna è Id. Ma poiché l'attributo IDENTITY è impostato per essa, il valore di questa colonna viene generato automaticamente e può essere omesso. La seconda colonna rappresenta ProductName, quindi il primo valore, la stringa "iPhone 7", verrà passato a quella colonna. Il secondo valore, la stringa "Apple", verrà passato alla terza colonna Produttore e così via. Cioè, i valori vengono passati alle colonne come segue:
Nome prodotto: "iPhone 7"
Produttore: Mela
Inoltre, quando si immettono valori, è possibile specificare le colonne immediate in cui verranno aggiunti i valori:
INSERT INTO Prodotti (ProductName, Price, Manufacturer) VALUES ("iPhone 6S", 41000, "Apple")
Qui il valore è specificato solo per tre colonne. E ora i valori vengono passati nell'ordine delle colonne:
Nome prodotto: "iPhone 6S"
Produttore: Mela
Per colonne non specificate (in questo caso ProductCount) aggiungerà un valore predefinito se l'attributo DEFAULT è impostato o NULL. Tuttavia, le colonne non specificate devono essere nullable o avere un attributo DEFAULT.
Possiamo anche aggiungere più righe contemporaneamente:
INSERT INTO Products VALUES ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)
In questo caso, verranno aggiunte tre righe alla tabella.
Inoltre, durante l'aggiunta, possiamo specificare che il valore predefinito viene utilizzato per la colonna utilizzando la parola chiave DEFAULT o NULL:
INSERT INTO Products (ProductName, Manufacturer, ProductCount, Price) VALUES ("Mi6", "Xiaomi", DEFAULT, 28000)
In questo caso, verrà utilizzato il valore predefinito per la colonna ProductCount (se è impostato, in caso contrario NULL).
Se tutte le colonne hanno un attributo DEFAULT che definisce un valore predefinito o sono nullable, puoi inserire valori predefiniti per tutte le colonne:
INSERISCI IN PRODOTTI VALORI PREDEFINITI
Ma se prendi la tabella Prodotti, tale comando fallirà, poiché diversi campi non hanno un attributo DEFAULT e allo stesso tempo non consentono valori nulli.
L'istruzione INSERT inserisce nuovi record in una tabella. In questo caso, i valori della colonna possono essere costanti letterali o essere il risultato di una sottoquery. Nel primo caso, viene utilizzata un'istruzione INSERT separata per inserire ciascuna riga; nel secondo caso verranno inserite tante righe quante restituite dalla sottoquery.
La sintassi dell'operatore è la seguente:
INSERIRE[(,...)]
(VALORI(,…) )
| ( VALORI STANDARD )
Come puoi vedere dalla sintassi presentata, l'elenco delle colonne è facoltativo (le parentesi quadre nella descrizione della sintassi lo indicano). Se è assente, l'elenco dei valori inseriti deve essere completo, ovvero fornire valori per tutte le colonne della tabella. L'ordine dei valori deve corrispondere all'ordine specificato dall'istruzione CREATE TABLE per la tabella in cui sono inserite le righe. Inoltre, questi valori devono essere dello stesso tipo di dati delle colonne in cui sono inseriti. Ad esempio, si consideri l'inserimento di una riga nella tabella Product creata dalla seguente istruzione CREATE TABLE:
Prodotto CREA TABELLA
creatore char (1) NOT NULL,
modello varchar(4) NOT NULL ,
digitare varchar(7) NOT NULL
Sia necessario aggiungere a questa tabella il modello PC 1157 del produttore B. Ciò può essere fatto con la seguente istruzione:
INSERIRE NEL Prodotto
VALORI ("B" , 1157 , "PC" ) ;
Se specifichi un elenco di colonne, puoi modificare l'ordine "naturale" della loro sequenza:
INSERT INTO Prodotto (tipo, modello, produttore)
VALORI ("PC" , 1157 , "B" ) ;
Sembrerebbe che questa sia una caratteristica completamente inutile, il che rende solo il design più ingombrante. Tuttavia, vince se le colonne hanno valori predefiniti. Si consideri la seguente struttura della tabella:
CREA TABELLA prodotto_D
creatore char (1) NULL,
modello varchar(4) NULL ,
digitare varchar (7) NOT NULL DEFAULT "PC"
Si noti che qui i valori di tutte le colonne hanno valori predefiniti (i primi due sono NULL e l'ultima colonna è di tipo - PC). Ora potremmo scrivere:
INSERT INTO Prodotto_D(modello, creatore)
VALORI(1157, "B");
In questo caso, il valore mancante verrà sostituito dal valore predefinito, PC, quando viene inserita una riga. Si noti che se non viene specificato alcun valore predefinito per una colonna in un'istruzione CREATE TABLE e viene specificato un vincolo NOT NULL per impedire l'uso di NULL in questa colonna tabella, il valore predefinito è NULL .
La domanda sorge spontanea: è possibile non specificare un elenco di colonne e, tuttavia, utilizzare i valori predefiniti? La risposta è si. Per fare ciò, invece di specificare esplicitamente il valore, utilizzare parola riservata PREDEFINITO :
INSERIRE IN Product_D
VALORI ("B" , 1158 , DEFAULT ) ;
Poiché tutte le colonne hanno valori di default, per inserire una riga con valori di default si potrebbe scrivere:
INSERIRE IN Product_D
VALORI (DEFAULT , DEFAULT , DEFAULT ) ;
Tuttavia, esiste uno speciale costrutto DEFAULT VALUES per questo caso (vedere la sintassi dell'operatore), che può essere utilizzato per riscrivere l'operatore precedente come
INSERISCI IN PRODOTTO_D VALORI PREDEFINITI ;
Si noti che quando si inserisce una riga in una tabella, tutte le restrizioni imposte questo tavolo. Potrebbero essere restrizioni chiave primaria o un indice univoco, vincoli di controllo di tipo CHECK, vincoli di integrità referenziale. In caso di violazione di qualsiasi restrizione, l'inserimento della riga verrà rifiutato. Si consideri ora il caso dell'utilizzo di una sottoquery. Supponiamo di voler inserire nella tabella Product_D tutte le righe della tabella Product relative ai modelli computer personale(tipo='PC'). Poiché i valori di cui abbiamo bisogno sono già in qualche tabella, la formazione manuale delle righe inserite, in primo luogo, è inefficiente e, in secondo luogo, può consentire errori di input. L'utilizzo di una sottoquery risolve questi problemi:
L'uso del simbolo "*" nella sottoquery è giustificato in questo caso, poiché l'ordine delle colonne è lo stesso per entrambe le tabelle. In caso contrario, dovrebbe essere applicato un elenco di colonne nell'istruzione INSERT o nella sottoquery o in entrambi, che corrisponderebbe all'ordine delle colonne:
Qui, come prima, è possibile specificare non tutte le colonne se si desidera utilizzare i valori predefiniti esistenti, ad esempio:
In questo caso la colonna type della tabella Product_D verrà impostata al valore di default PC per tutte le righe inserite.
Si noti che quando si utilizza una sottoquery contenente un predicato, verranno inserite solo quelle righe per le quali il valore del predicato è TRUE (non UNKNOWN !). In altre parole, se la colonna type nella tabella Product fosse nullable e quel valore fosse presente in un numero di righe, quelle righe non verrebbero inserite nella tabella Product_D.
Per superare la limitazione dell'inserimento di una singola riga in un'istruzione INSERT quando si utilizza un costruttore di riga in una clausola VALUES, un trucco artificiale consiste nell'utilizzare una sottoquery che forma una riga con una clausola UNION ALL. Quindi se dobbiamo inserire più righe con una singola istruzione INSERT, possiamo scrivere:
INSERIRE IN Product_D
SELECT "B" AS maker, modello 1158 AS, tipo "PC" AS
UNIONE TUTTO
SELEZIONA "C" , 2190 , "Laptop"
UNIONE TUTTO
SELEZIONA "D" , 3219 , "Stampante" ;
L'utilizzo di UNION ALL è preferibile a UNION anche se è garantito che non ci saranno righe duplicate, perché in questo caso non ci sarà alcun controllo per i duplicati.
Va notato che l'inserimento di più tuple utilizzando il costruttore di stringhe è già implementato in Sistema di gestione di database relazionali (DBMS) sviluppato da Microsoft Corporation.Structured Query Language è un linguaggio informatico generico utilizzato per creare, modificare e manipolare i dati nei database relazionali. server SQL 2008. Data questa possibilità, l'ultima query può essere riscritta come:
INSERISCI NEI VALORI Product_D
("B" , 1158 , "PC") ,
("C" , 2190 , "Laptop" ) ,
Questo articolo è dedicato al riempimento delle tabelle del database con i dati, ovvero studieremo i comandi SQL per l'inserimento di nuovi record. Va detto che la scrittura al tavolo si può fare in due modi:
Metodo numero 1.
Proviamo ad aggiungere una nuova voce di paese alla tabella dei paesi. La sintassi per l'aggiunta sarebbe:
INSERT INTO nome_tabella (campo_1, campo_2, ...) VALUES (Valore_1, Valore_2, ...); In base alla struttura della nostra tabella, la query SQL sarebbe:
INSERT INTO paesi (nome_paese, nome_acronimo) VALUES ("Russia", "RU"); È così che abbiamo inserito nella nostra tabella una voce sul paese "Russia". Tutto dovrebbe essere chiaro e semplice qui, l'importante è guardare attentamente quali campi specifichi nelle prime parentesi e scrivere i valori nelle seconde parentesi nello stesso ordine.
Metodo numero 2.
Il secondo modo, secondo me, è un po' più semplice, perché vedi cosa e quale campo assegni. Credimi, se la tabella ha un numero enorme di colonne, è molto facile confondere o ignorare l'ordine dei campi nella prima e l'ordine dei valori nella seconda parentesi. La sintassi per il secondo metodo è:
INSERT INTO nome_tabella SET campo_1 = valore_1, campo_2 = valore_2, ... ; Usiamo questo esempio per inserire alcune informazioni nella targa persone, poiché ci sono più campi, e il vantaggio del secondo metodo si farà subito sentire:
INSERT INTO persone SET first_name="Ivan", last_name="Dulin", registration_date="2012-06-14", country="1"; Ora la nostra tabella ha i seguenti dati:
Probabilmente hai notato che non abbiamo specificato un valore per l'età, ma si è rivelato essere compilato ... Tutto è corretto - per dato campo impostiamo il valore predefinito a 25. Quindi ora il nostro Ivan Dulin è elencato nel database come 25 anni. Potrebbe non essere l'esempio migliore creare un valore predefinito per il campo dell'età, ma è possibile impostare proprietà su campi come, ad esempio, la valutazione dell'utente del sito o il numero di visualizzazioni di pagina. Inizialmente sono impostati su 0.
Dovresti anche prestare attenzione al formato della data in MySQL: AAAA-MM-GG. Se non lo rispetti, le tue voci semplicemente non saranno incluse nella tabella.
Come puoi vedere, il campo della professione è compilato come NULL, questo è valore vuoto. Per questo campo impostiamo la proprietà "not required to fill (NULL)".
Come aggiunta, considera il seguente comando:
LOAD DATA LOCAL INFILE "D:\zapros.txt" NELLA TABELLA persone; Cosa pensi che abbiamo fatto adesso?! E abbiamo fatto quanto segue: abbiamo aggiunto i dati alla tabella persone da un file richiesta.txt, che si trova sull'unità D. Le informazioni nel file devono avere la seguente struttura:
Tabella delle professioni:
tabella persone:
nome di battesimo | cognome | età | Data di registrazione | Paese | professione |
Leonid | Bilac | 45 | 2012-06-20 | 2 | 1 |
Yuri | Nazàrov | 22 | 2012-06-21 | 3 | 1 |
Alla | Savenko | 25 | 2012-06-22 | 2 | 3 |
Irina | Nikolaeva | 31 | 2012-06-22 | 1 | 3 |
Oltre all'istruzione SELECT discussa in precedenza, Data Manipulation Language (DML) contiene altre tre istruzioni: INSERT, UPDATE e DELETE. Come l'istruzione SELECT, queste tre istruzioni operano su tabelle o viste. Questo articolo si occupa dell'istruzione INSERT e le altre due istruzioni sono discusse nel prossimo articolo.
Istruzione INSERIRE inserisce righe (o parti di righe) in una tabella. Ci sono due diverse forme di questa istruzione:
INSERT tab_name [(col_list)] VALORI PREDEFINITI | VALUES (( DEFAULT | NULL | espressione ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) Convenzioni di sintassi
La prima forma dell'istruzione consente di inserire una riga (o parte di essa) nella tabella. E la seconda forma dell'istruzione INSERT consente di inserire nella tabella il set di risultati di un'istruzione SELECT o una procedura memorizzata eseguita da un'istruzione EXECUTE. La stored procedure deve restituire i dati da inserire nella tabella. Se utilizzata con un'istruzione INSERT, l'istruzione SELECT può selezionare valori da una tabella diversa o dalla stessa in cui vengono inseriti i dati, purché i tipi di dati delle colonne corrispondenti siano compatibili.
Per entrambe le forme, il tipo di dati di ciascun valore inserito deve essere compatibile con il tipo di dati della colonna della tabella corrispondente. Tutti i dati stringa e temporanei devono essere racchiusi tra virgolette; I valori numerici non devono essere racchiusi tra virgolette.
Per entrambe le forme dell'istruzione INSERT, un elenco esplicito di colonne è facoltativo. L'assenza di un elenco di colonne equivale a specificare tutte le colonne della tabella.
parametro VALORI DI DEFAULT inserisce i valori predefiniti per tutte le colonne. Le colonne con il tipo di dati TIMESTAMP o la proprietà IDENTITY vengono inserite con i valori per impostazione predefinita, automaticamente generato dal sistema. Per le colonne di altri tipi di dati, viene inserito il valore predefinito diverso da null corrispondente, se presente, altrimenti NULL. Se i valori null non sono consentiti per una colonna e non è definito alcun valore predefinito per la colonna, l'istruzione INSERT ha esito negativo e viene visualizzato un messaggio appropriato.
L'esempio seguente inserisce righe nella tabella Employee nel database SampleDb, dimostrando come utilizzare l'istruzione INSERT per inserire una piccola quantità di dati nel database:
USE SampleDb; INSERT INTO Dipendente VALUES(34990, "Andrey", "Batonov", "d1"); INSERT INTO Dipendente VALUES(38640, "Aleksey", "Vasin", "d3");
Ci sono due diversi modi inserendo i valori in una nuova riga. L'istruzione INSERT nell'esempio seguente utilizza esplicitamente la parola chiave NULL e inserisce il valore NULL nella colonna appropriata:
USE SampleDb; INSERT INTO Dipendente VALUES(34991, "Andrey", "Batonov", NULL);
Per inserire valori in alcune (ma non tutte) colonne di una tabella, di solito è necessario specificare esplicitamente tali colonne. Le colonne non specificate devono consentire valori NULL o devono avere un valore predefinito definito per esse.
USE SampleDb; INSERT INTO Dipendente(Id, Nome, Cognome) VALUES (34992, "Andrey", "Batonov");
I due esempi precedenti sono equivalenti. Nella tabella Employee, l'unica colonna che consente valori null è la colonna DepartmentNumber e per tutte le altre colonne questo valore è stato proibito dalla clausola NOT NULL nell'istruzione CREATE TABLE.
Ordine dei valori in frase VALORI Le istruzioni INSERT possono differire dall'ordine specificato nell'istruzione CREATE TABLE. In tal caso, il loro ordine deve corrispondere all'ordine in cui le colonne corrispondenti sono elencate nell'elenco delle colonne. Di seguito è riportato un esempio di inserimento dei dati in un ordine diverso dall'originale:
USE SampleDb; INSERT INTO Dipendente(NumeroDipartimento, Cognome, Id, Nome) VALUES ("d1", "Batonov", 34993, "Andrey");
La seconda forma dell'istruzione INSERT inserisce nella tabella una o più righe selezionate dalla sottoquery. L'esempio seguente mostra come inserire righe in una tabella utilizzando la seconda forma dell'istruzione INSERT. In questo caso, viene eseguita una query per selezionare i numeri ei nomi dei dipartimenti situati a Mosca e caricare il set risultante in una nuova tabella creata in precedenza.
La nuova tabella MoscowDepartment creata nell'esempio precedente ha le stesse colonne della tabella Department esistente, ad eccezione della colonna Location mancante. La subquery nell'istruzione INSERT seleziona tutte le righe nella tabella Department per cui il valore della colonna Location è Moscow, che vengono poi inserite nella nuova tabella creata all'inizio della query.
L'esempio seguente mostra un altro modo per inserire righe in una tabella utilizzando la seconda forma dell'istruzione INSERT. In questo caso, viene eseguita una query per recuperare i numeri del personale, i numeri del progetto e le date di inizio del progetto per tutti i dipendenti con la posizione "Manager" che lavorano sul progetto p2, quindi caricare l'insieme risultante in una nuova tabella creata all'inizio della domanda:
USE SampleDb; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR(4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam(EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Manager";
Prima di inserire righe utilizzando l'istruzione INSERT, le tabelle MoscowDepartment e ManagerTeam (negli esempi precedenti) erano vuote. Se la tabella esisteva già e conteneva righe di dati, allora verrebbero aggiunte nuove righe.