SQLShack (Dansk)
I denne artikel, vi vil undersøge processen med SQL Delete-kolonne fra en eksisterende tabel. Vi vil også forstå virkningen af at fjerne en kolonne med definerede begrænsninger og objekter på den.
Introduktion
I en relationsdatabase bruger vi skema-designteknikken Normaliseringer og opdeler de store tabeller i mindre tabeller. Det hjælper med at reducere redundansen og afhængigheden af data. Vi har flere normaliseringsformer angivet i det følgende billede.
Vi dækker ikke normaliseringsteknikker i denne artikel. Du kan henvise til artiklen – Hvad er database normalisering i SQL Server?
Antag at du har en eksisterende tabel med flere kolonner. Der er specifikke kolonner i denne tabel, der ikke er relevante nu. Du behøver ikke disse kolonner. Overvej f.eks. En produkttabel, og i denne tabel har du en kolonne. Vi implementerede en separat mekanisme til at indfange produktfeedback, og denne kolonne er ikke relevant nu.
Lad os forstå, hvorfor det er vigtigt at fjerne uønskede kolonner fra SQL-tabellen. Nedenfor er min tabelstruktur, og vi skal fjerne kolonne med datatypen varchar (2000).
Denne tabel indeholder 4 millioner rækker, og brugeren udførte kommandoen for at vælge alle poster fra denne tabel.
1
|
VÆLG * FRA produkter;
|
Fang den aktuelle udførelsesplan (tryk CTRL + M) af denne forespørgsel sammen med klientstatistikker (tryk på Skift + Alt + S).
I et andet forespørgselsvindue skal du udføre forespørgslen uden kolonnen og fange de lignende statistikker.
1
2
3
4
|
VÆLG
,
,
FRA ..
|
Lad os sammenligne den aktuelle udførelsesplan for begge forespørgsler i SSMS. Du kan bemærke, at forespørgsel uden kolonnen giver forbedret ydeevne. Du ser lave værdier for kompileret hukommelse, CPU-tid, reduceret ventetælling.
Forespørgselsoptimering og SQL-databasemotor kræver en ekstra indsats for denne kolonne, mens det ikke er nyttigt at hente data fra den.
Sammenlign ligeledes klientstatistikken for begge forespørgsler. Du kan bemærke en betydelig reduktion i de TDS-pakker, der modtages fra serveren. Bytes sendt til klienten, Bytes modtaget fra serveren, klientbehandlingstid og samlet behandlingstid for forespørgslen, der ikke indeholder kolonnen. Det kan også hjælpe dig med at gemme netværksbåndbredden.
Her har jeg til hensigt at du skal udføre databaseoprydning og fjerne de uønskede kolonner for også at forbedre forespørgselens ydeevne.
Lad os undersøge, hvordan du fjerner en kolonne fra en eksisterende SQL-tabel.
SQL DELETE-kolonne ved hjælp af SSMS-objektudforsker
Vi kan fjerne en kolonne ved hjælp af den grafiske bruger Interface (GUI) -metode i SQL Server. Opret forbindelse til en forekomst i SSMS, udvid databaser. I den bestemte database skal du finde den bestemte tabel og udvide kolonnerne.
Den viser alle kolonnerne i den bestemte tabel. Højreklik på den kolonne, vi vil fjerne, og klik på Slet som vist i det følgende billede.
Det åbner en vindue og viser kolonnenavnet, der skal fjernes. Klik på Ok, og den fjerner kolonnen fra tabellen.
SQL SLET kolonner ved hjælp af SSMS-borddesigner
Vi bruger borddesigneren i SSMS til at definere krævede kolonner, datatyper og kolonneegenskaber såsom primærnøgle, identitetskolonner. Vi kan også bruge den til at slette en kolonne fra en eksisterende tabel.
Højreklik på tabellen og gå til Design.
Det viser alle kolonner i en bestemt tabel.
Højreklik på venstre side af en kolonne, og du får muligheden Slet kolonne. Klik på den for at slette en kolonne.
Du kan enten gemme den ved at trykke på CTRL + S eller lukke borddesigneren og klik på Ja i det følgende vindue.
SQL SLET kolonner ved hjælp af T-SQL-borddesigneren
Vi kan også bruge kommandoen Alter tabel til at fjerne en kolonne. Syntaksen er enkel at bruge. Følgende kommando fjerner kolonne fra tabellen.
1
2
3
4
|
BRUG
GO
ALTER TABEL. DROP KOLONNE
GO
|
- Angiv først det tabelnavn, der indeholder kolonnen, der skal fjernes
- For det andet skal du angive navnet på den kolonne, vi vil slette
Vi kan også fjerne flere kolonner i en enkelt Alter-tabelkommando, men alle kolonner skal tilhøre en enkelt tabel. Denne kommando fjerner og kolonner i en enkelt kommando.
1
2
3
4
|
BRUG
GO
ALTER BORD . DROPKOLONNE,
GO
|
SQL DELETE-kolonne indeholder CHECK-begrænsninger
Vi bruger CHECK-begrænsninger til at begrænse værdiområdet i en kolonne. Antag at du har en kolonne, der har CHECK-begrænsninger.
Vi vil fjerne kolonne, men denne kolonne har en CHECK-begrænsning. Lad os prøve at fjerne det.
1
2
|
ALTER TABEL. DROP KOLONN Produktpris
GO
|
Du får en fejlmeddelelse om, at objekter CK_Price_Check er afhængig af kolonnen.
Vi kan ikke fjerne denne kolonne, før den har en afhængig objekt i det. For at fjerne denne kolonne skal du først fjerne afhængigheden og derefter slette kolonnen.
Lad os prøve at fjerne kolonne med CHECK-begrænsning ved hjælp af borddesigner. Åbn borddesigner til bordet.
Højreklik på kolonnen og kontroller, at der findes CHECK-begrænsninger i denne tabel.
Det viser CHECK-begrænsningerne i henhold til det følgende billede.
Nu skal du højreklikke på kolonnen og slette kolonnen. Det giver ingen fejlmeddelelse.
Luk designervinduet, og det beder dig om at klikke på Ja for at gemme ændringer.
Det giver dig en advarselsmeddelelse om validering og giver en besked om kontrolbegrænsningen.
Klik på Ja, og tabellen ændres ikke. Det kan ikke fjerne kolonnen, fordi CHECK-begrænsningen er afhængig af den.
Vi kan ikke fjerne kolonnen ved hjælp af borddesigner, hvis kolonnen har afhængigheder af andre objekter.
SQL DELETE-kolonne, der har en SQL-visning defineret
Lad os oprette en SQL View for at vælge alle poster fra tabellen.
1
2
3
|
Opret visning vw_ProductSales
som
SELECT * fra ProductSales
|
Denne visning afhænger af alle kolonner i tabellen. Slip kolonnen ved hjælp af kommandoen Ændring af tabel.
1
2
|
ALTER TABEL. DROP KOLONN Produktpris
GO
|
Vi får ikke nogen fejlmeddelelse om udførelsen af forespørgslen. Lad os prøve at få adgang til posterne fra visningen.
1
2
|
VÆLG *
FRA vw_ProductSales;
|
Vi får en fejlmeddelelse, fordi tabellen ikke indeholder kolonnen. Denne kolonne var tilgængelig, når vi oprettede SQL-visningen.
-
Bemærk: vi skal kontrollere objektafhængigheder, før vi slipper en kolonne. Det vil fjerne de problemer, som vi står overfor senere.
Konklusion
I denne artikel lærte vi om SQL Slet en kolonne fra en eksisterende tabel ved hjælp af forskellige metoder. Vi skal være opmærksomme på alle disse metoder. Du skal være forsigtig i produktionsmiljøet, før du fjerner kolonner. Du skal fjerne alle afhængigheder og planlægge det korrekt.
- Forfatter
- Seneste indlæg
Han er skaberen af en af de største gratis online samlinger af artikler om et enkelt emne med sin 50-dels serie om SQL Server Always On Availability Groups. Baseret på hans bidrag til SQL Server-samfundet er han blevet anerkendt med forskellige priser, herunder den prestigefyldte “Årets bedste forfatter” kontinuerligt i 2020 og 2021 hos SQLShack.
Raj er altid interesseret i nye udfordringer, så hvis du har brug for rådgivning hjælp til ethvert emne, der er dækket af hans skrifter, han kan nås på [email protected]
Se alle indlæg af Rajendra Gupta
- Udfører mindre og større versionopgraderinger til AWS RDS SQL Server – 29. januar 2021
- Implementering af AWS RDS PostgreSQL-forekomster – 27. januar 2021
- Migrering af lokale SQL-databaser til AWS RDS SQL Server ved hjælp af AWS DMS – 25. januar , 2021