Casa / Lavora su Internet / Query SQL INSERT INTO: riempie il database di informazioni. Nozioni di base su T-SQL. Sintassi del comando di inserimento riga Sql DML

Query SQL INSERT INTO: riempie il database di informazioni. Nozioni di base su T-SQL. Sintassi del comando di inserimento riga Sql DML

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(,…) )

  1. | ( 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 non viene specificato alcun vincolo NOT NULL che proibisce l'uso di NULL in quella colonna della tabella, il valore predefinito di NULL è implicito.

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 un valore, utilizzare la parola riservata DEFAULT :

    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. Questi possono essere vincoli di chiave primaria o 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 Prodotto_D

    ("B" , 1158 , "PC") ,

    ("C" , 2190 , "Laptop" ) ,

La query sql INSERT INTO ha senso quando viene creata la tabella del database. Cioè, la tabella esiste, ha un nome, ha creato righe e colonne. la tabella viene creata dall'operatore: , la tabella viene modificata dall'operatore .

query sql INSERT INTO - sintassi della query

La query sql INSERT INTO ha la seguente sintassi:

INSERT INTO nome_tabella (tra parentesi, se necessario, inserire un elenco di colonne dove si vogliono inserire i dati) VALUES dato inserito1, dato inserito2, dato inserito3.

Un'opzione IGNORE può essere inserita tra INSERT e INTRO. Non è obbligatorio. Necessario per proteggere le chiavi primarie durante la modifica di una tabella. Diversamente, se durante la modifica si verifica una duplicazione delle chiavi primarie, allora inserendo l'opzione IGNORA, la prima riga con la chiave primaria rimarrà nella tabella modificata, le altre chiavi primarie vengono cancellate. Per impostazione predefinita, questa opzione è omessa.

Sono disponibili opzioni facoltative LOW_PRIORITY e DELAYED. Determinano le priorità per l'aggiunta di informazioni al database. Il primo stabilisce l'aspettativa del rilascio del database, il secondo indica il buffering delle informazioni.

Riga di query: INSERT con la clausola VALUES aggiungerà una singola riga alla tabella del database. La clausola VALUES contiene i valori di questi dati.

Le subquery possono essere utilizzate al posto della clausola VALUES. INSERT con subquery aggiunge alla tabella le righe restituite dalla subquery. Il server del database elabora la sottoquery e inserisce tutte le righe restituite nella tabella. Il server non inserisce righe se la sottoquery non le seleziona.

  • subquery_1 - una sottoquery che il server elabora allo stesso modo della vista
  • subquery_2 è una sottoquery che restituisce le righe che vengono inserite nella tabella. L'elenco di questa sottoquery deve avere lo stesso numero di colonne dell'elenco di colonne INSERT.

Le sottoquery non sono praticamente utilizzate nel database MySQL.

INSERT INTO esempi di query sql nel database MySQL

Inserisci nuove righe nel database MySQL con il comando INSERT INTRO.

Primo esempio.

Inserisci nuove righe nella tabella nome_tabella.

INSERT INTO table_name VALUES ('2','145','1','name');

Ciò significa che vogliamo inserire i valori 2,145,1,name nelle colonne della tabella table_name. Poiché le colonne non sono specificate, i valori vengono inseriti in tutte le colonne della tabella.

Secondo esempio.

Inserimento di informazioni nelle colonne desiderate (specificate) della tabella nome_tabella.

INSERT INTO table_name (client_customer, client_subclient, client_mail) VALUES ('name1','subname1',' [e-mail protetta]′), ('nome2′,'sottonome2′,' [e-mail protetta]′), ('nome3′,'sottonome3′,(' [e-mail protetta]′);

Igor Serov appositamente per il sito "".

Le istruzioni SQL INSERT INTO e INSERT SELECT vengono utilizzate per inserire nuove righe in una tabella. Esistono due modi per utilizzare le istruzioni:

  1. Solo valori: il primo metodo consiste nello specificare solo i valori dei dati da inserire senza i nomi delle colonne.

Sintassi:

INSERT INTO nome_tabella VALUES (valore1, valore2, valore3,...); table_name: il nome della tabella. valore1, valore2,.. : valori della prima colonna, seconda colonna, ... per la nuova voce

  1. Nomi e valori delle colonne: Il secondo metodo specifica i nomi delle colonne e i valori delle righe da inserire:

Sintassi:

INSERT INTO nome_tabella(colonna1,colonna2,colonna3,..) VALUES(valore1, valore2, valore3,...); table_name: il nome della tabella. column1: nome della prima colonna, seconda colonna... value1, value2,.. : valori della prima colonna, seconda colonna,... per new entry

Richieste:

Metodo 1 ( inserire solo valori):

INSERT INTO Student VALUES("5","HARSH","WEST BENGAL","8759770477","19");

Risultato:

Dopo utilizzando INSER La tabella INTO SELECT Student avrà ora questo aspetto:

ROTOLO_NO NOME INDIRIZZO TELEFONO Età
1 Ariete Delhi 9455123451 18
2 RAMESH GURGAONE 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAONE 9562431543 18
5 DURO BENGALA OCCIDENTALE 8759770477 19

Metodo 2 ( inserire i valori solo nelle colonne specificate):

INSERT INTO Studente (ROLL_NO, NOME, Età) VALUES ("5","PRATIK","19");

Risultato:

La tabella Student avrà ora questo aspetto:

ROTOLO_NO NOME INDIRIZZO TELEFONO Età
1 Ariete Delhi 9455123451 18
2 RAMESH GURGAONE 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAONE 9562431543 18
5 PRATICO nullo nullo 19

Si noti che le colonne senza valori sono impostate su null .

Utilizzo di SELECT in un'istruzione INSERT INTO

È possibile utilizzare l'istruzione MySQL INSERT SELECT per copiare righe da una tabella e inserirle in un'altra.

L'uso di questo operatore è lo stesso dell'uso di INSERT INTO . La differenza è che l'istruzione SELECT viene utilizzata per selezionare i dati da un'altra tabella. Sotto ci sono vari modi usando INSERT INTO SELECT :

  • Inserisci tutte le colonne di una tabella: puoi copiare tutti i dati in una tabella e incollarli in un'altra tabella.

Sintassi:

INSERT INTO prima_tabella SELECT * FROM seconda_tabella; first_table: il nome della prima tabella. second_table: il nome della seconda tabella.

Abbiamo utilizzato un'istruzione SELECT per copiare i dati da una tabella e un'istruzione INSERT INTO per inserirli in un'altra.

  • Inserisci singole colonne della tabella. Puoi solo copiare le colonne di una tabella che desideri incollare in un'altra tabella.

Sintassi:

INSERT INTO first_table(column_names1) SELECT column_names2 FROM second_table; first_table: il nome della prima tabella. second_table: il nome della seconda tabella. colnames1: nomi di colonna separati da virgola(,) per la tabella 1. col-names2: nomi di colonna separati da virgola(,) per la tabella 2.

Abbiamo utilizzato un'istruzione SELECT per copiare i dati solo dalle colonne selezionate della seconda tabella e un'istruzione MySQL INSERT INTO SELECT per inserirli nella prima tabella.

  • Copia di righe specifiche da una tabella. È possibile copiare righe specifiche da una tabella per inserirle successivamente in un'altra tabella utilizzando una clausola WHERE con un'istruzione SELECT. In questo caso, è necessario utilizzare la clausola WHERE appropriata.

Sintassi:

Tabella 2: LateralStudent

ROTOLO_NO NOME INDIRIZZO TELEFONO Età
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 QUALCOSA ROHTAK 9687543210 20

Richieste:

Metodo 1 ( inserire tutte le righe e le colonne):

INSERT INTO Student SELECT * FROM LateralStudent;

Risultato:

Questa query inserirà tutti i dati dalla tabella LateralStudent nella tabella Student. Dopo aver applicato SQL INSERT INTO SELECT, la tabella Student sarà simile a questa:

ROTOLO_NO NOME INDIRIZZO TELEFONO Età
1 Ariete Delhi 9455123451 18
2 RAMESH GURGAONE 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAONE 9562431543 18
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 QUALCOSA ROHTAK 9687543210 20

Metodo 2 ( inserire singole colonne):

INSERT INTO Student(ROLL_NO,NAME,Età) SELECT ROLL_NO, NAME, Età FROM LateralStudent;

Risultato:

Questa query inserirà i dati dalle colonne ROLL_NO , NAME ed Age della tabella LateralStudent nella tabella Student. Il resto delle colonne nella tabella Student verrà impostato su null . Dopo aver applicato SQL INSERT SELECT, la tabella sarà simile a questa:

ROTOLO_NO NOME INDIRIZZO TELEFONO Età
1 Ariete Delhi 9455123451 18
2 RAMESH GURGAONE 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAONE 9562431543 18
7 SOUVIK Nullo nullo 18
8 NIRAJ Nullo nullo 19
9 QUALCOSA Nullo nullo 20
  • Selezione di righe specifiche da inserire:

Risultato:

Questa query selezionerà solo la prima riga dalla tabella LateralStudent da inserire nella tabella Student. Dopo aver applicato INSERT SELECT la tabella avrà questo aspetto.

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 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.

Inserto a riga singola

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 tipo di dati TIMESTAMP o proprietà IDENTITY vengono inserite per impostazione predefinita con valori generati automaticamente 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 valori in nuova linea. L'istruzione INSERT nell'esempio seguente utilizza in modo esplicito parola chiave NULL e inserisce il valore NULL nella colonna corrispondente:

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");

Inserimento di più righe

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.

Nelle sezioni precedenti, abbiamo considerato il lavoro per ottenere dati da tabelle pre-create. Ora è il momento di capire come possiamo creare/eliminare tabelle, aggiungere nuovi record ed eliminare quelli vecchi. Per questi scopi in SQL ci sono operatori come: CREARE- crea una tabella ALTER- cambia la struttura della tabella, GOCCIOLARE- elimina una tabella o un campo, INSERIRE- aggiunge dati alla tabella. Iniziamo la nostra conoscenza di questo gruppo di operatori dall'operatore INSERIRE.

1. Aggiunta di linee intere

Come suggerisce il nome, l'operatore INSERIRE utilizzato per inserire (aggiungere) righe a una tabella di database. L'aggiunta può essere effettuata in diversi modi:

  • - aggiungi una riga intera
  • - aggiungere parte di una linea
  • - 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 il valore per ciascuna colonna utilizzando il costrutto INSERIRE nome_tabella (campo1, campo2 ...) VALORI (valore1, valore2 ...). Diamo un'occhiata a un esempio.

INSERT INTO Venditori (ID, Indirizzo, Città, Nome_venditore, Nazione) VALORI("6", "1st Street", "Los Angeles", "Harry Monroe", "USA")

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

2. Aggiunta di parte delle linee

Nell'esempio precedente, quando si utilizza l'operatore INSERIRE abbiamo contrassegnato esplicitamente i nomi delle colonne della tabella. Usando data sintassi, possiamo saltare alcune colonne. Ciò significa che inserisci un valore per alcune colonne ma non fornisci valori per altre. Per esempio:

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

IN questo esempio non abbiamo specificato un valore per due colonne Indirizzo E Paese. È possibile escludere alcune colonne dall'istruzione INSERIRE, se consente la definizione della tabella. In questo caso, deve essere soddisfatta una delle seguenti condizioni: questa colonna è definita come consentire il valore NULLO(l'assenza di qualsiasi valore) o nella definizione della tabella il valore predefinito specificato. Ciò significa che se non viene specificato alcun valore, verrà utilizzato il valore predefinito. Se salti una colonna in una tabella che non consente valori nelle sue righe NULLO e non ha un valore predefinito definito, il DBMS emetterà un messaggio di errore e questa riga non verrà aggiunta.

3. Aggiunta dei dati selezionati

Negli esempi precedenti abbiamo inserito i dati nelle tabelle scrivendoli manualmente nella query. Tuttavia, l'operatore INSERIRE ci permette di automatizzare questo processo se vogliamo inserire dati da un'altra tabella. Per fare ciò, SQL ha una struttura come questa: INSERIRE IN... SELEZIONA.... Questo design consente di selezionare contemporaneamente i dati da una tabella e inserirli in un'altra. Supponiamo di avere un altro tavolo Venditori_UE con un elenco di venditori dei nostri prodotti in Europa e dobbiamo aggiungerli alla tabella generale Venditori. La struttura di queste tabelle è la stessa (stesso numero di colonne e stessi nomi), ma dati diversi. Per fare ciò, possiamo scrivere la seguente query:

INSERT INTO Venditori (ID, Indirizzo, Città, Nome_venditore, Nazione) SELEZIONAID, indirizzo, città, nome_venditore, paese FROM Sellers_EU

Occorre prestare attenzione che il valore delle chiavi interne non venga ripetuto (campo ID), altrimenti si verificherà un errore. Operatore SELEZIONARE può includere anche suggerimenti DOVE per filtrare i dati. Va inoltre notato che il DBMS non presta attenzione ai nomi delle colonne contenute nell'istruzione SELEZIONARE, solo l'ordine della loro disposizione è importante per lei. Pertanto, i dati nella prima colonna specificata che è stata selezionata a causa di SELEZIONARE, verrà comunque compilato nella prima colonna della tabella Venditori specificato dopo l'operatore INSERIRE, indipendentemente dal nome del campo.

4. Copiare i dati da una tabella all'altra

Spesso, quando si lavora con i database, diventa necessario creare copie di qualsiasi tabella a scopo di backup o modifica. Per creare una copia completa di una tabella in SQL, viene fornita un'istruzione separata SELEZIONA IN. Ad esempio, dobbiamo creare una copia della tabella Venditori, dovrai scrivere la richiesta come segue:

SELEZIONA * IN Venditori_nuovo DA Venditori

A differenza del design precedente INSERIRE IN... SELEZIONA... quando i dati vengono aggiunti a tavola esistente, il costrutto copia i dati in una nuova tabella. Si può anche dire che il primo costrutto importa dati, mentre il secondo costrutto esporta. Quando si utilizza la struttura SELEZIONA... IN... DA... occorre tener conto di quanto segue:

  • - puoi usare qualsiasi frase nell'operatore SELEZIONARE, ad esempio RAGGRUPPA PER E AVENDO
  • - join può essere utilizzato per aggiungere dati da più tabelle
  • - i dati possono essere aggiunti solo a una tabella, indipendentemente dal numero di tabelle da cui sono stati presi.