Le tabelle sono uno dei componenti principali di ogni sistema di database relazionale e SQL Server non fa eccezione. Le tabelle memorizzano i dati che il motore di database relazionale utilizza per le query, i report e altre operazioni. In questo articolo ti mostrerò come modificare i dati di una tabella di SQL Server utilizzando T-SQL INSERT, T-SQL UPDATE, T-SQL DELETE e TRUNCATE.
Nel mio articolo precedente, Essenziale SQL Server: Creazione di database e tabelle, ho mostrato come è possibile creare database e tabelle di base di SQL Server. In questo articolo, daremo un’occhiata a come popolare quelle tabelle aggiungendo, aggiornando ed eliminando righe.
I created the following table in my previous article. The syntax from this simple example DDL command shows that the table has three columns and each of them uses a different data type:
CREATE TABLE dbo.myLogins ( id INT NOT NULL PRIMARY KEY, name VARCHAR (20), login_date DATETIME );
In questo articolo, vedremo come aggiungere dati a una tabella utilizzando l’istruzione INSERT, modificare i dati in una tabella utilizzando l’istruzione UPDATE ed eliminare dati utilizzando l’istruzione DELETE. I dati in una tabella possono essere eliminati in un paio di modi diversi, quindi parleremo anche della differenza tra l’uso dell’istruzione DELETE e l’istruzione TRUNCATE.
Aggiunta di righe utilizzando T-SQL INSERT
Puoi aggiungere dati a una tabella di SQL Server in diversi modi:
- Puoi utilizzare il Query Designer interattivo di SQL Server Management Studio (SSMS) per aggiungere righe a una tabella
- Puoi usare PowerShell
- Per importare dati in una tabella, puoi utilizzare SQL Server Import and Export Wizard o Integration Services.
- Puoi utilizzare anche lo strumento da riga di comando bcp utility.
Detto questo, il modo più comune per aggiungere dati a una tabella di SQL Server è tramite l’istruzione SQL INSERT. L’istruzione T-SQL INSERT aggiunge una o più righe a una tabella di SQL Server.
L’esempio seguente mostra come aggiungere una riga alla tabella di esempio mostrata in precedenza:
INSERT INTO myLogins (id, name, login_date) VALUES (2, 'John Smith', '3-12-2023')
Ecco, l’istruzione INSERT INTO identifica la tabella che conterrà le righe inserite. Successivamente, all’interno delle parentesi, puoi vedere un elenco delle colonne che verranno utilizzate. Questo elenco utilizza tutte le colonne nella tabella, ma non è necessario farlo.
Infine, la clausola VALUES fornisce i valori effettivi che verranno inseriti nella tabella. Come scorciatoia, puoi omettere l’elenco delle colonne in un’istruzione INSERT. Ad esempio, l’istruzione INSERT seguente esegue esattamente la stessa funzione dell’esempio precedente:
INSERT INTO myLogins VALUES (2, 'John Smith', '3-12-2023')

A meno che la colonna non sia definita utilizzando le parole chiave NOT NULL, è anche possibile specificare esplicitamente NULL nell’elenco dei valori di un’istruzione INSERT. In alternativa, quando non si desidera specificare un valore per una colonna, è possibile omettere quella colonna dai propri elenchi di colonne e valori, il che farà sì che contenga un valore NULL.
Inserimento di righe di tabella dai risultati di una query
Oltre all’utilizzo di un’istruzione INSERT T-SQL standard con una clausola VALUES, è anche possibile aggiungere righe a una tabella come risultato di una query SQL. La query può essere semplice o complessa, e i risultati possono essere inseriti nella tabella di destinazione.
Ad esempio, per copiare le righe dalla tabella myLogins2 alla tabella myLogins è possibile utilizzare una query come quella che puoi vedere di seguito:
INSERT INTO myLogins (id, name, login_date) SELECT id, name, login_date FROM myLogins2 where id > 50.
Questo esempio utilizza i risultati della sottoquery dalla tabella myLogins2 per inserire righe nella tabella myLogins. L’istruzione INSERT inserisce dati nelle tre colonne della tabella. La sottoquery utilizza un’istruzione SELECT per selezionare le stesse tre colonne da una seconda tabella chiamata myLogins2.
Tuttavia, in questo esempio, verranno restituite solo le righe con un valore di id maggiore di 50 e aggiunte alla tabella myLogins. In questo semplice esempio, i nomi delle colonne sono gli stessi, ma non è un requisito. Perché questo funzioni, è necessario avere una o più righe nella tabella myLogins2 con un valore di id maggiore di 50 che non siano presenti nella tabella myLogins.
Aggiornamento delle righe utilizzando T-SQL UPDATE
Come aggiungere righe a una tabella, ci sono diverse modalità per modificare le righe in una tabella. Il Query Designer di SSMS consente di aggiornare interattivamente le righe, ma è anche possibile utilizzare PowerShell o Integration Services.
Tuttavia, il modo più comune per modificare le righe esistenti in una tabella del database è utilizzare l’istruzione SQL UPDATE. L’istruzione T-SQL UPDATE modifica i valori in una o più righe in una tabella di SQL Server.
Di solito, si desidera utilizzare l’istruzione UPDATE insieme a una clausola WHERE per specificare quali righe aggiornare. Se non si utilizza la clausola WHERE, allora tutte le righe nella tabella verranno aggiornate. La seguente lista mostra un esempio semplice di utilizzo dell’istruzione UPDATE T-SQL per modificare i valori in una riga della tabella myLogins.
UPDATE myLogins SET name = ‘John Smith’ WHERE id = 1
Come ho menzionato, se omettessi la clausola WHERE, la colonna del nome di ogni riga verrebbe impostata sul nuovo valore. Allo stesso modo, se la clausola WHERE include più righe come potrebbe succedere se si usassero gli operatori < o >, allora più righe corrispondenti verrebbero aggiornate.
Aggiornamento delle righe della tabella per i risultati di una query
Come per l’istruzione INSERT, è possibile aggiornare le righe in una tabella utilizzando valori da un’altra tabella. Nella seguente lista, puoi vedere come utilizzare un aggiornamento SQL da un’altra tabella.
UPDATE myLogins SET myLogins.name = myLogins2.name FROM myLogins2 WHERE myLogins.id = myLogins2.id
Qui, puoi vedere che l’istruzione UPDATE agirà sulla tabella myLogins e che la colonna del nome sarà aggiornata utilizzando i valori dalla tabella myLogins2 dove il valore nelle colonne id delle due tabelle corrispondono.

