Leçon 1 : Créer et interroger des objets de base de données
S’applique à : SQL Server
Azure SQL Database
Azure SQL Managed Instance
Analytics Platform System (PDW)
Remarque
Le parcours d’apprentissageDémarrage par l’interrogation avec Transact-SQL fournit un contenu plus détaillé, ainsi que des exemples pratiques.
Cette leçon vous montre comment créer une base de données, une table dans la base de données, puis accéder aux données et les modifier dans la table. Comme cette leçon est une présentation de l’utilisation de Transact-SQL, elle n’utilise pas ni ne décrit les nombreuses options disponibles pour ces instructions.
Les instructions Transact-SQL peuvent être écrites et envoyées au moteur de base de données de plusieurs manières :
À l'aide de SQL Server Management Studio. Ce didacticiel suppose que vous utilisez Management Studio, mais vous pouvez aussi utiliser Management Studio Express, disponible gratuitement en téléchargement à partir du Centre de téléchargement Microsoft.
Avec l’utilitaire sqlcmd.
En vous connectant à partir d'une application que vous créez.
Le code s’exécute sur le Moteur de base de données de la même façon et avec les mêmes autorisations, quelle que soit la manière dont vous soumettez les instructions de code.
Pour exécuter des instructions Transact-SQL dans Management Studio, ouvrez Management Studio et connectez-vous à une instance du moteur de base de données SQL Server.
Prérequis
Pour suivre ce tutoriel, vous avez besoin de SQL Server Management Studio et d’un accès à une instance SQL Server.
- Installez SQL Server Management Studio.
Si vous n’avez pas d’instance SQL Server, créez-en une. Pour cela, sélectionnez votre plateforme parmi les liens suivants. Si vous choisissez l’authentification SQL, utilisez vos informations d’identification de connexion SQL Server.
- Windows : télécharger l’Édition Développeurs SQL Server 2022.
- Linux : télécharger SQL Server 2022 dans un conteneur.
Création d'une base de données
Comme de nombreuses instructions Transact-SQL, l’instruction CREATE DATABASE a un paramètre obligatoire : le nom de la base de données. CREATE DATABASE
comporte aussi de nombreux paramètres facultatifs, notamment l’emplacement du disque où vous souhaitez placer les fichiers de base de données. Quand vous exécutez CREATE DATABASE
sans les paramètres facultatifs, SQL Server utilise les valeurs par défaut pour un grand nombre de ces paramètres.
Dans une fenêtre de l’Éditeur de requête, tapez le code suivant sans l’exécuter :
CREATE DATABASE TestData GO
Utilisez le pointeur pour sélectionner les mots
CREATE DATABASE
, et appuyez sur la touche F1. L’articleCREATE DATABASE
doit s’ouvrir. Vous pouvez faire appel à cette technique pour rechercher la syntaxe complète deCREATE DATABASE
et pour les autres instructions utilisées dans ce tutoriel.Dans l'Éditeur de requête, appuyez sur la touche F5 pour exécuter l'instruction et créer une base de données nommée
TestData
.
Lorsque vous créez une base de données, SQL Server effectue une copie de la base de données model
et remplace le nom de la copie par le nom de la base de données. Cette opération ne doit prendre que quelques secondes, sauf si vous spécifiez une taille initiale importante pour la base de données comme paramètre facultatif.
Notes
Le mot clé GO sépare les instructions si plus d'une instruction est envoyée dans un même traitement. GO est facultatif lorsque le traitement contient uniquement une seule instruction.
Créer une table
S'applique à : SQL Server
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
Pour créer une table, vous devez fournir un nom pour la table et les noms et les types de données de chaque colonne dans la table. Il est aussi recommandé d'indiquer si les valeurs Null sont autorisées dans chaque colonne. Pour créer une table, vous devez avoir les autorisations CREATE TABLE
et ALTER SCHEMA
sur le schéma qui contiendra la table. Le rôle de base de données fixe db_ddladmin a ces autorisations.
La plupart des tables possèdent une clé primaire constituée d'une ou plusieurs colonnes de la table. Une clé primaire est toujours unique. Le Moteur de base de données applique la restriction selon laquelle les valeurs de clé primaire ne peuvent pas être répétées dans la table.
Pour obtenir une liste des types de données et des liens de description de chacun, consultez Types de données (Transact-SQL).
Notes
Vous pouvez configurer le Moteur de base de données pour qu’il respecte la casse ou non. Si vous installez le Moteur de base de données pour qu’il respecte la casse, les noms des objets doivent toujours avoir la même casse. Par exemple, une table nommée OrderData est différente d'une table nommée ORDERDATA. Si le Moteur de base de données ne respecte pas la casse, ces deux noms de tables sont considérés comme une seule et même table, et ce nom ne peut être utilisé qu’une fois.
Passer la connexion de l'Éditeur de requête à la base de données TestData
Dans une fenêtre Éditeur de requêtes, tapez et exécutez le code suivant pour modifier votre connexion à la base de données TestData
.
USE TestData
GO
Créer la table
Dans une fenêtre Éditeur de requêtes, tapez et exécutez le code suivant pour créer une table nommée Products
. Les colonnes de la table sont nommées ProductID
, ProductName
, Price
, et ProductDescription
. La colonne ProductID
est la clé primaire de la table. int
, varchar(25)
, money
et varchar(max)
sont tous des types de données. Seules les colonnes Price
et ProductionDescription
peuvent n'avoir aucune données lors de l'insertion ou de la modification d'une ligne. Cette instruction contient un élément facultatif (dbo.
) appelé un schéma. Le schéma est l'objet de base de données qui est propriétaire de la table. Si vous êtes administrateur, dbo
est le schéma par défaut. dbo
représente le propriétaire de la base de données.
CREATE TABLE dbo.Products
(ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription varchar(max) NULL)
GO
Insérer et mettre à jour des données dans une table
Une fois que vous avez créé la table Products
, vous pouvez insérer des données dans la table à l’aide de l’instruction INSERT. Une fois les données insérées, vous allez modifier le contenu d'une ligne à l'aide d'une l'instruction UPDATE. Utilisez la clause WHERE de l'instruction UPDATE pour restreindre la mise à jour à une seule ligne. Les quatre instructions entrent les données suivantes.
ProductID | ProductName | Price | ProductDescription |
---|---|---|---|
1 | Clamp | 12.48 | Workbench clamp |
50 | Screwdriver | 3.17 | Flat head |
75 | Tire Bar | Outil pour changer des pneus. | |
3000 | 3 mm Bracket | 0.52 |
La syntaxe de base est la suivante : INSERT, nom de table, liste de colonnes, VALUES, puis la liste des valeurs à insérer. Les deux tirets en début de ligne indiquent que celle-ci est un commentaire et que le texte sera ignoré par le compilateur. Dans ce cas, le commentaire décrit une variation autorisée de la syntaxe.
Insérer des données dans une table
Exécutez l'instruction suivante pour insérer une ligne dans la table
Products
créée au cours de la tâche précédente.-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GO
Si l’insertion réussit, passez à l’étape suivante.
Si l’insertion échoue, c’est peut-être que la table
Product
contient déjà une ligne avec cet ID de produit. Pour continuer, supprimez toutes les lignes de la table et répétez l’étape précédente. TRUNCATE TABLE supprime toutes les lignes de la table.Exécutez la commande suivante pour supprimer toutes les lignes de la table :
TRUNCATE TABLE TestData.dbo.Products; GO
Après avoir tronqué la table, répétez la commande
INSERT
dans cette étape.L'instruction suivante montre comment vous pouvez modifier l'ordre dans lequel les paramètres sont fournis en alternant la position de
ProductID
etProductName
dans la liste des champs (entre parenthèses) et dans la liste des valeurs.-- Changing the order of the columns INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GO
L'instruction suivante montre que les noms des colonnes sont facultatifs tant que les valeurs sont répertoriées dans le bon ordre. Cette syntaxe est courante mais n’est pas recommandée, car elle peut rendre votre code difficile à comprendre.
NULL
est spécifié pour la colonnePrice
, car le prix du produit n’est pas encore connu.-- Skipping the column list, but keeping the values in order INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GO
Le nom de schéma est facultatif tant que vous accédez et modifiez une table dans votre schéma par défaut. Comme la colonne
ProductDescription
autorise les valeurs Null et qu'aucune valeur n'est fournie, le nom de colonne et la valeurProductDescription
peuvent être supprimés de l'instruction complètement.-- Dropping the optional dbo and dropping the ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52) GO
Mettre à jour la table Products
Tapez et exécutez l'instruction UPDATE
suivante pour remplacer le ProductName
du deuxième produit à partir de Screwdriver
par Flat Head Screwdriver
.
UPDATE dbo.Products
SET ProductName = 'Flat Head Screwdriver'
WHERE ProductID = 50
GO
Lire les données d’une table
Utilisez l'instruction SELECT pour lire les données dans une table. L’instruction SELECT est une des instructions Transact-SQL les plus importantes et dont la syntaxe comporte beaucoup de variations. Pour ce tutoriel, vous allez travailler avec cinq versions de base.
Lire les données d’une table
Tapez et exécutez les instructions suivantes pour lire les données dans la table
Products
.-- The basic syntax for reading data from a single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GO
Vous pouvez utiliser un astérisque (
*
) pour sélectionner toutes les colonnes de la table. L’astérisque est destiné aux requêtes ad hoc. Dans le code permanent, fournissez la liste des colonnes pour que l’instruction retourne les colonnes prédites, même si une nouvelle colonne est par la suite ajoutée à la table.-- Returns all columns in the table -- Does not use the optional schema, dbo SELECT * FROM Products GO
Vous pouvez omettre les colonnes que vous ne voulez pas retourner. Les colonnes seront retournées dans leur ordre d'apparition dans la liste.
-- Returns only two of the columns from the table SELECT ProductName, Price FROM dbo.Products GO
Utilisez une clause
WHERE
pour limiter les lignes retournées à l'utilisateur.-- Returns only two of the records in the table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID < 60 GO
Vous pouvez travailler avec les valeurs des colonnes à mesure qu'elles sont retournées. L'exemple suivant effectue une opération mathématique sur la colonne
Price
. Les colonnes qui ont été changées de cette manière n’ont pas de nom, sauf si vous en fournissez un avec le mot cléAS
.-- 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
Fonctions utiles dans une instruction SELECT
Pour des informations sur les fonctions que vous pouvez utiliser avec des données dans les instructions SELECT, consultez les articles suivants :
Créer des vues et des procédures stockées
Une vue est une instruction SELECT stockée, et une procédure stockée correspond à une ou plusieurs instructions Transact-SQL qui s’exécutent par lot.
Les vues sont interrogées comme des tables et n’acceptent pas de paramètres. Les procédures stockées sont plus complexes que les vues. Elles peuvent contenir des paramètres d'entrée et de sortie et peuvent contenir des instructions pour contrôler le flux du code, comme les instructions IF et WHILE. Il est recommandé de faire appel aux procédures stockées pour coder toutes les actions répétitives dans la base de données
Pour cet exemple, vous allez utiliser CREATE VIEW pour créer un affichage qui sélectionne seulement deux des colonnes dans la table Products
. Puis, vous allez utiliser CREATE PROCEDURE pour créer une procédure stockée qui accepte un paramètre de prix et retourne uniquement les produits dont le prix est inférieur à la valeur de paramètre spécifiée.
Créer une vue
Exécutez l’instruction suivante pour créer une vue qui exécute une instruction SELECT et retourne les noms et les prix de nos produits à l’utilisateur.
CREATE VIEW vw_Names
AS
SELECT ProductName, Price FROM Products;
GO
Tester la vue
Les vues sont traitées comme des tables. Utilisez une instruction SELECT
pour accéder à une vue.
SELECT * FROM vw_Names;
GO
Créer une procédure stockée
L'instruction suivante crée un nom de procédure stockée pr_Names
, accepte un paramètre d'entrée nommé @VarPrice
du type de données money
. La procédure stockée affiche l'instruction Products less than
concaténée avec le paramètre d'entrée dont le type de données money
est remplacé par un type de données character varchar(10)
. Puis, la procédure exécute une instruction SELECT
sur la vue et passe le paramètre d'entrée dans le cadre de la clause WHERE
. Cette opération retourne tous les produits dont le prix est inférieur à la valeur du paramètre d'entrée.
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
Tester la procédure stockée
Pour tester la procédure stockée, tapez et exécutez l'instruction suivante. La procédure doit retourner les noms des deux produits entrés dans la table Products
à la leçon 1 avec un prix inférieur à 10.00
.
EXECUTE pr_Names 10.00;
GO
Étapes suivantes
L’article suivant vous apprend à configurer des autorisations sur des objets de base de données. Les objets créés dans la leçon 1 sont également utilisés dans la leçon 2.
Passez à l’article suivant pour en savoir plus :