Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Analytics Platform System (PDW)
SQL-Datenbank in Microsoft Fabric
Note
Der Lernpfad Erste Schritte für Abfragen mit Transact-SQL bietet ausführlichere Inhalte sowie praktische Beispiele.
In dieser Lektion erfahren Sie, wie Sie eine Datenbank erstellen, eine Tabelle in der Datenbank erstellen und dann auf die Daten in der Tabelle zugreifen und diese ändern können. Da es sich bei dieser Lektion um eine Einführung in die Verwendung von Transact-SQL handelt, werden viele der für diese Anweisungen verfügbaren Optionen nicht verwendet oder beschrieben.
Transact-SQL-Anweisungen können wie folgt geschrieben und an die Datenbank-Engine übertragen werden:
Mithilfe von SQL Server Management Studio. In diesem Lernprogramm wird davon ausgegangen, dass Sie Management Studio verwenden, aber auch Management Studio Express verwenden können, das als kostenloser Download im Microsoft Download Center verfügbar ist.
Mithilfe des Sqlcmd-Hilfsprogramms .
Durch Herstellen der Verbindung über eine von Ihnen erstellte Anwendung.
Der Code wird in der Datenbank-Engine immer auf gleiche Weise und mit denselben Berechtigungen ausgeführt, unabhängig davon, wie Sie die Codeanweisungen übermitteln.
Damit Sie Transact-SQL-Anweisungen in Management Studio ausführen können, öffnen Sie Management Studio und stellen eine Verbindung mit einer Instanz von SQL Server-Datenbank-Engine her.
Prerequisites
Zur Durchführung dieses Tutorials benötigen Sie SQL Server Management Studio und Zugriff auf eine SQL Server-Instanz.
- Installieren Sie SQL Server Management Studio.
Wenn Sie keine SQL Server-Instanz haben, erstellen Sie eine. Wählen Sie dazu aus den folgenden Links Ihre Plattform aus. Wenn Sie die SQL-Authentifizierung wählen, verwenden Sie Ihre SQL Server-Anmeldeinformationen.
- Windows: Laden Sie die SQL Server 2022 Developer Edition herunter.
- Linux: Schnellstart: Ausführen von SQL Server Linux-Containerimages mit Docker.
Erstellen einer Datenbank
Wie viele Transact-SQL-Anweisungen umfasst auch die CREATE DATABASE-Anweisung einen erforderlichen Parameter: den Namen der Datenbank.
CREATE DATABASE umfasst zudem viele optionale Parameter wie z. B. den Speicherort auf dem Datenträger, an dem Sie die Datenbankdateien ablegen möchten. Wenn Sie CREATE DATABASE ohne optionale Parameter ausführen, werden von SQL Server Standardwerte für viele dieser Parameter verwendet.
Geben Sie in einem Fenster des Abfrage-Editors den folgenden Code ein, aber führen Sie ihn nicht aus:
CREATE DATABASE TestData GOVerwenden Sie den Zeiger, um die Wörter
CREATE DATABASEauszuwählen, und drücken Sie dann F1. DerCREATE DATABASE-Artikel wird geöffnet. Sie können dieses Verfahren verwenden, um die vollständige Syntax fürCREATE DATABASEund für die anderen in diesem Tutorial verwendeten Anweisungen zu finden.Drücken Sie im Abfrage-Editor F5 , um die Anweisung auszuführen und eine Datenbank mit Namen
TestDatazu erstellen.
Wenn Sie eine Datenbank erstellen, wird von SQL Server eine Kopie der model -Datenbank erstellt und die Kopie in den Namen der Datenbank umbenannt. Dieser Vorgang dauert nur einige Sekunden, es sei denn, Sie geben eine große Anfangsgröße der Datenbank als optionalen Parameter an.
Note
Das Schlüsselwort GO trennt Anweisungen, wenn mehrere Anweisungen in einem einzigen Batch übermittelt werden.
GO ist optional, wenn der Batch nur eine Anweisung enthält.
Erstellen einer Tabelle
Gilt für:SQL Server
Azure SQL-Datenbank
Azure Synapse Analytics
Analytics Platform System (PDW)
Zum Erstellen einer Tabelle müssen Sie einen Tabellennamen sowie die Namen und Datentypen jeder Spalte in der Tabelle angeben. Außerdem empfiehlt es sich, anzugeben, ob Nullwerte in jeder Spalte zulässig sind. Zum Erstellen der Tabelle müssen Sie über die Berechtigung CREATE TABLE verfügen sowie über die Berechtigung ALTER SCHEMA für das Schema, das die Tabelle enthalten wird. Die feste Datenbankrolle db_ddladmin umfasst die folgenden Berechtigungen.
Die meisten Tabellen verfügen über einen Primärschlüssel, der sich aus einer oder mehreren Spalten der Tabelle zusammensetzt. Ein Primärschlüssel ist immer eindeutig. Die Datenbank-Engine erzwingt die Einschränkung, dass ein Primärschlüsselwert in der Tabelle nicht wiederholt werden kann.
Eine Liste der Datentypen und Links für eine Beschreibung der einzelnen Datentypen finden Sie unter "Datentypen".
Note
Datenbank-Engine kann mit oder ohne Beachtung der Groß-/Kleinschreibung installiert werden. Wurde Datenbank-Engine so installiert, dass die Groß-/Kleinschreibung beachtet wird, müssen Objektnamen immer die gleiche Groß-/Kleinschreibung aufweisen. Beispielsweise unterscheidet sich eine Tabelle namens OrderData von einer Tabelle namens ORDERDATA. Wurde Datenbank-Engine so installiert, dass die Groß-/Kleinschreibung nicht beachtet wird, bezeichnen diese beiden Tabellennamen die gleiche Tabelle, und der Name kann nur einmal verwendet werden.
Ändern der Verbindung des Abfrage-Editors in die Datenbank TestData
Geben Sie in einem Abfrage-Editorfenster den folgenden Code ein, und führen Sie ihn aus, um die Verbindung in die TestData -Datenbank zu ändern.
USE TestData
GO
Erstellen der Tabelle
Geben Sie in einem Abfrage-Editorfenster den folgenden Code ein, und führen Sie ihn aus, um eine Tabelle namens Products zu erstellen. Die Spalten in der Tabelle heißen ProductID, ProductName, Priceund ProductDescription. Die ProductID -Spalte ist der Primärschlüssel der Tabelle.
int, varchar(25), moneyund varchar(max) sind Datentypen. Nur die Spalten Price und ProductionDescription dürfen keine Daten enthalten, wenn eine Zeile eingefügt oder geändert wird. Diese Anweisung enthält ein optionales Element (dbo.), das als Schema bezeichnet wird. Das Schema ist das Datenbankobjekt, das die Tabelle besitzt. Wenn Sie administrator sind, dbo ist das Standardschema.
dbo steht für Datenbankbesitzer (database owner, dbo).
CREATE TABLE dbo.Products
(ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription varchar(max) NULL)
GO
Einfügen und Aktualisieren von Daten in einer Tabelle
Nachdem Sie die Tabelle erstellt haben, können Sie Mithilfe der Products Anweisung Daten in die Tabelle INSERT einfügen. Nachdem die Daten eingefügt wurden, ändern Sie den Inhalt einer Zeile mithilfe einer UPDATE Anweisung. Sie verwenden die WHERE Klausel der UPDATE Anweisung, um die Aktualisierung auf eine einzelne Zeile zu beschränken. Durch die vier Anweisungen werden die folgenden Daten eingegeben.
| ProductID | ProductName | Price | ProductDescription |
|---|---|---|---|
| 1 | Clamp | 12.48 | Workbench-Klemme |
| 50 | Screwdriver | 3.17 | Flacher Kopf |
| 75 | Reifenbalken | Werkzeug zum Wechseln von Reifen. | |
| 3000 | 3 mm Bracket | 0.52 |
Die grundlegende Syntax lautet: INSERT, Tabellenname, Spaltenliste VALUESund dann eine Liste der einzufügenden Werte. Die beiden Bindestriche vor einer Zeile geben an, dass es sich bei der Zeile um einen Kommentar handelt, der vom Compiler ignoriert wird. In diesem Fall wird im Kommentar eine zulässige Variante der Syntax beschrieben.
Einfügen von Daten in eine Tabelle
Führen Sie die folgende Anweisung aus, um eine Zeile in die in der vorhergehenden Aufgabe erstellte
Products-Tabelle einzufügen.-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GOWenn der Einfügevorgang erfolgreich ist, fahren Sie mit dem nächsten Schritt fort.
Wenn das Einfügen fehlschlägt, liegt dies möglicherweise daran, dass die
ProductTabelle bereits eine Zeile mit dieser Produkt-ID enthält. Löschen Sie alle Zeilen in der Tabelle, und wiederholen Sie den vorherigen Schritt, um fortfahren zu können. Mit TRUNCATE TABLE werden alle Zeilen in der Tabelle gelöscht.Führen Sie den folgenden Befehl aus, um alle Zeilen in der Tabelle zu löschen:
TRUNCATE TABLE TestData.dbo.Products; GONachdem Sie die Zeilen aus der Tabelle entfernt haben, führen Sie den
INSERT-Befehl dieses Schritts noch mal aus.In der folgenden Anweisung sehen Sie, wie die Reihenfolge, in der die Parameter bereitgestellt werden, durch Wechseln der Position von
ProductIDundProductNamesowohl in der Liste der Felder (in Klammern) als auch in der Liste der Werte geändert werden kann.-- Changing the order of the columns INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GODie folgende Anweisung veranschaulicht, dass die Namen der Spalten optional sind, solange die Werte in der richtigen Reihenfolge aufgelistet werden. Diese Syntax ist üblich, wird aber nicht empfohlen, da sie das Verständnis des Codes durch Dritte erschweren könnte. Für die Spalte
NULLwirdPriceangegeben, da der Preis für dieses Produkt noch nicht bekannt ist.-- Skipping the column list, but keeping the values in order INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GODer Schemaname ist optional, solange Sie auf eine Tabelle in Ihrem Standardschema zugreifen und sie ändern. Da die
ProductDescription-Spalte NULL-Werte zulässt und kein Wert bereitgestellt wird, können Name und Wert derProductDescription-Spalte vollständig aus der Anweisung gelöscht werden.-- Dropping the optional dbo and dropping the ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52) GO
Aktualisieren der Products-Tabelle
Geben Sie die folgende UPDATE -Anweisung zum Ändern von ProductName des zweiten Produkts von Screwdriverin Flat Head Screwdriverein, und führen Sie sie aus.
UPDATE dbo.Products
SET ProductName = 'Flat Head Screwdriver'
WHERE ProductID = 50
GO
Lesen von Daten aus einer Tabelle
Verwenden Sie die SELECT Anweisung, um die Daten in einer Tabelle zu lesen. Die SELECT Anweisung ist eine der wichtigsten Transact-SQL Anweisungen, und es gibt viele Variationen in der Syntax. In diesem Lernprogramm arbeiten Sie mit fünf Standardversionen.
Lesen der Daten in einer Tabelle
Geben Sie die folgenden Anweisungen zum Lesen der Daten in der
Products-Tabelle ein, und führen Sie sie aus.-- The basic syntax for reading data from a single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GOSie können alle Spalten in der Tabelle mithilfe eines Sternchens (
*) auswählen. Das Sternchen eignet sich für Ad-hoc-Abfragen. Sie sollten die Spaltenliste im dauerhaften Code bereitstellen, sodass die Anweisung die vorhergesagten Spalten zurückgibt, selbst wenn der Tabelle später eine neue Spalte hinzugefügt wird.-- Returns all columns in the table -- Does not use the optional schema, dbo SELECT * FROM Products GOSie können Spalten auslassen, die nicht zurückgegeben werden sollen. Die Spalten werden in der Reihenfolge zurückgegeben, in der sie aufgelistet sind.
-- Returns only two of the columns from the table SELECT ProductName, Price FROM dbo.Products GOMithilfe einer
WHERE-Klausel können Sie die an den Benutzer zurückgegebenen Zeilen beschränken.-- Returns only two of the records in the table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID < 60 GOSie können die Werte in den Spalten direkt nach ihrer Rückgabe bearbeiten. Im folgenden Beispiel wird eine mathematische Operation für die
Price-Spalte ausgeführt. In dieser Art geänderte Spalten weisen keinen Namen auf, sofern Sie nicht mithilfe des SchlüsselwortsASeinen Namen angeben.-- Returns ProductName and the Price including a 7% tax -- Provides the name CustomerPays for the calculated column SELECT ProductName, Price * 1.07 AS CustomerPays FROM dbo.Products GO
Nützliche Funktionen in einer SELECT-Anweisung
Informationen zu einigen Funktionen, mit denen Sie mit Daten in SELECT Anweisungen arbeiten können, finden Sie in den folgenden Artikeln:
Erstellen von Ansichten und gespeicherten Prozeduren
Eine Ansicht ist eine gespeicherte SELECT Anweisung, und eine gespeicherte Prozedur ist eine oder mehrere Transact-SQL Anweisungen, die als Batch ausgeführt werden.
Sichten werden wie Tabellen abgefragt und akzeptieren keine Parameter. Gespeicherte Prozeduren sind komplexer als Sichten. Gespeicherte Prozeduren können sowohl Eingabe- als auch Ausgabeparameter aufweisen und Anweisungen enthalten, um den Codefluss zu steuern, z IF . B. und WHILE Anweisungen. Es empfiehlt sich, gespeicherte Prozeduren für alle sich wiederholenden Aktionen in der Datenbank zu verwenden.
In diesem Beispiel verwenden CREATE Sie VIEW, um eine Ansicht zu erstellen, die nur zwei der Spalten in der Products Tabelle auswählt. Anschließend erstellen CREATE PROCEDURE Sie eine gespeicherte Prozedur, die einen Preisparameter akzeptiert, und gibt nur die Produkte zurück, die kleiner als der angegebene Parameterwert sind.
Erstellen einer Ansicht
Führen Sie die folgende Anweisung aus, um eine Sicht zu erstellen, die eine SELECT-Anweisung ausführt und die Namen und Preise der Produkte an den Benutzer zurückgibt.
CREATE VIEW vw_Names
AS
SELECT ProductName, Price FROM Products;
GO
Testen der Sicht
Sichten werden genau wie Tabellen behandelt. Greifen Sie mithilfe einer SELECT -Anweisung auf eine Sicht zu.
SELECT * FROM vw_Names;
GO
Erstellen einer gespeicherten Prozedur
Die folgende Anweisung erstellt eine gespeicherte Prozedur namens pr_Names, die einen Eingabeparameter mit der Bezeichnung @VarPrice vom Datentyp moneyakzeptiert. Die gespeicherte Prozedur druckt die mit dem Eingabeparameter verkettete Products less than -Anweisung. Dieser Parameter wird vom money -Datentyp in den varchar(10) -Zeichendatentyp geändert. Dann führt die Prozedur eine SELECT -Anweisung für die Sicht aus und übergibt dabei den Eingabeparameter als Teil der WHERE -Klausel. Dadurch werden alle Produkte zurückgegeben, deren Preis unter dem Wert des Eingabeparameters liegt.
CREATE PROCEDURE pr_Names @VarPrice money
AS
BEGIN
-- The print statement returns text to the user
PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
-- A second statement starts here
SELECT ProductName, Price FROM vw_Names
WHERE Price < @VarPrice;
END
GO
Testen der gespeicherten Prozedur.
Wenn Sie die gespeicherte Prozedur testen möchten, geben Sie die folgende Anweisung ein, und führen Sie sie aus. Die Prozedur sollte die Namen der beiden Produkte zurückgeben, die Sie in Lektion 1 mit einem Preis unter Products in die 10.00-Tabelle eingegeben haben.
EXECUTE pr_Names 10.00;
GO