SQLShack (Italiano)
In questo articolo, abbiamo esplorerà il processo di eliminazione della colonna SQL da una tabella esistente. Comprenderemo anche limpatto della rimozione di una colonna con vincoli definiti e oggetti su di essa.
Introduzione
In un database relazionale, usiamo la tecnica di progettazione dello schema Normalizzazione e dividere le tabelle grandi in tavoli più piccoli. Aiuta a ridurre la ridondanza e la dipendenza dei dati. Abbiamo più moduli di normalizzazione specificati nellimmagine seguente.
Non trattiamo le tecniche di normalizzazione in questo articolo. Puoi fare riferimento allarticolo – Che cosè la normalizzazione del database in SQL Server?
Supponi di avere una tabella esistente con più colonne. Ci sono colonne specifiche in questa tabella che non sono rilevanti al momento. Non hai bisogno di queste colonne. Ad esempio, considera una tabella di prodotti e in questa tabella hai una colonna. Abbiamo implementato un meccanismo separato per acquisire il feedback sul prodotto e questa colonna non è pertinente al momento.
Comprendiamo perché è essenziale rimuovere le colonne indesiderate dalla tabella SQL. Di seguito è riportata la struttura della mia tabella e dobbiamo rimuovere la colonna con il tipo di dati varchar (2000).
Questa tabella contiene 4 milioni righe e lutente ha eseguito il comando per selezionare tutti i record da questa tabella.
1
|
SELECT * FROM Products;
|
Cattura il piano di esecuzione effettivo (premi CTRL + M) di questa query insieme alle statistiche del client (premere Maiusc + Alt + S).
In unaltra finestra della query, eseguire la query senza la colonna e acquisire le statistiche simili.
1
2
3
4
|
SELEZIONA
,
,
DA ..
|
Confrontiamo il piano di esecuzione effettivo di entrambe le query in SSMS. È possibile notare che la query senza la colonna fornisce prestazioni migliorate. Vengono visualizzati valori bassi di memoria compilata, tempo CPU, conteggi di attesa ridotti.
Lottimizzatore di query e il motore di database SQL richiedono uno sforzo aggiuntivo per questa colonna mentre non è utile recuperare i dati da essa.
Allo stesso modo, confronta le statistiche del cliente di entrambe le query. È possibile notare una significativa riduzione dei pacchetti TDS ricevuti dal server. Byte inviati al client, Byte ricevuti dal server, tempo di elaborazione client e tempo di elaborazione totale per la query che non contiene la colonna. Può aiutarti a risparmiare anche la larghezza di banda della rete.
Qui, intendo che dovresti eseguire la pulizia del database e rimuovere le colonne indesiderate per migliorare anche le prestazioni delle query.
Esploriamo come rimuovere una colonna da una tabella SQL esistente.
Colonna ELIMINA SQL utilizzando Esplora oggetti SSMS
Possiamo rimuovere una colonna utilizzando lutente grafico Metodo dellinterfaccia (GUI) in SQL Server. Connettiti a unistanza in SSMS, espandi i database. Nel database specifico, individua la tabella specifica ed espandi le colonne.
Mostra tutte le colonne della tabella specifica. Fare clic con il tasto destro del mouse sulla colonna che si desidera rimuovere e fare clic su Elimina come mostrato nellimmagine seguente.
Si apre un finestra ed elenca il nome della colonna da rimuovere. Fai clic su OK e rimuove la colonna dalla tabella.
SQL DELETE colonne utilizzando SSMS table designer
Usiamo il designer di tabelle in SSMS per definire le colonne richieste, i tipi di dati e le proprietà delle colonne come la chiave primaria, le colonne di identità. Possiamo usarlo anche per eliminare una colonna da una tabella esistente.
Fai clic con il pulsante destro del mouse sulla tabella e vai a Design.
Mostra tutte le colonne di una particolare tabella.
Fai clic con il pulsante destro del mouse sul lato sinistro di una colonna e ottieni lopzione Elimina colonna. Fai clic su di essa per eliminare una colonna.
Puoi salvarla premendo CTRL + S o chiudere la finestra di progettazione della tabella e fai clic su Sì nella finestra seguente.
SQL ELIMINA colonne utilizzando il designer di tabelle T-SQL
Possiamo usare il comando Alter table per rimuovere anche una colonna. La sintassi è semplice da usare. Il comando seguente rimuove la colonna dalla tabella.
1
2
3
4
|
USE
GO
ALTER TABLE. DROP COLUMN
VAI
|
- Innanzitutto, specifica il nome della tabella che contiene la colonna da rimuovere
- In secondo luogo, specifica il nome della colonna che vogliamo eliminare
Possiamo anche rimuovere più colonne in un singolo comando Alter table, ma tutte le colonne dovrebbero appartenere a una singola tabella. Questo comando rimuove e colonne in un unico comando.
1
2
3
4
|
USE
GO
ALTER TAVOLO . DROP COLUMN,
VAI
|
La colonna SQL DELETE contiene i vincoli CHECK
Usiamo i vincoli CHECK per limitare lintervallo di valori in una colonna. Supponiamo di avere una colonna con vincoli CHECK su di essa.
Vogliamo rimuovere la colonna, ma questa colonna ha un vincolo CHECK su di essa. Proviamo a rimuoverlo.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Viene visualizzato un messaggio di errore che indica che gli oggetti CK_Price_Check dipendono dalla colonna.
Non possiamo rimuovere questa colonna finché non ha una colonna dipendente oggetto in esso. Per rimuovere questa colonna, rimuovere prima la dipendenza, quindi eliminare la colonna.
Proviamo a rimuovere la colonna con vincolo CHECK utilizzando il designer di tabelle. Tavolo aperto di design per la tavola.
Fare clic con il pulsante destro del mouse sulla colonna e verificare che i vincoli CHECK siano presenti in questa tabella.
It mostra i vincoli CHECK come da immagine seguente.
Ora, fai clic con il tasto destro sulla colonna ed elimina la colonna. Non fornisce alcun messaggio di errore.
Chiudi la finestra di progettazione e ti chiede di fare clic su Sì per salvare le modifiche.
Fornisce un messaggio di avviso di convalida e fornisce un messaggio sul vincolo di controllo.
Fare clic su Sì e non riesce a modificare la tabella. Non è possibile rimuovere la colonna perché il vincolo CHECK dipende da esso.
Non possiamo rimuovere la colonna utilizzando il designer di tabelle se la colonna ha dipendenze da altri oggetti.
Colonna SQL DELETE con una vista SQL definita
Creiamo una vista SQL per selezionare tutti i record dalla tabella.
1
2
3
|
Crea vista vw_ProductSales
come
SELEZIONA * da ProductSales
|
Questa vista dipende da tutte le colonne della tabella. Rilascia la colonna utilizzando il comando Modifica tabella.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Non riceviamo alcun messaggio di errore durante lesecuzione della query. Proviamo ad accedere ai record dalla visualizzazione.
1
2
|
SELEZIONA *
DA vw_ProductSales;
|
Riceviamo un messaggio di errore perché la tabella non contiene la colonna. Questa colonna era disponibile una volta creata la vista SQL.
-
Nota: dovremmo controllare le dipendenze degli oggetti prima di rilasciare una colonna. Eliminerà i problemi che dovremo affrontare in seguito.
Conclusione
In questo articolo, abbiamo imparato a conoscere SQL Elimina una colonna da una tabella esistente utilizzando metodi diversi. Dobbiamo essere consapevoli di tutti questi metodi. È necessario fare attenzione nellambiente di produzione prima di rimuovere le colonne. È necessario rimuovere tutte le dipendenze e pianificarle correttamente.
- Autore
- Post recenti
È lautore di una delle più grandi raccolte online gratuite di articoli su un singolo argomento, con la sua serie di 50 parti sui gruppi di disponibilità Always On di SQL Server. Sulla base del suo contributo alla comunità di SQL Server, è stato riconosciuto con vari premi tra cui il prestigioso “Miglior autore dellanno” ininterrottamente nel 2020 e 2021 a SQLShack.
Raj è sempre interessato a nuove sfide, quindi se hai bisogno di consulenza aiuto su qualsiasi argomento trattato nei suoi scritti, può essere raggiunto a [email protected]
Visualizza tutti i post di Rajendra Gupta
- Esecuzione di aggiornamenti delle versioni minori e maggiori per AWS RDS SQL Server – 29 gennaio 2021
- Distribuzione di istanze PostgreSQL di AWS RDS – 27 gennaio 2021
- Migrazione dei database SQL locali ad AWS RDS SQL Server utilizzando AWS DMS – 25 gennaio , 2021