Le modèle relationnel des données produit un schéma de données relationnel qui faut
écrire dans un langage compréhensible par les SGBD relationnelles. Le langage le plus utilisé
est SQL : Structured Query Language (Langage de requêtes structurées) qui sert à :
➢ implémenter la base de données
➢ sécuriser la base de données
➢ manipuler les données
➢ réaliser un ensemble de requêtes en une transaction
Le langage SQL (Structured Query Language)
SQL est un langage d’interrogation structurée de données conçu dans les années 70. Il
est devenu au travers de ses différentes versions, un langage complet de gestion de bases de
données relationnelles. Pour gérer la base de données, SQL dispose de 4 catégories de langages.
Le Langage de Définition des Données (LDD) : Data Definition Language (DDL)
Il comporte l’ensemble des commandes SQL de gestion de la structure de chaque objet
(table, vue, …) de la base de données notamment :
➢ la création (CREATE) des objets
➢ la modification (ALTER) des objets
➢ la suppression (DROP) des objets
➢ le renommage (RENAME) des objets
➢ …
Le Langage de Manipulation des Données (LMD) : Data Manipulation Language
(DML)
Il comporte l’ensemble des commandes SQL réalisant les opérations suivantes sur les
données :
➢ l’ajout (INSERT) des données dans une table
➢ la mise à jour (UPDATE) des données d’une table
➢ la suppression (DELETE) des données d’une table
➢ la visualisation (SELECT) des données d’une ou plusieurs tables
Le Langage de Contrôle des Données (LCD) : Data Control Language (DCL)
Il comporte l’ensemble des commandes SQL de gestion des droits d’accès aux tables et
vues :
➢ l’autorisation (GRANT) d’accès
➢ l’interdiction (REVOKE) d’accès
Le Langage de Contrôle des Transactions (LCT) : Transaction Control Language
(TCL)
Une transaction est un ensemble de requêtes SQL indivisible qui met à jour une base de
données en garantissant sa cohérence. Elle comporte un début, une suite de requêtes SQL et
une fin. Les transactions doivent respecter les principes résumés par l'acronyme ACID :
Atomicité
Une transaction doit être complètement exécutée ou totalement annulée. Dans ce sens,
une transaction constitue une unité d'exécution dont les opérations doivent être annulées lorsque
la transaction est interrompue. L'atomicité obéit au principe du « tout ou rien »
Cohérence
Il est possible qu'une transaction en cours d'exécution transgresse temporairement
certaines contraintes de cohérence. Mais quand la transaction est terminée, le résultat final doit
respecter de nouveau toutes les contraintes. Par conséquent, une transaction fait passer une base
de données d'un état cohérent à un autre état cohérent et garantit l'absence de données
contradictoires. La transaction représente donc une unité d'exécution qui doit maintenir la
cohérence d'une base de données. La cohérence signifie l'absence de données contradictoires.
Isolation
Le principe de l'isolation exige que les modifications apportées à la base de données par
les opérations d’une transaction en cours ne doivent être visibles qu’après leur validation. Ainsi,
une donnée en cours de modification ne doit pas être accessible. L'isolation protège la base de
données contre les effets de bord.
Durabilité
Une base de données doit être maintenue dans un état cohérent jusqu'à la validation des
modifications effectuées par une transaction. Lors d'incidents (erreurs de programmation,
interruptions du système ou pannes d'unités de stockage externes), la durabilité garantit que
seule une transaction correctement exécutée et validée permet de valider de façon durable les
modifications faites sur la base de données par les différentes opérations de la transaction.
Le principe ACID, fondamental aux SGBD garantit que chaque utilisateur transforme
une base de données d'un état cohérent à un autre état cohérent. Les états intermédiaires
incohérents restent invisibles depuis l'extérieur (à la transaction) et sont annulés en cas
d'incident.
Une transaction n'a que deux issues possibles : le succès (COMMIT) ou l'échec
(ROLLBACK). Il n'y a pas de situation intermédiaire.
Seuls les requêtes SQL qui modifient des données interviennent dans une transaction.
Une requête SELECT qui n'effectue qu'une lecture n'influe pas sur la cohérence des données.