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