# SQL SELECT INTO: come copiare record nelle tabelle

Con SQL `SELECT INTO` copi i **record selezionati e li trasferisci in nuove tabelle o in spazi di archiviazione temporanei**. Il vantaggio è che i dati vengono trasmessi in modo rapido e affidabile, consentendo di ordinare e aggiornare i record senza lacune.

## Cos’è SQL `SELECT INTO`?

Il linguaggio di database e di programmazione SQL offre diversi strumenti per gestire, analizzare ed elaborare i database in modo professionale. Ad esempio, combinati con altri operatori, comandi come [SQL SELECT](https://www.ionos.it/digitalguide/server/configurazione/sql-select/) permettono di eseguire svariate azioni. Con [SQL SELECT DISTINCT](https://www.ionos.it/digitalguide/server/configurazione/sql-like/) rimuovi ad esempio i duplicati, mentre con l’operatore SQL `SELECT INTO` **copi i record da una tabella a un’altra**. `SELECT INTO` non è uno dei classici [comandi SQL](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql/), [operatori SQL](https://www.ionos.it/digitalguide/server/configurazione/operatori-sql/) o funzioni, bensì vale come clausola SQL nelle istruzioni SQL.

Consiglio Impara le nozioni basilari e le funzioni più importanti di [SQL](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/), uno dei linguaggi di database e di programmazione più richiesti in tutti i settori. Con la nostra [introduzione a SQL con esempi](https://www.ionos.it/digitalguide/server/configurazione/introduzione-a-sql-mediante-esempi/) potrai metterti velocemente all’opera.

## La sintassi di `SELECT INTO`

La semplice sintassi di `SELECT INTO` si presenta come segue:

```sql
SELECT  *
INTO  nuova_tabella_di_destinazione
FROM tabella_esistente;
```

Si usano i parametri seguenti:

- `SELECT`: il comando `SELECT` definisce le colonne di una tabella esistente da cui copiare i dati. Puoi indicare i nomi di colonne specifiche oppure usare l’asterisco `*` per copiare tutti i dati della tabella di origine.
- `INTO`: definisce e denomina la nuova tabella di destinazione per i record copiati.
- `FROM`: seleziona la tabella esistente da cui copiare i record.
- `WHERE`: con la clausola opzionale [SQL WHERE](https://www.ionos.it/digitalguide/server/configurazione/sql-where/) definisci ulteriori condizioni concrete che devono essere soddisfatte dai dati da copiare dalla tabella di origine.

## Applicazioni dell’operatore `SELECT INTO`

SQL `SELECT INTO` è adatto principalmente per trasferire dati in una nuova tabella. Tra le altre possibilità d’impiego troviamo l’**aggregazione, la memorizzazione temporanea o l’estrazione** di record o sottoinsiemi. Eliminando anche i duplicati, ad esempio con `DISTINCT`, puoi correggere e limitare i dati.

Tra le applicazioni pratiche per diversi settori troviamo tra l’altro:

- Copia, estrazione e trasmissione di dati di clienti, ordini, pazienti o prodotti per nuovi progetti, studi o migrazione di dati
- Analisi delle tendenze e di marketing mediante dati aggregati di ordini e vendite
- Analisi dei dati finanziari attraverso la trasmissione dei dati delle transazioni
- Pulizia dei dati dei clienti o dei collaboratori rimuovendo i duplicati nelle nuove tabelle
- Raccolta e analisi dei dati nei data warehouse
- Raccolta di dati per modelli di apprendimento automatico

Consiglio Cerchi un sistema di gestione di database scalabile e sicuro? Affidati all’[hosting SQL server](https://www.ionos.it/cloud/sql-server-hosting "Hosting SQL Server di IONOS") di IONOS e scopri le proposte personalizzate di server e hosting, con standard UE di protezione dei dati.

## Esempi pratici di SQL `SELECT INTO`

Per mostrare come funziona l’operatore SQL SELECT INTO te lo presentiamo servendoci di due esempi pratici.

### Selezionare e trasmettere clienti univoci

Vuoi selezionare in una tabella “Ordini” tutti i risultati univoci della colonna “NomeCliente”, escludendo le righe doppie di ordini multipli e trasferirli in una nuova tabella “OrdiniNuovi”? Procediamo come indicato di seguito:

```sql
SELECT DISTINCT NomeCliente
INTO OrdiniNuovi
FROM Ordini;
```

### Trasmettere le voci dei clienti di una determinata regione

Con la clausola `WHERE` puoi definire meglio i dati dei clienti applicando condizioni aggiuntive. Se ad esempio vuoi trasmettere tutte le voci con i nomi dei clienti residenti in Italia, procedi come segue:

**SQL Server**:

```sql
SELECT NomeCliente, Nazione
INTO OrdiniNuovi
FROM Ordini
WHERE Nazione = 'Italia';
```

**MySQL, PostgreSQL, SQlite**:

```sql
INSERT INTO OrdiniNuovi (NomeCliente, Nazione)
SELECT NomeCliente, Nazione
FROM Ordini
WHERE Nazione = 'Italia';
```

## Alternative a SQL `SELECT INTO`

Oltre a `SELECT INTO` esistono altre opzioni per copiare e trasferire dati tra le tabelle. Ti presentiamo brevemente le più importanti:

- `INSERT INTO SELECT`: usando [SQL INSERT INTO SELECT](https://www.ionos.it/digitalguide/server/configurazione/sql-insert-into-select/) puoi copiare e trasferire i record o i risultati selezionati in combinazione con `SELECT` da una tabella a un’altra già esistente. La differenza è che con `SELECT INTO` è possibile creare una nuova tabella per la copia e la trasmissione.
- `CREATE TABLE AS`: con l’istruzione [SQL CREATE TABLE](https://www.ionos.it/digitalguide/server/configurazione/sql-create-table/) puoi creare una nuova tabella. In abbinamento a [SQL SELECT](https://www.ionos.it/digitalguide/server/configurazione/sql-select/) e AS è inoltre possibile definire che la nuova tabella si basi sui risultati dell’istruzione `SELECT`, contenendo quindi i dati selezionati di una tabella esistente.
- `UNION` oppure `UNION ALL`: con l’operatore [SQL UNION](https://www.ionos.it/digitalguide/server/configurazione/sql-union/) combini i record delle tabelle e delle colonne selezionate in una nuova tabella di output senza doppioni. In combinazione con l’operatore logico ALL definisci che devono essere considerati tutti i record di una tabella, duplicati compresi.
- `IMPORT TABLE`: l’istruzione `IMPORT TABLE` è adatta soltanto per importare record da tabelle e file esterni in una tabella. L’istruzione è disponibile per la selezione soprattutto nelle versioni di SQL più recenti.
- `LOAD DATA INFILE`: l’istruzione funziona sostanzialmente come `IMPORT TABLE`, ma consente usi più flessibili, anche se più complessi, e un numero maggiore di formati supportati per le fonti di dati esterne. Inoltre, è disponibile in tutte le versioni di SQL.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/configurazione/sql-select-into/](https://www.ionos.it/digitalguide/server/configurazione/sql-select-into/) for AI/LLM consumption.