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 casArtists
), 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, etPRIMARY 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 estnvarchar(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 surNOT 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 dedate
);
- 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é.