Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Créer une table dans SQL Server 2017

Ici, nous créons trois tables dans SQL Server, puis analysons le script qui les a créées. Nous exécutons également un autre script pour vérifier que la table a été créée.

Auparavant, nous créions une base de données à partir d'un script. Cependant, la base de données est une base de données vide - elle ne contient ni tables ni données.

Nous allons maintenant créer des tables pour notre base de données.

Tout d'abord, pour rappel, voici ce que nous avons fait jusqu'à présent :

CREATE DATABASE Music;

Cela a créé une base de données vierge. Si vous ne l'avez pas encore fait, exécutez ce script.

Exécutez maintenant le script suivant :

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    
);

Ce script ajoute trois tables à la base de données. Les tableaux s'appellent Artists , Genres , et Albums .

Voici le résultat dans SQL Operations Studio/Azure Data Studio :

Tout outil graphique affichera les tables à peu près de la même manière. Chaque tableau peut être développé pour révéler ses colonnes, ainsi que tous les index, déclencheurs, clés, etc. Vous pouvez également développer les Colonnes noeud pour révéler la liste des colonnes et leurs types de données, ainsi que toutes les contraintes qui ont été spécifiées.

Explication de la CREATE TABLE Déclaration

Le script que nous venons d'exécuter se compose de trois CREATE TABLE instructions — chacune crée une table différente. Le script ajoute également une contrainte de clé étrangère, mais nous y reviendrons plus tard.

Pour l'instant, analysons le premier CREATE TABLE déclaration dans notre script :

USE Music;

CREATE TABLE Artists (
  ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  ArtistName nvarchar(255) NOT NULL,
  ActiveFrom date
);
GO

Cette instruction SQL crée une table appelée Artists avec trois colonnes, appelées ArtistId , ArtistName , et ActiveFrom . La définition de chaque colonne commence par son nom, suivi de son type de données et de toute contrainte à appliquer à cette colonne.

Voici une description "ligne par ligne" plus détaillée :

USE Music;
Cette partie ne fait pas partie du CREATE TABLE déclaration. Il n'est là que pour passer à la Musique base de données. Il peut y avoir de nombreuses bases de données sur le serveur et nous voulons nous assurer que nous créons les tables sur la bonne base de données. Vous n'avez pas besoin de cette ligne si vous travaillez déjà dans la bonne base de données.
CREATE TABLE Artists (
C'est le début de la CREATE TABLE déclaration. Il est suivi du nom de la table (dans ce cas Artists ), suivi de la première des parenthèses qui entourent la définition de la table.
ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Nous définissons ensuite la première colonne. Dans ce cas, nous l'appelons ArtistId , spécifiez son type de données sous la forme d'un entier (int ), définissez-le comme une colonne d'identité (cette colonne fournira l'identifiant unique de la table et la valeur augmentera à chaque ligne ajoutée), le (1,1) signifie que la valeur commence à 1 et s'incrémente de 1, NOT NULL signifie que le champ ne peut pas contenir de valeurs nulles, et PRIMARY KEY définit cette colonne comme clé primaire de la table. Une clé primaire est une colonne qui a été configurée comme champ d'identifiant unique pour la table.
ArtistName nvarchar(255) NOT NULL,
La colonne suivante s'appelle ArtistName et son type de données est nvarchar(255) , ce qui signifie qu'il accepte les données de chaîne Unicode de longueur variable, avec une longueur maximale de 255 caractères. Nous définissons également cette colonne sur NOT NULL afin qu'il ne puisse pas contenir d'entrées nulles.
ActiveFrom date
La dernière colonne s'appelle ActiveFrom et nous le configurons pour accepter un type de données de date
);
Nous utilisons alors ) pour fermer la définition, et ; pour terminer l'instruction (le point-virgule est un terminateur d'instruction).
GO
Signale la fin d'un lot d'instructions Transact-SQL. Il ne s'agit pas réellement d'une instruction Transact-SQL. Il s'agit d'une commande reconnue par les utilitaires sqlcmd et osql et l'éditeur de code de SQL Server Management Studio pour signaler la fin d'un lot d'instructions Transact-SQL.

Comment récupérer des informations de table lors de l'utilisation d'un outil de ligne de commande

Lorsque vous utilisez un outil de ligne de commande, vous n'avez pas le luxe de voir vos tables de base de données dans le panneau latéral en attente d'être développées en un seul clic. Mais cela ne signifie pas que vous ne pouvez pas afficher les informations sur vos tables ou d'autres objets de base de données.

Lorsque vous utilisez un outil de ligne de commande, vous pouvez exécuter l'instruction suivante pour afficher des informations sur les tables de la base de données ci-dessus :

USE Music; 
SELECT column_name, data_type, character_maximum_length, is_nullable 
FROM information_schema.columns;
Result
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

La table en question se trouve dans la base de données appelée Music c'est pourquoi nous y passons en premier.

Vous pouvez également le réduire à une table spécifique en utilisant un WHERE clause :

USE Music; 
SELECT column_name, data_type, character_maximum_length, is_nullable 
FROM information_schema.columns 
WHERE table_name = 'Artists';
Result
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

De nombreux autres champs peuvent être renvoyés par information_schema.columns . Vous pouvez utiliser SELECT * pour tous les retourner si vous le souhaitez.

La méthode de ligne de commande pour récupérer les informations de table fonctionne également lors de l'utilisation d'un outil graphique (après tout, ce ne sont que des instructions SQL). Vous pouvez saisir les mêmes instructions SQL pour récupérer les mêmes données, que vous utilisiez sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver ou tout autre outil de gestion SQL Server :

Le GO Commande

Vous devrez peut-être ajouter GO à la fin du script (lors de l'utilisation de sqlcmd par exemple).

Plusieurs lignes

Vous pourriez constater que vous obtenez une erreur si vous essayez de répartir les scripts ci-dessus sur plusieurs lignes avec un outil de ligne de commande.

Si tel est le cas, essayez d'ajouter une barre oblique inverse à la fin de chaque ligne. Comme ceci :

USE Music; \
SELECT column_name, data_type, character_maximum_length, is_nullable \
FROM information_schema.columns;

Si vous n'aimez pas l'idée d'avoir à ajouter des barres obliques inverses, une autre option consiste à enregistrer le script multiligne dans un fichier .sql, puis à l'exécuter à partir de l'invite de commande.

La méthode d'exécution d'un script à partir de l'invite de commande dépend de l'utilitaire de ligne de commande que vous utilisez.

Voici comment utiliser sqlcmd pour exécuter un fichier enregistré sur une machine Windows :

sqlcmd -S myServer\instanceName -i C:\myScript.sql

Et voici comment utiliser sql-cli pour exécuter un fichier enregistré sur un Mac :

.run /myScript.sql

Évidemment, le chemin complet et les noms de fichiers dépendront de votre nom de fichier et de l'endroit où vous l'avez enregistré.