sql >> Database teknologi >  >> RDS >> Sqlserver

Tilføj kolonner til en eksisterende tabel i SQL Server-database

Introduktion

En tabel er en todimensionel logisk struktur og det grundlæggende middel til lagring af data i relationelle databasestyringssystemer. Dets "række og kolonne"-format minder meget om opbygningen af ​​regnearket.

Hver ny post, der introduceres til en tabel, er en række (også kaldet en post eller tupel), mens rækker er grupperet i et begrænset sæt af kolonner (også kaldet felter eller attributter). Hver kolonne har et navn og en datatype, og den tjener som reference til visning af resultatsæt, når der forespørges på data fra relationelle databasesystemer.

I denne artikel undersøger vi de nuværende muligheder, der lader os tilføje nye kolonner til en eksisterende tabel i SQL Server-databasen. Brugssagen kan opstå ved mange lejligheder. Det sker især, når der er opdateringer til en applikation, og de kræver tilføjelse af nye kolonner.

Opret en tabel

For at starte vores korte sæt af eksperimenter, lad os oprette en lille tabel med fire kolonner, der indeholder grundlæggende oplysninger om en virksomhed:

-- Listing 1: Create New Table ntab
use AU
go
create table ntab (
ID INT identity (1,1)
, CompanyName varchar(100)
, CompanyAddress varchar(200)
, DateofIncorporation datetime
);

Tilføj en enkelt kolonne

For at tilføje en enkelt kolonne til nfanen tabel, udfører vi koden, der er angivet i liste 2. Resultatet er en tabel med fem kolonner, som vist i figur 1. Vi genererede disse metadata om vores tabel med sp_columns gemt procedure.

-- Listing 2: Add ManagingDirector Column to Empty Table

alter table ntab add ManagingDirector varchar(50);

exec sp_columns ntab;

Ved at bruge koden i liste 3 udfylder vi en ny tabel med 1000 rækker.

-- Listing 3: Add Column to Empty Table
insert into ntab values ('Simplex Technologies','Plot 121 Nova Ridge II, Appolonia City','20201023','Kenneth Igiri');
GO 1000

Derefter tilføjer vi endnu en kolonne TaxIdentityNumber – vi kan gøre det med succes uden tilsyneladende præstationsomkostninger:

-- Listing 4: Add Column to Populated Table

alter table ntab add TaxIdentityNumber varchar(20);

exec sp_columns ntab;

Slip eller tilføj flere kolonner ved hjælp af kommandoen ALTER TABLE

I en enkelt erklæring kan vi også droppe eller tilføje kolonner. Vigtigt:Når vi slipper kolonner fra en tabel med data, mister vi dataene meget hurtigt. Det er bestemt ikke en kommando at lege med i produktionen.

ALTER TABLE-kommandoen er en DDL-kommando (Data Definition Language) svarende til TRUNCATE. Handlingen er ikke fanget i transaktionsloggen, og det er umuligt at rulle den tilbage. Hvis du har grunde til at gøre det i produktionen, bør du have en backup, så du kan falde tilbage til den tidligere tilstand.

-- Listing 5: Drop Column from Table

alter table ntab drop column ManagingDirector, TaxIdentityNumber;

alter table ntab add ManagingDirector varchar(50), TaxIdentityNumber varchar(20);

select * from ntab;

Vigtigt:Når du forsøger at slette en kolonne med et indeks, returnerer den en fejl (se billedet). Først skal du sikkerhedskopiere og slippe indekset.

Brug af GUI – Table Designer

Før vi fortsætter, skal du være opmærksom på, at du skal sikre dig, at du bruger den seneste version af SQL Server Management Studio. Hvis der er uoverensstemmelse mellem databaseversionen og din SSMS-version, får du følgende fejlmeddelelse:

For at ændre tabelstrukturen skal du åbne tabeldesigneren på SSMS:højreklik på tabellen og klik på Design.

Du vil se nfanen tabeloplysninger:

I Table Designer tilføjer vi de kolonnenavne, vi vil tilføje, og specificerer datatyperne og nullbarheden som ønsket.

Når det er gjort, gemmer vi tabellen ved hjælp af en af ​​de tilgængelige muligheder. Se f.eks. den tilgængelige mulighed i SSMS-bjælkemenuen:

Der er én SQL Server Management Studio-indstilling, som kan forhindre lagring af tabellen med nyligt tilføjede kolonner. Du skal muligvis deaktivere denne indstilling:

Værktøjer> Indstillinger> Designere> Tabel- og databasedesignere

I baggrunden udfører SQL Server den samme SQL, som vi viste tidligere (liste 5). Vi udpakkede dette ved hjælp af SQL Profiler. Du kan få de samme data med udvidede begivenheder:

Når vi er færdige, kan vi se de samme resultater som før:

dbForge Studio til SQL Server

dbForge Studio til SQL Server fra Devart-virksomheden tilbyder en robust funktionel grænseflade til interaktion med SQL Server. Da løsningen ligner SSMS, er den nem at betjene. Den forbinder problemfrit til SQL Server-instansen og giver brugeren mulighed for at interagere jævnt med SQL Server-objekter. Du kan downloade ekspresudgaven her .

For at ændre en tabel i dbForge Studio skal du højreklikke på den tabel for at se de detaljerede egenskaber.

Du tilføjer en ny kolonne på samme måde, som du gør i SQL Servers Table Designer. Bemærk dog detaljeniveauet vist for tabellen, inklusive tabellen DDL. Den er meget mere robust end den, der er tilgængelig i SSMS.

dbForge Studio følger de samme regler for tilføjelse af kolonner til tabeller som SQL Server Management Studio. DDL for tabellen opdateres, så snart du tilføjer en kolonne. Du skal dog klikke på GEM for at beholde ændringerne:

Konklusion

Denne artikel demonstrerede de metoder, vi kan bruge til at tilføje kolonner til en eksisterende tabel i SQL Server, uanset om denne tabel indeholder data eller ej.

Vi illustrerede også virkningen af ​​at droppe kolonner, når tabellen har data. Vi påpegede, at ALTER TABLE-kommandoen er en DDL-kommando. Der er ingen logfiler og heller ingen væsentlig effekt på ydeevnen. Brug Table Designer til at indsætte kolonner mellem eksisterende kolonner i stedet for i slutningen af ​​kolonnelisten.

Vi har også gennemgået Devart dbForge Studio 2019-funktionaliteten. Den har en meget mere robust og bekvem grænseflade til denne opgave og andre lignende opgaver. Det kan også tilbyde mange andre muligheder for at gøre SQL Server-databaseadministrationen meget nemmere.

Referencer

  1. Ydeevnepåvirkning af ALTER TABLE-kommandoer
  2. Ændre tabel i T-SQL
  3. Tabeldesignerfunktion i dbForge Studio til SQL Server

  1. mysql SQL:specifik element skal først være og derefter sortere resten af ​​emnerne

  2. Sådan returneres dublerede nøgler fra et JSON-dokument i SQL Server

  3. Hvad er år 2038-problemet?

  4. Inner join vs Where