SQLShack (Norsk)
I denne artikkelen vil utforske prosessen med SQL Delete-kolonne fra en eksisterende tabell. Vi vil også forstå virkningen av å fjerne en kolonne med definerte begrensninger og objekter på den.
Innledning
I en relasjonsdatabase bruker vi skjemadesignteknikken Normaliseringer og deler de store tabellene inn i mindre bord. Det bidrar til å redusere redundansen og avhengigheten av data. Vi har flere normaliseringsskjemaer spesifisert i følgende bilde.
  
Vi dekker ikke normaliseringsteknikker i denne artikkelen. Du kan referere til artikkelen – Hva er database normalisering i SQL Server?
Anta at du har en eksisterende tabell med flere kolonner. Det er spesifikke kolonner i denne tabellen som ikke er relevante nå. Du trenger ikke disse kolonnene. Vurder for eksempel en produkttabell, og i denne tabellen har du en kolonne. Vi implementerte en egen mekanisme for å fange tilbakemeldinger på produktet, og denne kolonnen er ikke relevant nå.
La oss forstå hvorfor det er viktig å fjerne uønskede kolonner fra SQL-tabellen. Nedenfor er tabellstrukturen min, og vi må fjerne kolonnen med datatypen varchar (2000).
  
Denne tabellen inneholder 4 millioner rader, og brukeren utførte kommandoen for å velge alle poster fra denne tabellen.
| 
  1  
 | 
  VELG * FRA produkter;  
 | 
Fang den faktiske utførelsesplanen (trykk CTRL + M) av dette spørringen sammen med klientstatistikk (trykk Shift + Alt + S).
I et annet spørringsvindu, utfør spørringen uten kolonnen og fang den lignende statistikken.
| 
  1  
 2  
 3  
 4  
 | 
  VELG  
,  
,  
 FRA ..  
 | 
La oss sammenligne den faktiske utførelsesplanen for begge spørsmålene i SSMS. Du kan legge merke til at spørring uten kolonnen gir forbedret ytelse. Du ser lave verdier av kompilert minne, CPU-tid, redusert ventetall.
Spørreoptimalisereren og SQL-databasemotoren krever en ekstra innsats for denne kolonnen, mens det ikke er nyttig å hente data fra den.
  
På samme måte kan du sammenligne klientstatistikken for begge spørsmålene. Du kan merke en betydelig reduksjon i TDS-pakker mottatt fra serveren. Bytes sendt til klienten, Bytes mottatt fra serveren, klientbehandlingstid og total behandlingstid for spørringen som ikke inneholder kolonnen. Det kan også hjelpe deg med å spare nettverksbåndbredden.
  
Her har jeg til hensikt at du skal utføre databasereensing og fjerne de uønskede kolonnene for å forbedre søkeytelsen også.
La oss utforske hvordan du fjerner en kolonne fra en eksisterende SQL-tabell.
SQL DELETE-kolonne ved hjelp av SSMS-objektutforsker
Vi kan fjerne en kolonne ved hjelp av den grafiske brukeren Interface (GUI) -metode i SQL Server. Koble til en forekomst i SSMS, utvid databaser. I den bestemte databasen, finn den aktuelle tabellen og utvid kolonnene.
Den viser alle kolonnene i den aktuelle tabellen. Høyreklikk på kolonnen vi vil fjerne, og klikk på Slett som vist i følgende bilde.
  
Det åpner en vindu og viser kolonnenavnet du vil fjerne. Klikk Ok, og den fjerner kolonnen fra tabellen.
  
SQL SLETTE kolonner ved hjelp av SSMS-tabelldesigner
Vi bruker tabelldesigneren i SSMS til å definere nødvendige kolonner, datatyper og kolonneegenskaper som primærnøkkel, identitetskolonner. Vi kan også bruke den til å slette en kolonne fra en eksisterende tabell.
Høyreklikk på tabellen og gå til Design.
  
Den viser alle kolonnene i en bestemt tabell.
  
Høyreklikk på venstre side av en kolonne, og du får alternativet Slett kolonne. Klikk på den for å slette en kolonne.
  
Du kan enten lagre den ved å trykke CTRL + S eller lukke tabelldesigneren og klikk Ja i følgende vindu.
  
SQL SLETTE kolonner ved hjelp av T-SQL-tabelldesigneren
Vi kan også bruke endre tabellkommandoen for å fjerne en kolonne. Syntaksen er enkel å bruke. Følgende kommando fjerner kolonne fra tabellen.
| 
  1  
 2  
 3  
 4  
 | 
  BRUK  
 GO  
 ALTER TABELL. DROP KOLONN  
 GO  
 | 
