SQLShack (Svenska)
I den här artikeln kommer att utforska processen för SQL Radera kolumn från en befintlig tabell. Vi kommer också att förstå effekten av att ta bort en kolumn med definierade begränsningar och objekt på den.
Inledning
I en relationsdatabas använder vi schemadesigntekniken Normaliseringar och delar upp de stora tabellerna i mindre bord. Det hjälper till att minska redundansen och beroendet av data. Vi har flera normaliseringsformer som anges i följande bild.
Vi täcker inte normaliseringstekniker i den här artikeln. Du kan hänvisa till artikeln – Vad är databasnormalisering i SQL Server?
Antag att du har en befintlig tabell med flera kolumner. Det finns specifika kolumner i denna tabell som inte är relevanta nu. Du behöver inte dessa kolumner. Tänk till exempel på en produkttabell och i den här tabellen har du en kolumn. Vi implementerade en separat mekanism för att fånga produktfeedback och den här kolumnen är inte relevant nu.
Låt oss förstå varför det är viktigt att ta bort oönskade kolumner från SQL-tabellen. Nedan är min tabellstruktur och vi måste ta bort kolumn med datatyp varchar (2000).
Denna tabell innehåller 4 miljoner rader, och användaren körde kommandot för att välja alla poster från denna tabell.
1
|
VÄLJ * FRÅN Produkter;
|
Fånga den faktiska körplanen (tryck CTRL + M) av denna fråga tillsammans med klientstatistik (tryck på Skift + Alt + S).
I ett annat frågefönster kör du frågan utan kolumnen och fånga liknande statistik.
1
2
3
4
|
VÄLJ
,
,
FRÅN ..
|
Låt oss jämföra den faktiska körplanen för båda frågorna i SSMS. Du kan märka att frågan utan kolumnen ger förbättrad prestanda. Du ser låga värden på sammanställt minne, CPU-tid, minskat väntetal.
Frågeoptimeringsprogrammet och SQL-databasmotorn kräver en extra insats för den här kolumnen medan det inte är användbart att hämta data från den.
Jämför på samma sätt klientstatistiken för båda frågorna. Du kan notera en betydande minskning av de TDS-paket som tas emot från servern. Byte skickade till klienten, byte mottagna från servern, klientbehandlingstid och total behandlingstid för frågan som inte innehåller kolumnen. Det kan hjälpa dig att spara nätverksbandbredden också.
Här tänker jag att du ska utföra databasrensning och ta bort de oönskade kolumnerna för att förbättra frågeprestanda också.
Låt oss undersöka hur man tar bort en kolumn från en befintlig SQL-tabell.
SQL DELETE-kolumn med hjälp av SSMS-objektutforskaren
Vi kan ta bort en kolumn med den grafiska användaren Interface (GUI) -metod i SQL Server. Anslut till en instans i SSMS, expandera databaser. I den specifika databasen, leta reda på den specifika tabellen och expandera kolumnerna.
Den visar alla kolumner i den specifika tabellen. Högerklicka på den kolumn som vi vill ta bort och klicka på Ta bort som visas i följande bild.
Det öppnar en fönster och listar kolumnnamnet som ska tas bort. Klicka på Ok så tas kolumnen bort från tabellen.
SQL DELETE kolumner med SSMS-tabelldesigner
Vi använder tabelldesignern i SSMS för att definiera nödvändiga kolumner, datatyper och kolumnegenskaper som primär nyckel, identitetskolumner. Vi kan också använda den för att ta bort en kolumn från en befintlig tabell.
Högerklicka på tabellen och gå till Design.
Den visar alla kolumner i en viss tabell.
Högerklicka på vänster sida av en kolumn så får du alternativet Radera kolumn. Klicka på den för att radera en kolumn.
Du kan antingen spara den genom att trycka på CTRL + S eller stäng tabelldesignern och klicka på Ja i följande fönster.
SQL RADERA kolumner med T-SQL-tabelldesignern
Vi kan använda kommandot Ändra tabell för att ta bort en kolumn också. Syntaxen är enkel att använda. Följande kommando tar bort kolumn från tabellen.
1
2
3
4
|
ANVÄNDNING
GO
ALTER TABELL. DROP KOLONN
GO
|
- Ange först tabellnamnet som innehåller kolumnen som ska tas bort
- För det andra, ange namnet på kolumnen som vi vill ta bort
Vi kan också ta bort flera kolumner i ett enda Ändra tabellkommando, men alla kolumner ska tillhöra en enda tabell. Detta kommando tar bort och kolumner i ett enda kommando.
1
2
3
4
|
ANVÄNDNING
GO
ALTER TABELL. DROP KOLONN,
GO
|
SQL DELETE-kolumnen innehåller CHECK-begränsningar
Vi använder CHECK-begränsningar för att begränsa värdeområdet i en kolumn. Antag att du har en kolumn med CHECK-begränsningar.
Vi vill ta bort kolumnen, men den här kolumnen har en CHECK-begränsning. Låt oss försöka ta bort det.
1
2
|
ALTER TABELL. DROP COLUMN ProductPrice
GO
|
Du får ett felmeddelande om att objekt CK_Price_Check är beroende av kolumnen.
Vi kan inte ta bort den här kolumnen förrän den har en beroende objekt i den. För att ta bort den här kolumnen tar du först bort beroendet och tar sedan bort kolumnen.
Låt oss försöka ta bort kolumnen med CHECK-begränsning med hjälp av tabelldesigner. Öppna bordsdesigner för bordet.
Högerklicka på kolumnen och kontrollera att CHECK-begränsningar finns i denna tabell.
Det visar CHECK-begränsningarna enligt följande bild.
Högerklicka nu på kolumnen och ta bort kolumnen. Det ger inget felmeddelande.
Stäng designfönstret och ber dig att klicka på Ja för att spara ändringar.
Det ger dig ett valideringsmeddelande och ger ett meddelande om kontrollbegränsningen.
Klicka på Ja så ändras inte tabellen. Det går inte att ta bort kolumnen eftersom CHECK-begränsningen är beroende av den.
Vi kan inte ta bort kolumnen med hjälp av tabelldesigner om kolumnen har beroenden av andra objekt.
SQL DELETE-kolumn med en SQL-vy definierad
Låt oss skapa en SQL-vy för att välja alla poster från tabellen.
1
2
3
|
Skapa vy vw_ProductSales
som
VÄLJ * från ProductSales
|
Denna vy beror på alla kolumner i tabellen. Släpp kolumnen med kommandot Ändra tabell.
1
2
|
ALTER TABELL. DROP COLUMN ProductPrice
GO
|
Vi får inte något felmeddelande om frågan körs. Låt oss försöka komma åt posterna från vyn.
1
2
|
VÄLJ *
FRÅN vw_ProductSales;
|
Vi får ett felmeddelande eftersom tabellen inte innehåller kolumnen. Den här kolumnen var tillgänglig när vi skapade SQL-vyn.
-
Obs: vi bör kontrollera objektberoenden innan vi släpper en kolumn. Det kommer att eliminera de problem som vi möter senare.
Slutsats
I den här artikeln lärde vi oss om SQL Ta bort en kolumn från en befintlig tabell med olika metoder. Vi bör vara medvetna om alla dessa metoder. Du bör vara försiktig i produktionsmiljön innan du tar bort kolumner. Du bör ta bort alla beroenden och planera det ordentligt.
- Författare
- Senaste inlägg
Han är skaparen av en av de största gratis onlinesamlingarna av artiklar om ett enda ämne, med sin 50-delarserie om SQL Server Always On Availability Groups. Baserat på sitt bidrag till SQL Server-communityn har han fått utmärkelser med olika utmärkelser inklusive den prestigefyllda ”Årets bästa författare” kontinuerligt 2020 och 2021 på SQLShack.
Raj är alltid intresserad av nya utmaningar så om du behöver rådgivning hjälp om alla ämnen som omfattas av hans skrifter, han kan nås på [email protected]
Visa alla inlägg av Rajendra Gupta
- Utför mindre och större versionuppgraderingar för AWS RDS SQL Server – 29 januari 2021
- Distribuera AWS RDS PostgreSQL-instanser – 27 januari 2021
- Migrera dina lokala SQL-databaser till AWS RDS SQL Server med AWS DMS – 25 januari 2021