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
Som MCSA-sertifisert og Microsoft Certified Trainer i Gurgaon, India, med 13 års erfaring, arbeider Rajendra for en rekke store selskaper med fokus på ytelsesoptimalisering, overvåking, høy tilgjengelighet og katastrofegjenopprettingstrategier og implementering. Han er forfatter av hundrevis av autoritative artikler om SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS / Amazon RDS, Git og relaterte teknologier som har blitt sett av over 10m lesere til dags dato.
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

Siste innlegg av Rajendra Gupta (se alle)
  • 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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *