SQLShack
In dit artikel zal het proces van SQL Delete-kolom uit een bestaande tabel onderzoeken. We zullen ook de impact begrijpen van het verwijderen van een kolom met gedefinieerde beperkingen en objecten erop.
Inleiding
In een relationele database gebruiken we de schema-ontwerptechniek Normalisaties en splitsen we de grote tabellen in kleinere tafels. Het helpt de redundantie en afhankelijkheid van gegevens te verminderen. We hebben meerdere normalisatieformulieren gespecificeerd in de volgende afbeelding.
We behandelen geen normalisatietechnieken in dit artikel. U kunt verwijzen naar het artikel – Wat is databasenormalisatie in SQL Server?
Stel dat u een bestaande tabel heeft met meerdere kolommen. Er zijn specifieke kolommen in deze tabel die nu niet relevant zijn. U heeft deze kolommen niet nodig. Beschouw bijvoorbeeld een producttabel en in deze tabel heb je een kolom. We hebben een apart mechanisme geïmplementeerd om productfeedback vast te leggen, en deze kolom is nu niet relevant.
Laten we eens kijken waarom het essentieel is om ongewenste kolommen uit de SQL-tabel te verwijderen. Hieronder staat mijn tabelstructuur en we moeten de kolom met het gegevenstype varchar (2000) verwijderen.
Deze tabel bevat 4 miljoen rijen, en de gebruiker voerde de opdracht uit om alle records uit deze tabel te selecteren.
1
|
SELECTEER * UIT producten;
|
Leg het daadwerkelijke uitvoeringsplan vast (druk op CTRL + M) van deze query samen met klantstatistieken (druk op Shift + Alt + S).
Voer in een ander queryvenster de query uit zonder de kolom en leg de vergelijkbare statistieken vast.
1
2
3
4
|
SELECTEER
,
,
VAN ..
|
Laten we het feitelijke uitvoeringsplan van beide queries in SSMS vergelijken. U kunt zien dat een query zonder de kolom verbeterde prestaties oplevert. U ziet lage waarden van gecompileerd geheugen, CPU-tijd, minder wachttijden.
De query-optimalisatie en SQL-database-engine vereisen extra inspanningen voor deze kolom, terwijl het niet zinvol is om er gegevens uit op te halen.
Vergelijk op dezelfde manier de klantstatistieken van beide zoekopdrachten. U ziet een aanzienlijke vermindering van de TDS-pakketten die van de server worden ontvangen. Bytes verzonden naar de client, bytes ontvangen van de server, clientverwerkingstijd en totale verwerkingstijd voor de query die de kolom niet bevat. Het kan u ook helpen om de netwerkbandbreedte te besparen.
Hier ben ik van plan om de database op te ruimen en de ongewenste kolommen te verwijderen om ook de queryprestaties te verbeteren.
Laten we eens kijken hoe we een kolom uit een bestaande SQL-tabel kunnen verwijderen.
SQL DELETE-kolom met behulp van SSMS-objectverkenner
We kunnen een kolom verwijderen met behulp van de grafische gebruiker Interface (GUI) -methode in SQL Server. Maak verbinding met een instantie in SSMS, vouw databases uit. Zoek in de specifieke database de specifieke tabel en vouw de kolommen uit.
Het toont alle kolommen van de specifieke tabel. Klik met de rechtermuisknop op de kolom die we willen verwijderen en klik op Verwijderen zoals weergegeven in de volgende afbeelding.
Het opent een venster en geeft de kolomnaam weer die moet worden verwijderd. Klik op Ok en het verwijdert de kolom uit de tabel.
SQL DELETE-kolommen met behulp van SSMS-tabelontwerper
We gebruiken de tabelontwerper in SSMS om vereiste kolommen, gegevenstypen en kolomeigenschappen te definiëren, zoals primaire sleutel, identiteitskolommen. We kunnen het ook gebruiken om een kolom uit een bestaande tabel te verwijderen.
Klik met de rechtermuisknop op de tabel en ga naar Design.
Het toont alle kolommen van een bepaalde tabel.
Klik met de rechtermuisknop op de linkerkant van een kolom en je krijgt de optie Kolom verwijderen. Klik erop om een kolom te verwijderen.
U kunt het opslaan door op CTRL + S te drukken of de tabelontwerper sluiten en klik op Ja in het volgende venster.
SQL VERWIJDER kolommen met de T-SQL-tabelontwerper
We kunnen de opdracht Alter table gebruiken om ook een kolom te verwijderen. De syntaxis is eenvoudig te gebruiken. Met de volgende opdracht wordt de kolom uit de tabel verwijderd.
1
2
3
4
|
GEBRUIK
GAAN
WIJZIGINGSTABEL. DROP COLUMN
GO
|
- Geef eerst de tabelnaam op die de kolom bevat die moet worden verwijderd.
- Ten tweede, geef de naam op van de kolom die we willen verwijderen
We kunnen ook meerdere kolommen in één Alter table-opdracht, maar alle kolommen moeten tot één tabel behoren. Deze opdracht verwijdert en kolommen in één enkele opdracht.
1
2
3
4
|
GEBRUIK
GO
ALTER TAFEL . DROP COLUMN,
GO
|
SQL DELETE-kolom bevat CHECK-beperkingen
We gebruiken CHECK-beperkingen om het waardebereik in een kolom te beperken. Stel dat u een kolom heeft met CHECK-beperkingen.
We willen de kolom verwijderen, maar deze kolom heeft een CHECK-beperking. Laten we proberen het te verwijderen.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
U krijgt een foutmelding dat objecten CK_Price_Check afhankelijk zijn van de kolom.
We kunnen deze kolom niet verwijderen totdat deze een afhankelijke object erin. Om deze kolom te verwijderen, verwijdert u eerst de afhankelijkheid en vervolgens de kolom.
Laten we proberen de kolom met CHECK-beperking te verwijderen met behulp van de tabelontwerper. Open tafel ontwerper voor de tafel.
Klik met de rechtermuisknop op de kolom en controleer of CHECK-beperkingen bestaan voor deze tabel.
toont de CHECK-beperkingen volgens de volgende afbeelding.
Klik nu met de rechtermuisknop op de kolom en verwijder de kolom. Het geeft geen foutmelding.
Sluit het ontwerpvenster en het vraagt u op Ja te klikken om de wijzigingen op te slaan.
Het geeft u een validatiewaarschuwingsbericht en geeft een bericht over de controlevoorwaarde.
Klik op Ja en het lukt niet om de tabel te wijzigen. Het kan de kolom niet verwijderen omdat de CHECK-beperking ervan afhankelijk is.
We kunnen de kolom niet verwijderen met behulp van de tabelontwerper als de kolom heeft afhankelijkheden van andere objecten.
SQL DELETE-kolom met een gedefinieerde SQL-weergave
Laten we een SQL-weergave maken om alle records uit de tabel te selecteren.
1
2
3
|
Bekijk vw_ProductSales
als
SELECT * van ProductSales
|
Deze weergave is afhankelijk van alle kolommen van de tabel. Zet de kolom neer met de opdracht Alter table.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
We krijgen geen foutmelding over de uitvoering van de query. Laten we proberen toegang te krijgen tot de records vanuit de weergave.
1
2
|
SELECTEER *
VAN vw_ProductSales;
|
We krijgen een foutmelding omdat de tabel geen de kolom. Deze kolom was beschikbaar nadat we de SQL-weergave hadden gemaakt.
-
Opmerking: we moeten objectafhankelijkheden controleren voordat we een kolom neerzetten. Het elimineert de problemen waarmee we later worden geconfronteerd.
Conclusie
In dit artikel hebben we geleerd over SQL Een kolom verwijderen uit een bestaande tabel met verschillende methodes. We moeten van al deze methoden op de hoogte zijn. U moet voorzichtig zijn in de productieomgeving voordat u kolommen verwijdert. U moet alle afhankelijkheden verwijderen en deze goed plannen.
- Auteur
- Recente berichten
Hij is de maker van een van de grootste gratis online collecties met artikelen over een enkel onderwerp, met zijn 50-delige serie over SQL Server Always On Availability Groups. Op basis van zijn bijdrage aan de SQL Server-gemeenschap, is hij bekroond met verschillende prijzen, waaronder de prestigieuze “Beste auteur van het jaar”, continu in 2020 en 2021 bij SQLShack.
Raj is altijd geïnteresseerd in nieuwe uitdagingen, dus als je advies nodig hebt hulp bij elk onderwerp dat in zijn geschriften aan bod komt, hij is te bereiken op [email protected]
Bekijk alle berichten van Rajendra Gupta
- Kleine en grote versie-upgrades voor AWS uitvoeren RDS SQL Server – 29 januari 2021
- Implementatie van AWS RDS PostgreSQL-instanties – 27 januari 2021
- Migratie van uw on-premises SQL-databases naar AWS RDS SQL Server met behulp van AWS DMS – 25 januari , 2021