Introduktion
En tabell är en tvådimensionell logisk struktur och det grundläggande sättet att lagra data i relationsdatabashanteringssystem. Dess "rad och kolumn"-format påminner mycket om kalkylarkets organisation.
Varje ny post som introduceras i en tabell är en rad (även kallad en post eller tuppel), medan rader grupperas i en ändlig uppsättning kolumner (även kallade fält eller attribut). Varje kolumn har ett namn och en datatyp, och den fungerar som en referens för att visa resultatuppsättningar vid sökning av data från relationsdatabassystem.
I den här artikeln utforskar vi de nuvarande alternativen som låter oss lägga till nya kolumner till en befintlig tabell i SQL Server-databasen. Användningsfallet kan uppstå vid många tillfällen. Det händer särskilt när det finns uppdateringar för en applikation och de kräver att nya kolumner läggs till.
Skapa en tabell
För att börja vår korta uppsättning experiment, låt oss skapa en liten tabell med fyra kolumner som innehåller grundläggande information om något företag:
-- 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
);
Lägg till en enskild kolumn
För att lägga till en enda kolumn i ntab tabell, exekverar vi koden som tillhandahålls i lista 2. Resultatet är en tabell med fem kolumner, som visas i figur 1. Vi genererade denna metadata om vår tabell med sp_columns lagrad procedur.
-- Listing 2: Add ManagingDirector Column to Empty Table
alter table ntab add ManagingDirector varchar(50);
exec sp_columns ntab;
Med koden i lista 3 fyller vi i en ny tabell med 1000 rader.
-- 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
Sedan lägger vi till ytterligare en kolumn TaxIdentityNumber – vi kan göra det framgångsrikt utan uppenbar prestandaoverhead:
-- Listing 4: Add Column to Populated Table
alter table ntab add TaxIdentityNumber varchar(20);
exec sp_columns ntab;
Släpp eller lägg till flera kolumner med kommandot ALTER TABLE
I ett enda uttalande kan vi också släppa eller lägga till kolumner. Viktigt:När vi släpper kolumner från en tabell med data förlorar vi data mycket snabbt. Det är verkligen inte ett kommando att leka med i produktionen.
Kommandot ALTER TABLE är ett DDL-kommando (Data Definition Language) som liknar TRUNCATE. Operationen registreras inte i transaktionsloggen och det är omöjligt att återställa den. Om du har skäl att göra det i produktionen bör du ha en backup så att du kan falla tillbaka till det tidigare tillståndet.
-- 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;
Viktigt:När du försöker släppa en kolumn som har ett index, returnerar den ett fel (se bilden). Först måste du säkerhetskopiera och släppa indexet.
Använda GUI – Table Designer
Innan vi fortsätter, notera att du måste se till att du använder den senaste versionen av SQL Server Management Studio. Om det finns en obalans mellan databasversionen och din SSMS-version får du följande felmeddelande:
För att ändra tabellstrukturen, öppna tabelldesignern på SSMS:högerklicka på tabellen och klicka på Design.
Du kommer att se n-fliken tabellinformation:
I Table Designer lägger vi till kolumnernas namn som vi vill lägga till och specificerar datatyperna och nullbarheten efter önskemål.
När vi är klara sparar vi tabellen med något av de tillgängliga alternativen. Se till exempel det tillgängliga alternativet på SSMS-fältmenyn:
Det finns en SQL Server Management Studio-inställning som kan förhindra att tabellen sparas med nyligen tillagda kolumner. Du kan behöva inaktivera denna inställning:
Verktyg> Alternativ> Designers> Tabell- och databasdesigners
I bakgrunden kör SQL Server samma SQL som vi visade tidigare (lista 5). Vi extraherade detta med SQL Profiler. Du kan få samma data med Extended Events:
När vi är klara kan vi se samma resultat som tidigare:
dbForge Studio för SQL Server
dbForge Studio för SQL Server från företaget Devart erbjuder ett robust funktionellt gränssnitt för interaktion med SQL Server. Eftersom lösningen liknar SSMS är den lätt att använda. Den ansluter sömlöst till SQL Server-instansen och tillåter användaren att smidigt interagera med SQL Server-objekt. Du kan ladda ner expressutgåvan här .
För att ändra en tabell i dbForge Studio, högerklicka på den tabellen för att se de detaljerade egenskaperna.
Du lägger till en ny kolumn på samma sätt som du gör i SQL Servers tabelldesigner. Notera dock detaljnivån som visas för tabellen, inklusive tabellen DDL. Den är mycket mer robust än den som finns i SSMS.
dbForge Studio följer samma regler för att lägga till kolumner i tabeller som SQL Server Management Studio. DDL för tabellen uppdateras så snart du lägger till en kolumn. Du måste dock klicka på SPARA för att behålla ändringarna:
Slutsats
Den här artikeln visade metoderna vi kan använda för att lägga till kolumner i en befintlig tabell i SQL Server, oavsett om den tabellen innehåller data eller inte.
Vi illustrerade också effekten av att ta bort kolumner när tabellen har data. Vi påpekade att kommandot ALTER TABLE är ett DDL-kommando. Det finns inga loggar och ingen betydande prestandapåverkan heller. Använd Table Designer för att infoga kolumner mellan befintliga kolumner istället för i slutet av kolumnlistan.
Vi har också granskat Devart dbForge Studio 2019-funktionaliteten. Den har ett mycket mer robust och bekvämt gränssnitt för denna uppgift och andra liknande uppgifter. Det kan också erbjuda många andra funktioner för att göra SQL Server-databashanteringen mycket enklare.
Referenser
- Prestandans inverkan av ALTER TABLE-kommandon
- Ändra tabell i T-SQL
- Table Designer-funktion i dbForge Studio för SQL Server