SQLShack (Română)
În acest articol, vom va explora procesul coloanei Ștergere SQL dintr-un tabel existent. Vom înțelege, de asemenea, impactul eliminării unei coloane cu constrângeri și obiecte definite pe ea.
Introducere
Într-o bază de date relațională, folosim tehnica de proiectare a schemei Normalizări și împărțim tabelele mari în mese mai mici. Ajută la reducerea redundanței și dependenței datelor. Avem mai multe forme de normalizare specificate în următoarea imagine.
Nu acoperim tehnicile de normalizare în acest articol. Puteți consulta articolul – Ce este normalizarea bazei de date în SQL Server?
Să presupunem că aveți un tabel existent cu mai multe coloane. Există coloane specifice în acest tabel care nu sunt relevante acum. Nu aveți nevoie de aceste coloane. De exemplu, luați în considerare un tabel de produse și, în acest tabel, aveți o coloană. Am implementat un mecanism separat pentru a capta feedback-ul produsului, iar această coloană nu este relevantă acum.
Să înțelegem de ce este esențial să eliminați coloanele nedorite din tabelul SQL. Mai jos este structura tabelului meu și trebuie să eliminăm coloana cu tip de date varchar (2000).
Acest tabel conține 4 milioane rânduri, iar utilizatorul a executat comanda pentru a selecta toate înregistrările din acest tabel.
1
|
SELECT * FROM Produse;
|
Capturați planul de execuție real (apăsați CTRL + M) din această interogare împreună cu statisticile clientului (apăsați Shift + Alt + S).
Într-o altă fereastră de interogare, executați interogarea fără coloană și capturați statistici similare.
1
2
3
4
|
SELECT
,
,
FROM ..
|
Să comparăm planul de execuție real al ambelor interogări în SSMS. Puteți observa că interogarea fără coloană oferă performanțe îmbunătățite. Vedeți valori scăzute ale memoriei compilate, timpul procesorului, numărul de așteptări redus.
Optimizatorul de interogări și motorul de baze de date SQL necesită un efort suplimentar pentru această coloană, în timp ce nu este util să preluați date din ea.
În mod similar, comparați statisticile clienților pentru ambele interogări. Puteți observa o reducere semnificativă a pachetelor TDS primite de la server. Octeți trimiși către client, octeți primiți de la server, timpul de procesare al clientului și timpul total de procesare pentru interogarea care nu conține coloana. Vă poate ajuta să economisiți și lățimea de bandă a rețelei.
Aici intenționez să efectuați curățarea bazei de date și să eliminați coloanele nedorite pentru a îmbunătăți și performanța interogării.
Să explorăm cum să eliminăm o coloană dintr-un tabel SQL existent.
Coloana SQL DELETE utilizând obiectul de explorare SSMS
Putem elimina o coloană utilizând utilizatorul grafic Metodă de interfață (GUI) în SQL Server. Conectați-vă la o instanță din SSMS, extindeți bazele de date. În baza de date specială, localizați tabelul respectiv și extindeți coloanele.
Afișează toate coloanele tabelului special. Faceți clic dreapta pe coloana pe care dorim să o eliminăm și faceți clic pe Ștergere așa cum se arată în imaginea următoare.
Se deschide o fereastră și listează numele coloanei de eliminat. Faceți clic pe Ok și elimină coloana din tabel.
Coloanele SQL DELETE utilizând proiectantul de tabele SSMS
Folosim proiectantul de tabele în SSMS pentru a defini coloanele necesare, tipurile de date și proprietățile coloanei, cum ar fi cheia primară, coloanele de identitate. Îl putem folosi și pentru a șterge o coloană dintr-un tabel existent.
Faceți clic dreapta pe masă și accesați Design.
Afișează toate coloanele unui anumit tabel.
Faceți clic dreapta pe partea stângă a unei coloane și veți obține opțiunea Ștergeți coloana. Faceți clic pe ea pentru a șterge o coloană.
Puteți fie să o salvați apăsând CTRL + S, fie să închideți proiectantul tabelului și faceți clic pe Da în următoarea fereastră.
SQL ȘTERGERI coloane utilizând proiectantul tabelelor T-SQL
Putem folosi comanda Alter tabel pentru a elimina și o coloană. Sintaxa este ușor de utilizat. Următoarea comandă elimină coloana din tabel.
1
2
3
4
|
USE
GO
ALTER TABLE. DROP COLUMN
GO
|
- Mai întâi, specificați numele tabelului care conține coloana de eliminat
- În al doilea rând, specificați numele coloanei pe care dorim să o ștergem
De asemenea, putem elimina mai multe coloane într-o singură comandă Alter tabel, dar toate coloanele ar trebui să aparțină unui singur tabel. Această comandă elimină și coloane într-o singură comandă.
1
2
3
4
|
USE
GO
ALTER MASA . DROP COLUMN,
GO
|
Coloana SQL DELETE conține constrângeri CHECK
Folosim constrângeri CHECK pentru a limita intervalul de valori dintr-o coloană. Să presupunem că aveți o coloană cu constrângeri CHECK pe ea.
Vrem să eliminăm coloana, dar această coloană are o constrângere CHECK. Să încercăm să îl eliminăm.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Veți primi un mesaj de eroare că obiectele CK_Price_Check depind de coloană.
Nu putem elimina această coloană până când nu are o obiect în el. Pentru a elimina această coloană, mai întâi, eliminați dependența și apoi ștergeți coloana.
Să încercăm să eliminăm coloana cu constrângere CHECK folosind designerul de tabele. Deschideți proiectarea mesei pentru masă.
Faceți clic dreapta pe coloană și verificați dacă există restricții CHECK pe acest tabel.
arată constrângerile CHECK conform următoarei imagini.
Acum, faceți clic dreapta pe coloană și ștergeți coloana. Nu afișează niciun mesaj de eroare.
Închideți fereastra de proiectare și vă solicită să faceți clic pe Da pentru salvarea modificărilor.
Vă oferă un mesaj de avertizare de validare și un mesaj despre constrângerea verificării.
Faceți clic pe Da și nu reușește să modifice tabelul. Nu poate elimina coloana, deoarece constrângerea CHECK depinde de aceasta.
Nu putem elimina coloana folosind proiectantul de tabele dacă coloana are dependențe de alte obiecte.
Coloana SQL DELETE având o vedere SQL definită
Să creăm o vizualizare SQL pentru a selecta toate înregistrările din tabel.
1
2
3
|
Creați vizualizare vw_ProductSales
ca
SELECT * din ProductSales
|
Această vizualizare depinde de toate coloanele tabelului. Plasați coloana folosind comanda Alter table.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Nu primim niciun mesaj de eroare la executarea interogării. Să încercăm să accesăm înregistrările din vizualizare.
1
2
|
SELECT *
FROM vw_ProductSales;
|
Primim un mesaj de eroare deoarece tabelul nu conține coloana. Această coloană a fost disponibilă odată ce am creat vizualizarea SQL.
-
Notă: ar trebui să verificăm dependențele de obiect înainte de a renunța la o coloană. Va elimina problemele cu care ne confruntăm mai târziu.
Concluzie
În acest articol, am aflat despre SQL Ștergeți o coloană dintr-un tabel existent folosind diferite metode. Ar trebui să fim conștienți de toate aceste metode. Ar trebui să aveți grijă în mediul de producție înainte de a elimina coloanele. Ar trebui să eliminați toate dependențele și să le planificați corect.
- Autor
- Postări recente
El este creatorul uneia dintre cele mai mari colecții online gratuite de articole pe un singur subiect, cu seria sa de 50 de părți despre SQL Server Always On Availability Groups. Pe baza contribuției sale la comunitatea SQL Server, a fost recunoscut cu diverse premii, inclusiv prestigiosul „Cel mai bun autor al anului” continuu în 2020 și 2021 la SQLShack.
Raj este mereu interesat de noi provocări, deci dacă aveți nevoie de consultanță ajutor cu privire la orice subiect acoperit în scrierile sale, poate fi contactat la [email protected]
Vezi toate mesajele lui Rajendra Gupta
- Efectuarea actualizărilor versiunilor minore și majore pentru AWS RDS SQL Server – 29 ianuarie 2021
- Implementarea instanțelor AWS RDS PostgreSQL – 27 ianuarie 2021
- Migrarea bazelor de date SQL locale la AWS RDS SQL Server utilizând AWS DMS – 25 ianuarie , 2021