Inleiding
Een tabel is een tweedimensionale logische structuur en het fundamentele middel voor het opslaan van gegevens in relationele databasebeheersystemen. Het 'rij- en kolom'-formaat lijkt veel op de organisatie van de spreadsheet.
Elk nieuw record dat in een tabel wordt geïntroduceerd, is een rij (ook wel record of tupel genoemd), terwijl rijen zijn gegroepeerd in een eindige reeks kolommen (ook wel velden of attributen genoemd). Elke kolom heeft een naam en gegevenstype en dient als referentie voor het weergeven van resultatensets bij het opvragen van gegevens uit relationele databasesystemen.
In dit artikel onderzoeken we de huidige opties waarmee we nieuwe kolommen kunnen toevoegen aan een bestaande tabel in de SQL Server-database. De use case kan zich bij veel gelegenheden voordoen. Dit gebeurt met name wanneer er updates voor een applicatie zijn en deze vereisen dat er nieuwe kolommen worden toegevoegd.
Een tabel maken
Laten we, om onze korte reeks experimenten te beginnen, een kleine tabel maken met vier kolommen met basisinformatie over een bedrijf:
-- 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
);
Een enkele kolom toevoegen
Een enkele kolom toevoegen aan het ntab tabel, voeren we de code uit die in Listing 2 wordt gegeven. Het resultaat is een tabel met vijf kolommen, zoals weergegeven in Afbeelding 1. We hebben deze metadata over onze tabel gegenereerd met de sp_columns opgeslagen procedure.
-- Listing 2: Add ManagingDirector Column to Empty Table
alter table ntab add ManagingDirector varchar(50);
exec sp_columns ntab;
Met behulp van de code in Listing 3 vullen we een nieuwe tabel met 1000 rijen.
-- 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
Vervolgens voegen we nog een kolom toe TaxIdentityNumber – we kunnen dit met succes doen zonder duidelijke prestatieoverhead:
-- Listing 4: Add Column to Populated Table
alter table ntab add TaxIdentityNumber varchar(20);
exec sp_columns ntab;
Meerdere kolommen neerzetten of toevoegen met behulp van het ALTER TABLE-commando
In een enkele verklaring kunnen we ook kolommen neerzetten of toevoegen. Belangrijk:wanneer we kolommen uit een tabel met gegevens verwijderen, verliezen we de gegevens zeer snel. Het is zeker geen commando om mee te spelen in de productie.
De opdracht ALTER TABLE is een DDL-opdracht (Data Definition Language), vergelijkbaar met TRUNCATE. De bewerking wordt niet vastgelegd in het transactielogboek en het is onmogelijk om deze terug te draaien. Als je redenen hebt om het in productie te doen, zou je een back-up moeten hebben zodat je terug kunt vallen naar de vorige staat.
-- 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;
Belangrijk:wanneer u probeert een kolom met een index te verwijderen, wordt een fout geretourneerd (zie de afbeelding). Eerst moet u een back-up maken van de Index en deze neerzetten.
De GUI gebruiken – Table Designer
Houd er rekening mee dat u ervoor moet zorgen dat u de nieuwste versie van SQL Server Management Studio gebruikt voordat we verder gaan. Als er een mismatch is tussen de databaseversie en uw SSMS-versie, krijgt u de volgende foutmelding:
Om de tabelstructuur te wijzigen, opent u de Table Designer op SSMS:klik met de rechtermuisknop op de tabel en klik op Ontwerpen.
U ziet de ntab tafeldetails:
In Table Designer voegen we de namen van de kolommen toe die we willen toevoegen en specificeren we de gegevenstypen en de nullabiliteit naar wens.
Als we klaar zijn, slaan we de tabel op met een van de beschikbare opties. Raadpleeg bijvoorbeeld de optie die beschikbaar is in het SSMS-balkmenu:
Er is één SQL Server Management Studio-instelling die het opslaan van de tabel met nieuw toegevoegde kolommen mogelijk verhindert. Mogelijk moet u deze instelling uitschakelen:
Extra> Opties> Ontwerpers> Tabel- en databaseontwerpers
Op de achtergrond voert SQL Server dezelfde SQL uit die we eerder lieten zien (lijst 5). We hebben dit geëxtraheerd met behulp van SQL Profiler. U kunt dezelfde gegevens krijgen met Extended Events:
Als we klaar zijn, kunnen we dezelfde resultaten zien als voorheen:
dbForge Studio voor SQL Server
dbForge Studio voor SQL Server van het bedrijf Devart biedt een robuuste functionele interface voor interactie met SQL Server. Omdat de oplossing vergelijkbaar is met SSMS, is deze eenvoudig te bedienen. Het maakt naadloos verbinding met de SQL Server-instantie en stelt de gebruiker in staat soepel te communiceren met SQL Server-objecten. Je kunt de express-editie hier downloaden .
Om een tabel in dbForge Studio te wijzigen, klikt u met de rechtermuisknop op die tabel om de gedetailleerde eigenschappen te bekijken.
U voegt op dezelfde manier een nieuwe kolom toe als in de Table Designer van SQL Server. Let echter op het detailniveau dat voor de tabel wordt weergegeven, inclusief de tabel DDL. Het is veel robuuster dan dat beschikbaar is in SSMS.
dbForge Studio volgt dezelfde regels voor het toevoegen van kolommen aan tabellen als SQL Server Management Studio. De DDL voor de tabel wordt bijgewerkt zodra u een kolom toevoegt. U moet echter op OPSLAAN klikken om de wijzigingen te bewaren:
Conclusie
Dit artikel demonstreerde de methoden die we kunnen gebruiken om kolommen toe te voegen aan een bestaande tabel in SQL Server, of die tabel nu gegevens bevat of niet.
We hebben ook de impact geïllustreerd van het laten vallen van kolommen wanneer de tabel gegevens bevat. We wezen erop dat het ALTER TABLE-commando een DDL-commando is. Er zijn geen logboeken en ook geen significante invloed op de prestaties. Gebruik Table Designer om kolommen in te voegen tussen bestaande kolommen in plaats van aan het einde van de kolomlijst.
We hebben ook de functionaliteit van Devart dbForge Studio 2019 beoordeeld. Het heeft een veel robuustere en handigere interface voor deze taak en andere soortgelijke taken. Het kan ook veel andere mogelijkheden bieden om het beheer van de SQL Server-database veel gemakkelijker te maken.
Referenties
- Prestatie-impact van ALTER TABLE-opdrachten
- Tabel wijzigen in T-SQL
- Tabelontwerpfunctie in dbForge Studio voor SQL Server