Introduction
Le langage SQL
SQL est l’acronyme de Structured Query Language. Ce langage est utilisé pour communiquer avec une base de données relationnelle. Les instructions SQL sont utilisées pour effectuer des tâches telles que la mise à jour ou la récupération de données dans une base de données. Par exemple, l’instruction SQL SELECT est utilisée pour interroger la base de données et retourner un ensemble de lignes de données. Voici quelques systèmes de gestion de base de données relationnelle courants qui utilisent SQL : Microsoft SQL Server, MySQL, PostgreSQL, MariaDB et Oracle.
Il existe une norme de langage SQL définie par l’American National Standards Institute (ANSI). Chaque fournisseur ajoute ses propres variantes et extensions.
Dans ce module, vous allez découvrir comment :
- Comprendre ce qu’est le langage SQL et comment l’utiliser
- Identifier les objets de base de données dans les schémas
- Identifier les différents types d’instructions SQL
- Utiliser l’instruction SELECT pour interroger des tables dans une base de données
- Travailler avec les types de données
- Gérer les valeurs NULL
Transact-SQL
Les instructions SQL de base, telles que SELECT, INSERT, UPDATE et DELETE, sont disponibles quel que soit le système de base de données relationnelle avec lequel vous travaillez. Bien que ces instructions SQL fassent partie de la norme SQL ANSI, de nombreux systèmes de gestion de base de données ont également leurs propres extensions. Ces extensions fournissent des fonctionnalités non couvertes par la norme SQL, appartenant à des domaines tels que la gestion de la sécurité et la programmabilité. Les systèmes de base de données Microsoft tels que SQL Server, Azure SQL Database, Microsoft Fabric et autres utilisent un dialecte de SQL appelé Transact-SQL, ou T-SQL. T-SQL comprend des extensions de langage pour l’écriture de procédures stockées et de fonctions, qui sont du code d’application stocké dans la base de données, et la gestion des comptes d’utilisateur.
SQL est un langage déclaratif
Les langages de programmation peuvent être classés comme étant procéduraux ou déclaratifs. Les langages procéduraux vous permettent de définir une séquence d’instructions que l’ordinateur suit pour effectuer une tâche. Les langages déclaratifs vous permettent de décrire la sortie de votre choix et de conserver les détails des étapes requises pour produire la sortie dans le moteur d’exécution.
SQL prend en charge certaines syntaxes procédurales, mais l’interrogation des données avec SQL suit habituellement la sémantique déclarative. Vous utilisez SQL pour décrire les résultats que vous souhaitez, et le processeur de requêtes du moteur de base de données développe un plan de requête pour les récupérer. Le processeur de requêtes utilise des statistiques sur les données de la base de données et les index définis sur les tables pour déterminer un bon plan de requête.
Données relationnelles
SQL est le plus souvent utilisé pour interroger des données dans des bases de données relationnelles. Une base de données relationnelle est une base de données dans laquelle les données ont été organisées en plusieurs tables (techniquement appelées relations), chacune représentant un type particulier d'entité (comme un client, un produit ou une commande client). Les attributs de ces entités (par exemple, le nom d’un client, le prix d’un produit ou la date d’une commande) sont définis en tant que colonnes, ou attributs, de la table, et chaque ligne de la table représente une instance du type d’entité (par exemple, un client, un produit ou une commande client spécifique).
Les tables de la base de données sont liées les unes aux autres à l’aide des colonnes clés qui identifient de façon unique l’entité particulière représentée. Une clé primaire est définie pour chaque table, et une référence à cette clé est définie en tant que clé étrangère dans toute table associée. Un exemple de code nous permettra de mieux comprendre cela :
Le diagramme montre une base de données relationnelle qui contient quatre tables :
- Client
- SalesOrderHeader
- SalesOrderDetail
- Produit
Chaque client est identifié par un champ CustomerID unique. Ce champ est la clé primaire de la table Customer. La table SalesOrderHeader possède une clé primaire nommée OrderID pour identifier chaque commande. Elle comprend également une clé étrangère CustomerID qui fait référence à la clé primaire de la table Customer pour identifier le client associé à chaque commande. Les données relatives aux différents éléments d’une commande sont stockées dans la table SalesOrderDetail, qui a une clé primaire composite qui combine l’OrderID dans la table SalesOrderHeader et une valeur LineItemNo. La combinaison de ces valeurs identifie de façon unique un élément de ligne. Le champ OrderID est également utilisé comme clé étrangère pour indiquer la commande à laquelle appartient l’élément de ligne, et un champ ProductID est utilisé comme clé étrangère de la clé primaire ProductID de la table Product pour indiquer le produit qui a été commandé.
Traitement basé sur les ensembles
La théorie des ensembles est l’un des fondements mathématiques du modèle relationnel de la gestion des données et est fondamental pour travailler avec des bases de données relationnelles. Bien que vous pouvez écrire des requêtes en T-SQL sans avoir une compréhension approfondie des ensembles, vous pourriez avoir des difficultés à écrire certains des types d’instructions plus complexes qui peuvent être nécessaires pour obtenir des performances optimales.
Sans plonger dans les mathématiques de la théorie des ensembles, vous pouvez voir un ensemble comme « une collection d’objets définis et distincts considérés comme un tout ». En termes appliqués aux bases de données SQL Server, vous pouvez considérer un ensemble comme une collection d’objets distincts contenant zéro ou plusieurs membres du même type. Par exemple, la table Customer représente un ensemble : plus précisément, l’ensemble de tous les clients. Vous verrez que les résultats d’une instruction SELECT forment également un ensemble.
À mesure que vous en apprenez davantage sur les instructions de requête T-SQL, il est important de toujours considérer la totalité de l’ensemble, plutôt que des membres individuels. Cette mentalité vous permettra de mieux écrire du code basé sur des ensembles, au lieu de réfléchir une ligne à la fois. L’utilisation de jeux nécessite de réfléchir en termes d’opérations qui se produisent « toutes à la fois », plutôt qu’une seule à la fois.
Une caractéristique importante à noter sur la théorie des ensembles est qu’il n’existe aucune spécification relative à l’ordre des membres d’un ensemble. Cette absence d’ordre s’applique aux tables de base de données relationnelles. Il n’existe aucun concept de première ligne, de deuxième ligne ou de dernière ligne. Les éléments sont accessibles (et récupérés) dans un ordre quelconque. Si vous devez retourner les résultats dans un certain ordre, vous devez spécifier cela explicitement à l’aide d’une clause ORDER BY dans votre requête SELECT.