Come puoi immaginare, ci sono molte più opzioni per utilizzare l’istruzione UPDATE. La tua query può aggiornare più righe, può essere più complessa utilizzando join, e puoi usare la clausola TOP, la clausola ORDER BY, Common Table Expressions (CTEs) e altro ancora per costruire le tue query di aggiornamento.
Eliminazione di righe con T-SQL DELETE e TRUNCATE
Come ti aspetteresti, puoi eliminare righe da una tabella utilizzando l’interattivo SSMS Query Designer, PowerShell, o Integration Services. Tuttavia, il metodo più comune è utilizzare l’istruzione SQL DELETE.
L’istruzione DELETE T-SQL rimuove una o più righe da una tabella del server SQL. Va da sé, ma dovresti usare con attenzione l’istruzione DELETE SQL poiché elimina definitivamente i dati dalle tue tabelle. Se commetti un errore, potresti dover ripristinare i dati da uno snapshot, dal log delle transazioni o da un backup.
L’esempio seguente mostra come eliminare una riga dalla tabella myLogins:
DELETE FROM myLogins WHERE id = 1
Qui puoi vedere che verrà eliminata una riga nella tabella myLogins in cui il valore della colonna id è uguale a 1. Puoi anche eliminare più righe modificando la clausola WHERE come nella seguente istruzione, che elimina tutte le righe in cui il valore di id è maggiore di 50.
DELETE FROM myLogins WHERE id > 50

Come nello stato di UPDATE, se ometti la clausola WHERE, verranno eliminate tutte le righe nella tabella. Ad esempio, l’esempio seguente elimina tutte le righe nella tabella myLogins:
DELETE FROM myLogins
Eliminazione di righe dai risultati di una query
Come le istruzioni INSERT e UPDATE, anche l’istruzione DELETE è in grado di agire dai risultati di una query. L’esempio seguente mostra come è possibile eliminare righe basate su una query:
DELETE FROM myLogins WHERE login_date < '12-31-2022'
Qui, tutte le righe nella tabella myLogins che hanno una data inferiore al 31/12/22 nella colonna login_date verranno eliminate.
I’ve been using simple examples throughout this article, but like the INSERT and UPDATE statements, your queries can be much more complex. You could use JOINs and multiple tables in the DELETE statement’s subquery, use clauses like TOP and ORDER BY, and more.
DELETE vs TRUNCATE
Il comando T-SQL DELETE è in grado di rimuovere una o più righe da una tabella. Tuttavia, non è l’unico modo per eliminare righe da una tabella. È possibile eliminare tutte le righe in una tabella di SQL Server utilizzando l’istruzione T-SQL TRUNCATE TABLE.
L’istruzione DELETE è un’azione completamente registrata. D’altra parte, l’istruzione TRUNCATE TABLE è un’azione minimamente registrata. Ciò significa che il comando TRUNCATE si comporterà leggermente meglio e verranno aggiunte meno voci al registro delle transazioni. Puoi vedere un esempio di utilizzo di TRUNCATE nella seguente lista.
TRUNCATE TABLE myLogins
Questo eliminerà tutti i dati nella tabella myLogins.
Riepilogo
In questo tutorial, hai visto come aggiungere, modificare ed eliminare righe in una tabella di SQL Server utilizzando gli statement T-SQL INSERT, UPDATE e DELETE. In ogni caso, ho spiegato come lavorare con valori di singola riga e come lavorare con più righe come risultato di una sottoquery. Inoltre, hai visto come gli statement DELETE e TRUNCATE sono diversi, anche se entrambi possono essenzialmente eliminare righe da una tabella.
Articolo correlato:
Source:
https://petri.com/sql-insert-update-delete-truncate/