Hier erstellen wir drei Tabellen in SQL Server und analysieren dann das Skript, das sie erstellt hat. Wir führen auch ein weiteres Skript aus, um zu überprüfen, ob die Tabelle erstellt wurde.
Zuvor haben wir eine Datenbank aus einem Skript erstellt. Die Datenbank ist jedoch eine leere Datenbank – sie enthält keine Tabellen oder Daten.
Jetzt werden wir einige Tabellen für unsere Datenbank erstellen.
Zunächst einmal zur Auffrischung:Hier ist, was wir bisher getan haben:
CREATE DATABASE Music;
Dadurch wurde eine leere Datenbank erstellt. Wenn Sie dies noch nicht getan haben, führen Sie dieses Skript aus.
Führen Sie nun das folgende Skript aus:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO CREATE TABLE Genres ( GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY, Genre nvarchar(50) NOT NULL ); CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
Dieses Skript fügt der Datenbank drei Tabellen hinzu. Die Tabellen heißen Artists
, Genres
und Albums
.
Hier ist das Ergebnis in SQL Operations Studio/Azure Data Studio:
Jedes GUI-Tool zeigt die Tabellen auf ziemlich dieselbe Weise an. Jede Tabelle kann erweitert werden, um ihre Spalten sowie alle Indizes, Trigger, Schlüssel usw. anzuzeigen. Sie können auch die Spalten erweitern -Knoten, um die Liste der Spalten und ihrer Datentypen sowie alle angegebenen Einschränkungen anzuzeigen.
Erklärung zu CREATE TABLE
Erklärung
Das gerade ausgeführte Skript besteht aus drei CREATE TABLE
-Anweisungen — jede erstellt eine andere Tabelle. Das Skript fügt auch eine Fremdschlüsselbeschränkung hinzu, aber darauf gehen wir später ein.
Lassen Sie uns zunächst die erste CREATE TABLE
analysieren Anweisung in unserem Skript:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO
Diese SQL-Anweisung erstellt eine Tabelle namens Artists
mit drei Spalten, genannt ArtistId
, ArtistName
, und ActiveFrom
. Die Definition jeder Spalte beginnt mit ihrem Namen, gefolgt von ihrem Datentyp und allen Einschränkungen, die auf diese Spalte angewendet werden sollen.
Hier ist eine detailliertere "zeilenweise" Beschreibung:
USE Music;
- Dieser Teil ist eigentlich kein Teil von
CREATE TABLE
Erklärung. Es dient nur zum Umschalten auf Musik Datenbank. Auf dem Server können viele Datenbanken vorhanden sein, und wir möchten sicher sein, dass wir die Tabellen in der richtigen Datenbank erstellen. Sie brauchen diese Zeile nicht, wenn Sie bereits in der richtigen Datenbank arbeiten. CREATE TABLE Artists (
- Dies ist der Beginn von
CREATE TABLE
Erklärung. Darauf folgt der Tabellenname (in diesem FallArtists
), gefolgt von der ersten der Klammern, die die Tabellendefinition umschließen. ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
- Dann definieren wir die erste Spalte. In diesem Fall nennen wir es
ArtistId
, geben Sie seinen Datentyp als Ganzzahl an (int
), als Identitätsspalte festlegen (diese Spalte stellt die eindeutige ID für die Tabelle bereit, und der Wert wird mit jeder hinzugefügten Zeile erhöht),(1,1)
bedeutet, dass der Wert bei 1 beginnt und um 1 erhöht wird,NOT NULL
bedeutet, dass das Feld keine Nullwerte enthalten darf, undPRIMARY KEY
legt diese Spalte als Primärschlüssel für die Tabelle fest. Ein Primärschlüssel ist eine Spalte, die als eindeutiges Bezeichnerfeld für die Tabelle konfiguriert wurde. ArtistName nvarchar(255) NOT NULL,
- Die nächste Spalte heißt
ArtistName
und sein Datentyp istnvarchar(255)
, was bedeutet, dass es Unicode-String-Daten variabler Länge mit einer maximalen Länge von 255 Zeichen akzeptiert. Wir setzen diese Spalte auch aufNOT NULL
damit er keine Nulleinträge enthalten kann. ActiveFrom date
- Die letzte Spalte heißt
ActiveFrom
und wir stellen es so ein, dass es den Datentypdate
akzeptiert );
- Wir verwenden dann
)
um die Definition zu schließen, und;
um die Anweisung zu beenden (das Semikolon ist ein Anweisungsabschlusszeichen). GO
- Signalisiert das Ende eines Stapels von Transact-SQL-Anweisungen. Dies ist eigentlich keine Transact-SQL-Anweisung. Es ist ein Befehl, der von den Dienstprogrammen sqlcmd und osql und dem Code-Editor von SQL Server Management Studio erkannt wird, um das Ende eines Stapels von Transact-SQL-Anweisungen zu signalisieren.
So rufen Sie Tabelleninformationen ab, wenn Sie ein Befehlszeilentool verwenden
Wenn Sie ein Befehlszeilentool verwenden, haben Sie nicht den Luxus, Ihre Datenbanktabellen im Seitenbereich zu sehen, die darauf warten, mit einem einzigen Klick erweitert zu werden. Aber das bedeutet nicht, dass Sie keine Informationen über Ihre Tabellen oder andere Datenbankobjekte sehen können.
Wenn Sie ein Befehlszeilentool verwenden, können Sie die folgende Anweisung ausführen, um Informationen zu den Tabellen in der obigen Datenbank anzuzeigen:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns;Ergebnis
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES GenreId int null NO Genre nvarchar 50 NO AlbumId int null NO AlbumName nvarchar 255 NO ReleaseDate date null NO ArtistId int null NO GenreId int null NO 10 row(s) returned Executed in 1 ms
Die fragliche Tabelle befindet sich in der Datenbank namens Music deshalb schalten wir zuerst darauf um.
Sie können es auch auf eine bestimmte Tabelle eingrenzen, indem Sie ein WHERE
verwenden Klausel:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns WHERE table_name = 'Artists';Ergebnis
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES 3 row(s) returned Executed in 1 ms
Es gibt viele weitere Felder, die von information_schema.columns
zurückgegeben werden können . Sie können SELECT *
verwenden um sie alle zurückzugeben, wenn Sie dies wünschen.
Die Befehlszeilenmethode zum Abrufen von Tabelleninformationen funktioniert auch mit einem GUI-Tool (schließlich sind es nur SQL-Anweisungen). Sie können dieselben SQL-Anweisungen eingeben, um dieselben Daten abzurufen, unabhängig davon, ob Sie sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver oder ein anderes SQL Server-Verwaltungstool verwenden:
Das GO
Befehl
Möglicherweise müssen Sie GO
hinzufügen bis zum Ende des Skripts (wenn Sie beispielsweise sqlcmd verwenden).
Mehrere Zeilen
Möglicherweise erhalten Sie eine Fehlermeldung, wenn Sie versuchen, die obigen Skripts mit einem Befehlszeilentool auf mehrere Zeilen zu verteilen.
Versuchen Sie in diesem Fall, am Ende jeder Zeile einen umgekehrten Schrägstrich hinzuzufügen. So:
USE Music; \ SELECT column_name, data_type, character_maximum_length, is_nullable \ FROM information_schema.columns;
Wenn Ihnen die Idee nicht gefällt, Backslashes hinzufügen zu müssen, besteht eine andere Möglichkeit darin, das mehrzeilige Skript in einer .sql-Datei zu speichern und es dann über die Eingabeaufforderung auszuführen.
Die Methode zum Ausführen eines Skripts von der Eingabeaufforderung hängt von dem verwendeten Befehlszeilendienstprogramm ab.
So verwenden Sie sqlcmd, um eine auf einem Windows-Rechner gespeicherte Datei auszuführen:
sqlcmd -S myServer\instanceName -i C:\myScript.sql
Und so verwenden Sie sql-cli, um eine auf einem Mac gespeicherte Datei auszuführen:
.run /myScript.sql
Offensichtlich hängen der vollständige Pfad und die Dateinamen von Ihrem Dateinamen und dem Speicherort ab.