SQLShack (Deutsch)
In diesem Artikel werden wir untersucht den Prozess der SQL-Löschspalte aus einer vorhandenen Tabelle. Wir werden auch die Auswirkungen des Entfernens einer Spalte mit definierten Einschränkungen und Objekten verstehen.
Einführung
In einer relationalen Datenbank verwenden wir die Normalisierung des Schemaentwurfs und teilen die großen Tabellen auf in kleinere Tische. Es hilft, die Redundanz und Abhängigkeit von Daten zu reduzieren. Im folgenden Bild sind mehrere Normalisierungsformen angegeben.
In diesem Artikel werden keine Normalisierungstechniken behandelt. Sie können auf Artikel – Was ist die Datenbanknormalisierung in SQL Server verweisen?
Angenommen, Sie haben eine vorhandene Tabelle mit mehreren Spalten. Diese Tabelle enthält bestimmte Spalten, die derzeit nicht relevant sind. Sie benötigen diese Spalten nicht. Betrachten Sie beispielsweise eine Produkttabelle, und in dieser Tabelle haben Sie eine Spalte. Wir haben einen separaten Mechanismus zum Erfassen von Produktfeedback implementiert. Diese Spalte ist derzeit nicht relevant.
Lassen Sie uns verstehen, warum es wichtig ist, unerwünschte Spalten aus der SQL-Tabelle zu entfernen. Unten ist meine Tabellenstruktur und wir müssen eine Spalte mit dem Datentyp varchar (2000) entfernen.
Diese Tabelle enthält 4 Millionen Zeilen, und der Benutzer hat den Befehl ausgeführt, um alle Datensätze aus dieser Tabelle auszuwählen.
1
|
SELECT * FROM Products;
|
Erfassen Sie den tatsächlichen Ausführungsplan (drücken Sie STRG + M). dieser Abfrage zusammen mit der Client-Statistik (drücken Sie Umschalt + Alt + S).
Führen Sie in einem anderen Abfragefenster die Abfrage ohne Spalte aus und erfassen Sie die ähnlichen Statistiken.
1
2
3
4
|
SELECT
,
,
FROM ..
|
Vergleichen wir den tatsächlichen Ausführungsplan beider Abfragen in SSMS. Sie können feststellen, dass eine Abfrage ohne Spalte eine verbesserte Leistung bietet. Sie sehen niedrige Werte für kompilierten Speicher, CPU-Zeit und reduzierte Wartezeiten.
Der Abfrageoptimierer und das SQL-Datenbankmodul müssen zusätzliche Anstrengungen für diese Spalte unternehmen, obwohl es nicht sinnvoll ist, Daten daraus abzurufen.
Vergleichen Sie auf ähnliche Weise die Client-Statistiken beider Abfragen. Sie können eine signifikante Reduzierung der vom Server empfangenen TDS-Pakete feststellen. An den Client gesendete Bytes, vom Server empfangene Bytes, Client-Verarbeitungszeit und Gesamtverarbeitungszeit für die Abfrage, die die Spalte nicht enthält. Es kann Ihnen auch helfen, die Netzwerkbandbreite zu sparen.
Hier sollten Sie die Datenbank bereinigen und die unerwünschten Spalten entfernen, um auch die Abfrageleistung zu verbessern.
Lassen Sie uns untersuchen, wie eine Spalte aus einer vorhandenen SQL-Tabelle entfernt wird.
SQL DELETE-Spalte mit dem SSMS-Objektexplorer
Wir können eine Spalte mit dem grafischen Benutzer entfernen GUI-Methode (Interface) in SQL Server. Stellen Sie eine Verbindung zu einer Instanz in SSMS her und erweitern Sie die Datenbanken. Suchen Sie in der jeweiligen Datenbank die bestimmte Tabelle und erweitern Sie die Spalten.
Es werden alle Spalten der bestimmten Tabelle angezeigt. Klicken Sie mit der rechten Maustaste auf die Spalte, die Sie entfernen möchten, und klicken Sie auf Löschen (siehe folgendes Bild).
Es wird a geöffnet Fenster und listet den zu entfernenden Spaltennamen auf. Klicken Sie auf OK, um die Spalte aus der Tabelle zu entfernen.
SQL DELETE-Spalten mit dem SSMS-Tabellen-Designer
Wir verwenden den Tabellen-Designer in SSMS, um erforderliche Spalten, Datentypen und Spalteneigenschaften wie Primärschlüssel und Identitätsspalten zu definieren. Wir können damit auch eine Spalte aus einer vorhandenen Tabelle löschen.
Klicken Sie mit der rechten Maustaste auf die Tabelle und gehen Sie zu Design.
Zeigt alle Spalten einer bestimmten Tabelle an.
Klicken Sie mit der rechten Maustaste auf die linke Seite einer Spalte, und Sie erhalten die Option Spalte löschen. Klicken Sie darauf, um eine Spalte zu löschen.
Sie können sie entweder durch Drücken von STRG + S speichern oder den Tabellen-Designer schließen und Klicken Sie im folgenden Fenster auf Ja.
SQL DELETE-Spalten mit dem T-SQL-Tabellen-Designer
Mit dem Befehl Alter table können Sie auch eine Spalte entfernen. Die Syntax ist einfach zu bedienen. Der folgende Befehl entfernt die Spalte aus der Tabelle.
1
2
3
4
|
USE
GO
ALTER TABLE. DROP COLUMN
GO
|
- Geben Sie zunächst den Tabellennamen an, der die zu entfernende Spalte enthält.
- Zweitens geben Sie den Namen der Spalte an, die gelöscht werden soll.
Sie können auch mehrere entfernen Spalten in einem einzelnen Befehl „Tabelle ändern“, aber alle Spalten sollten zu einer einzelnen Tabelle gehören. Dieser Befehl entfernt und spaltet in einem einzigen Befehl.
1
2
3
4
|
USE
GO
ALTER TABELLE . DROP COLUMN,
GO
|
Die SQL DELETE-Spalte enthält CHECK-Einschränkungen
Wir verwenden CHECK-Einschränkungen, um den Wertebereich in einer Spalte zu begrenzen. Angenommen, Sie haben eine Spalte mit CHECK-Einschränkungen.
Wir möchten die Spalte entfernen, aber für diese Spalte gilt eine CHECK-Einschränkung. Versuchen wir es zu entfernen.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Sie erhalten eine Fehlermeldung, dass Objekte CK_Price_Check von der Spalte abhängig sind.
Wir können diese Spalte erst entfernen, wenn sie abhängig ist Objekt darin. Um diese Spalte zu entfernen, entfernen Sie zuerst die Abhängigkeit und löschen Sie dann die Spalte.
Versuchen Sie, eine Spalte mit CHECK-Einschränkung mithilfe des Tabellen-Designers zu entfernen. Öffnen Sie den Tischdesigner für den Tisch.
Klicken Sie mit der rechten Maustaste auf die Spalte und überprüfen Sie, ob für diese Tabelle CHECK-Einschränkungen vorhanden sind.
zeigt die CHECK-Einschränkungen gemäß dem folgenden Bild.
Klicken Sie nun mit der rechten Maustaste auf die Spalte und löschen Sie die Spalte. Es wird keine Fehlermeldung ausgegeben.
Schließen Sie das Designerfenster und Sie werden aufgefordert, auf Ja zu klicken, um die Änderungen zu speichern.
Sie erhalten eine Validierungswarnmeldung und eine Meldung zur Prüfbedingung.
Klicken Sie auf Ja, und die Tabelle kann nicht geändert werden. Die Spalte kann nicht entfernt werden, da die CHECK-Einschränkung davon abhängig ist.
Wir können die Spalte nicht mit dem Tabellen-Designer entfernen, wenn die Spalte hat Abhängigkeiten von anderen Objekten.
SQL DELETE-Spalte mit definierter SQL-Ansicht
Erstellen Sie eine SQL-Ansicht, um alle Datensätze aus der Tabelle auszuwählen.
1
2
3
|
Ansicht erstellen vw_ProductSales
als
SELECT * from ProductSales
|
Diese Ansicht hängt von allen Spalten der Tabelle ab. Löschen Sie die Spalte mit dem Befehl Tabelle ändern.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Bei der Ausführung der Abfrage wird keine Fehlermeldung angezeigt. Versuchen wir, über die Ansicht auf die Datensätze zuzugreifen.
1
2
|
SELECT *
FROM vw_ProductSales;
|
Wir erhalten eine Fehlermeldung, da die Tabelle keine enthält die Kolumne. Diese Spalte war verfügbar, nachdem wir die SQL-Ansicht erstellt haben.
-
Hinweis: Wir sollten die Objektabhängigkeiten überprüfen, bevor wir eine Spalte löschen. Dadurch werden die Probleme behoben, mit denen wir später konfrontiert werden.
Schlussfolgerung
In diesem Artikel haben wir uns mit SQL vertraut gemacht. Löschen einer Spalte aus einer vorhandenen Tabelle mithilfe von verschiedene Methoden. Wir sollten uns all dieser Methoden bewusst sein. Sie sollten in der Produktionsumgebung vorsichtig sein, bevor Sie Spalten entfernen. Sie sollten alle Abhängigkeiten entfernen und ordnungsgemäß planen.
- Autor
- Letzte Beiträge
Mit seiner 50-teiligen Serie zu SQL Server Always On Availability Groups ist er der Schöpfer einer der größten kostenlosen Online-Artikelsammlungen zu einem einzigen Thema. Aufgrund seines Beitrags zur SQL Server-Community wurde er mit verschiedenen Preisen ausgezeichnet, darunter der renommierte „Beste Autor des Jahres“ in den Jahren 2020 und 2021 bei SQLShack.
Raj ist immer an neuen Herausforderungen interessiert, wenn Sie also Beratung benötigen Hilfe zu jedem Thema, das in seinen Schriften behandelt wird, kann unter [email protected] erreicht werden.
Alle Beiträge von Rajendra Gupta anzeigen
- Durchführen kleinerer und größerer Versions-Upgrades für AWS RDS SQL Server – 29. Januar 2021
- Bereitstellen von AWS RDS PostgreSQL-Instanzen – 27. Januar 2021
- Migrieren Ihrer lokalen SQL-Datenbanken zu AWS RDS SQL Server mithilfe von AWS DMS – 25. Januar , 2021