- Angi først tabellnavnet som inneholder kolonnen som skal fjernes
 - For det andre, spesifiser navnet på kolonnen vi vil slette
 
Vi kan også fjerne flere kolonner i en enkelt Endre tabellkommando, men alle kolonnene skal tilhøre en enkelt tabell. Denne kommandoen fjerner og kolonner i en enkelt kommando.
| 
  1  
 2  
 3  
 4  
 | 
  BRUK  
 GO  
 ALTER TABELL. DROPKOLONN,  
 GO  
 | 
SQL DELETE-kolonne inneholder CHECK-begrensninger
Vi bruker CHECK-begrensninger for å begrense verdiområdet i en kolonne. Anta at du har en kolonne som har CHECK-begrensninger.
Vi ønsker å fjerne kolonne, men denne kolonnen har en CHECK-begrensning. La oss prøve å fjerne det.
| 
  1  
 2  
 | 
  ALTER TABLE. DROP KOLONN Produktpris  
 GO  
 | 
Du får en feilmelding om at objektene CK_Price_Check er avhengig av kolonnen.
  
Vi kan ikke fjerne denne kolonnen før den har en avhengig objekt i den. Hvis du vil fjerne denne kolonnen, må du først fjerne avhengigheten og deretter slette kolonnen.
La oss prøve å fjerne kolonnen med CHECK-begrensning ved hjelp av tabelldesigner. Åpne borddesigner for bordet.
Høyreklikk på kolonnen og kontroller at CHECK-begrensninger finnes i denne tabellen.
  
It viser CHECK-begrensningene i henhold til følgende bilde.
  
Nå høyreklikker du på kolonnen og sletter kolonnen. Det gir ingen feilmelding.
Lukk designervinduet, og det blir bedt om å klikke Ja for å lagre endringene.
  
Det gir deg en advarsel om validering og gir en melding om kontrollbegrensningen.
  
Klikk på Ja, og tabellen mislykkes. Den kan ikke fjerne kolonnen fordi CHECK-begrensningen er avhengig av den.
  
Vi kan ikke fjerne kolonnen ved hjelp av tabelldesigner hvis kolonnen har avhengigheter av andre objekter.
SQL DELETE-kolonne med en SQL View-definert
La oss lage en SQL View for å velge alle poster fra tabellen.
| 
  1  
 2  
 3  
 | 
  Opprett visning vw_ProductSales  
 som  
 SELECT * fra ProductSales  
 | 
Denne visningen avhenger av alle kolonnene i tabellen. Slipp kolonnen ved hjelp av kommandoen Endre tabell.
| 
  1  
 2  
 | 
  ALTER TABLE. DROP KOLONN Produktpris  
 GO  
 | 
Vi får ingen feilmelding om spørringskjøringen. La oss prøve å få tilgang til postene fra visningen.
| 
  1  
 2  
 | 
  VELG *  
 FRA vw_ProductSales;  
 | 
Vi får en feilmelding fordi tabellen ikke inneholder kolonnen. Denne kolonnen var tilgjengelig når vi opprettet SQL-visningen.
  
- 
Merk: vi bør sjekke objektavhengighet før vi slipper en kolonne. Det vil eliminere problemene vi møter senere.
 
Konklusjon
I denne artikkelen lærte vi om SQL Slett en kolonne fra en eksisterende tabell ved hjelp av forskjellige metoder. Vi bør være klar over alle disse metodene. Du bør være forsiktig i produksjonsmiljøet før du fjerner kolonner. Du bør fjerne alle avhengigheter og planlegge det riktig.
- Forfatter
 - Nylige innlegg
 
Han er skaperen av en av de største gratis online samlingene av artikler om et enkelt emne, med sin 50-delte serie om SQL Server Always On Availability Groups. Basert på sitt bidrag til SQL Server-fellesskapet, har han blitt anerkjent med forskjellige priser, inkludert den prestisjetunge «Årets beste forfatter» kontinuerlig i 2020 og 2021 på SQLShack.
Raj er alltid interessert i nye utfordringer, så hvis du trenger rådgivning hjelp til ethvert emne som dekkes i hans skrifter, kan du nås på [email protected]
Se alle innlegg av Rajendra Gupta
- Utfører mindre og større versjonsoppgraderinger for AWS RDS SQL Server – 29. januar 2021
 - Distribuere AWS RDS PostgreSQL-forekomster – 27. januar 2021
 - Overføre lokale SQL-databaser til AWS RDS SQL Server ved hjelp av AWS DMS – 25. januar , 2021