Einführung
Eine Tabelle ist eine zweidimensionale logische Struktur und das grundlegende Mittel zum Speichern von Daten in relationalen Datenbankverwaltungssystemen. Sein „Zeilen- und Spalten“-Format ist der Organisation der Tabellenkalkulation sehr ähnlich.
Jeder neue Datensatz, der in eine Tabelle eingeführt wird, ist eine Zeile (auch als Datensatz oder Tupel bezeichnet), während Zeilen in einem endlichen Satz von Spalten (auch als Felder oder Attribute bezeichnet) gruppiert werden. Jede Spalte hat einen Namen und einen Datentyp und dient als Referenz für die Anzeige von Ergebnismengen bei der Abfrage von Daten aus relationalen Datenbanksystemen.
In diesem Artikel untersuchen wir die aktuellen Optionen, mit denen wir neue Spalten zu einer vorhandenen Tabelle in der SQL Server-Datenbank hinzufügen können. Der Anwendungsfall kann bei vielen Gelegenheiten auftreten. Dies passiert insbesondere, wenn es Updates für eine Anwendung gibt, die das Hinzufügen neuer Spalten erfordern.
Erstelle eine Tabelle
Lassen Sie uns zu Beginn unserer kurzen Experimente eine kleine Tabelle mit vier Spalten erstellen, die grundlegende Informationen über ein Unternehmen enthält:
-- 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
);
Eine einzelne Spalte hinzufügen
Zum Hinzufügen einer einzelnen Spalte zur ntab table führen wir den in Listing 2 bereitgestellten Code aus. Das Ergebnis ist eine fünfspaltige Tabelle, wie in Abbildung 1 gezeigt. Diese Metadaten über unsere Tabelle haben wir mit den sp_columns generiert gespeicherte Prozedur.
-- Listing 2: Add ManagingDirector Column to Empty Table
alter table ntab add ManagingDirector varchar(50);
exec sp_columns ntab;
Mit dem Code in Listing 3 füllen wir eine neue Tabelle mit 1000 Zeilen.
-- 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
Dann fügen wir eine weitere Spalte TaxIdentityNumber hinzu – wir können dies erfolgreich ohne offensichtlichen Mehraufwand für die Leistung tun:
-- Listing 4: Add Column to Populated Table
alter table ntab add TaxIdentityNumber varchar(20);
exec sp_columns ntab;
Mehrere Spalten löschen oder hinzufügen mit dem ALTER TABLE-Befehl
In einer einzigen Anweisung können wir auch Spalten löschen oder hinzufügen. Wichtig:Wenn wir Spalten aus einer Tabelle mit Daten löschen, verlieren wir die Daten sehr schnell. Es ist sicherlich kein Befehl, mit dem man in der Produktion herumspielen kann.
Der ALTER TABLE-Befehl ist ein DDL-Befehl (Data Definition Language) ähnlich wie TRUNCATE. Der Vorgang wird nicht im Transaktionsprotokoll erfasst und kann nicht rückgängig gemacht werden. Wenn Sie Gründe haben, dies in der Produktion zu tun, sollten Sie ein Backup haben, damit Sie auf den vorherigen Stand zurückgreifen können.
-- 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;
Wichtig:Wenn Sie versuchen, eine Spalte mit einem Index zu löschen, wird ein Fehler zurückgegeben (siehe Abbildung). Zuerst müssen Sie den Index sichern und löschen.
GUI verwenden – Tabellendesigner
Bevor wir fortfahren, beachten Sie, dass Sie sicherstellen müssen, dass Sie die neueste Version von SQL Server Management Studio verwenden. Wenn die Datenbankversion und Ihre SSMS-Version nicht übereinstimmen, erhalten Sie die folgende Fehlermeldung:
Um die Tabellenstruktur zu ändern, öffnen Sie den Tabellen-Designer auf SSMS:Klicken Sie mit der rechten Maustaste auf die Tabelle und klicken Sie auf Design.
Sie sehen das ntab Tabellendetails:
Im Tabellen-Designer fügen wir die Namen der Spalten hinzu, die wir hinzufügen möchten, und geben die Datentypen und die Nullzulässigkeit wie gewünscht an.
Sobald dies erledigt ist, speichern wir die Tabelle mit einer der verfügbaren Optionen. Sehen Sie sich beispielsweise die im SSMS-Leistenmenü verfügbare Option an:
Es gibt eine SQL Server Management Studio-Einstellung, die das Speichern der Tabelle mit neu hinzugefügten Spalten verhindern kann. Möglicherweise müssen Sie diese Einstellung deaktivieren:
Extras> Optionen> Designer> Tabellen- und Datenbankdesigner
Im Hintergrund führt SQL Server dasselbe SQL aus, das wir zuvor gezeigt haben (Listing 5). Wir haben dies mit SQL Profiler extrahiert. Sie können die gleichen Daten mit erweiterten Ereignissen erhalten:
Sobald wir fertig sind, können wir die gleichen Ergebnisse wie zuvor sehen:
dbForge Studio für SQL Server
dbForge Studio for SQL Server der Firma Devart bietet eine robuste funktionale Schnittstelle für die Interaktion mit SQL Server. Da die Lösung SSMS ähnlich ist, ist sie einfach zu bedienen. Es verbindet sich nahtlos mit der SQL Server-Instanz und ermöglicht dem Benutzer eine reibungslose Interaktion mit SQL Server-Objekten. Sie können die Express-Edition hier herunterladen .
Um eine Tabelle in dbForge Studio zu ändern, klicken Sie mit der rechten Maustaste auf diese Tabelle, um die detaillierten Eigenschaften anzuzeigen.
Sie fügen eine neue Spalte auf die gleiche Weise hinzu wie im Tabellen-Designer von SQL Server. Beachten Sie jedoch die für die Tabelle angezeigte Detailebene, einschließlich der Tabellen-DDL. Es ist viel robuster als das in SSMS verfügbare.
dbForge Studio folgt den gleichen Regeln zum Hinzufügen von Spalten zu Tabellen wie SQL Server Management Studio. Die DDL für die Tabelle wird aktualisiert, sobald Sie eine Spalte hinzufügen. Sie müssen jedoch auf SPEICHERN klicken, um die Änderungen beizubehalten:
Schlussfolgerung
Dieser Artikel demonstrierte die Methoden, die wir verwenden können, um Spalten zu einer vorhandenen Tabelle in SQL Server hinzuzufügen, unabhängig davon, ob diese Tabelle Daten enthält oder nicht.
Wir haben auch die Auswirkungen des Löschens von Spalten veranschaulicht, wenn die Tabelle Daten enthält. Wir haben darauf hingewiesen, dass der ALTER TABLE-Befehl ein DDL-Befehl ist. Es gibt keine Protokolle und auch keine signifikanten Auswirkungen auf die Leistung. Verwenden Sie den Tabellen-Designer, um Spalten zwischen vorhandenen Spalten einzufügen, anstatt am Ende der Spaltenliste.
Wir haben auch die Funktionalität von Devart dbForge Studio 2019 überprüft. Es hat eine viel robustere und bequemere Schnittstelle für diese Aufgabe und andere ähnliche Aufgaben. Es kann auch viele andere Funktionen bieten, um die Verwaltung der SQL Server-Datenbank erheblich zu vereinfachen.
Referenzen
- Leistungsauswirkung von ALTER TABLE-Befehlen
- Tabelle in T-SQL ändern
- Tabellen-Designer-Funktion in dbForge Studio für SQL Server