Partager via


Leçon 1 : Créer et interroger des objets de base de données

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)Base de données SQL dans Microsoft Fabric

Note

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 tutoriel part du principe que vous utilisez Management Studio, mais vous pouvez également utiliser Management Studio Express, qui est disponible gratuitement à partir du Centre de téléchargement Microsoft.

  • À l’aide de 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.

Prerequisites

Pour suivre ce tutoriel, vous avez besoin de SQL Server Management Studio et d’un accès à une instance SQL Server.

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.

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.

  1. Dans une fenêtre de l’Éditeur de requête, tapez le code suivant sans l’exécuter :

    CREATE DATABASE TestData
    GO
    
  2. Utilisez le pointeur pour sélectionner les mots CREATE DATABASE, et appuyez sur la touche F1. L’article CREATE DATABASE doit s’ouvrir. Vous pouvez faire appel à cette technique pour rechercher la syntaxe complète de CREATE DATABASE et pour les autres instructions utilisées dans ce tutoriel.

  3. 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.

Note

Le mot clé GO sépare les instructions lorsque plusieurs instructions sont envoyées dans un seul lot. GO est facultatif lorsque le lot ne contient qu’une seule instruction.

Créer une table

S'applique à :SQL Server Azure SQL DatabaseAzure Synapse AnalyticsAnalytics 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 également 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 la liste des types de données et des liens pour une description de chacun d’eux, consultez Types de données.

Note

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), moneyet 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

Maintenant que vous avez créé la Products table, vous êtes prêt à 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 UPDATE instruction. Vous utilisez la WHERE clause 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 Pince Workbench
50 Screwdriver 3.17 Tête plate
75 Barre de pneus Outil pour changer des pneus.
3000 3 mm Bracket 0.52

La syntaxe de base est : INSERT, nom de table, liste de colonnes, VALUESpuis 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

  1. 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, cela peut être dû au fait que la Product table comporte 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.

  2. L'instruction suivante montre comment vous pouvez modifier l'ordre dans lequel les paramètres sont fournis en alternant la position de ProductID et ProductName 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
    
  3. 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 colonne Price, 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
    
  4. Le nom du schéma est facultatif tant que vous accédez à une table et que vous 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 valeur ProductDescription 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 Screwdriverpar 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 d’une table. L’instruction SELECT est l’une des instructions Transact-SQL les plus importantes, et il existe de nombreuses variations dans la syntaxe. Pour ce tutoriel, vous allez utiliser cinq versions de base.

Lire les données d’une table

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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 plus d’informations sur certaines fonctions que vous pouvez utiliser pour utiliser des données dans SELECT des instructions, consultez les articles suivants :

Créer des vues et des procédures stockées

Une vue est une instruction stockée SELECT et une procédure stockée est une ou plusieurs instructions Transact-SQL qui s’exécutent en tant que 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. Les procédures stockées peuvent avoir à la fois des paramètres d’entrée et de sortie et peuvent contenir des instructions pour contrôler le flux du code, tels que IF les instructions et WHILE les instructions. Il est recommandé d’utiliser des procédures stockées pour toutes les actions répétitives dans la base de données.

Pour cet exemple, vous utilisez CREATE VIEW pour créer une vue qui sélectionne uniquement deux des colonnes de la Products table. Ensuite, vous utilisez CREATE PROCEDURE pour créer une procédure stockée qui accepte un paramètre de prix et retourne uniquement les produits qui coûtent moins cher que 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