Retour à la liste des articles Articles
7 minutes de lecture

Que sont DDL, DML, DQL et DCL en SQL ?

Nous explorons la séparation de SQL en ses quatre principaux sous-langages et expliquons la signification de chacun d'entre eux.

Lorsque vous apprenez le langage SQL, peut-être en suivant le cours complet de LearnSQL.fr, vous avez peut-être rencontré le terme "SQL". SQL pour les débutants vous avez peut-être rencontré les termes DDL, DML, DQL et DCL. Et peut-être avez-vous été troublé par tous ces acronymes. Dans cet article, nous allons vous expliquer la signification de ces termes et comment ils correspondent à des sous-langages qui divisent le langage SQL en quatre parties qui fonctionnent ensemble.

La division du SQL en sous-langages

Le langage de requête structuré, ou SQL, est un langage complet permettant de manipuler des bases de données. Il s'agit du langage utilisé dans les systèmes de bases de données tels que PostgreSQL, MySQL, Microsoft SQL Server et Oracle Database. Chacun de ces systèmes possède ses propres implémentations des dizaines de commandes du langage SQL (c'est-à-dire ses propres dialectes), ce qui peut être déconcertant au début.

SQL peut faire beaucoup de choses différentes : créer des tables de base de données, insérer ou modifier des enregistrements, ajouter des index, récupérer des informations, etc. Il peut donc être utile de diviser le langage SQL en plusieurs sous-langages; cela nous aide à comprendre toutes les différentes opérations qui peuvent être effectuées sur une base de données SQL. Ces sous-langages sont les suivants :

  • Langage de requête de données (DQL) - Le langage de requête de données est le sous-langage responsable de la lecture, ou de l'interrogation, des données d'une base de données. En SQL, cela correspond au SELECT
  • Langage de manipulation des données (DML) - Le langage de manipulation des données est le sous-langage qui permet d'ajouter, de modifier ou de supprimer des données dans une base de données. En SQL, il correspond aux langages INSERT, UPDATE et DML. DELETE
  • Langage de définition des données (DDL) - Le langage de définition des données est le sous-langage chargé de définir la manière dont les données sont structurées dans une base de données. En SQL, cela correspond à la manipulation des tables par l'intermédiaire de CREATE TABLE, ALTER TABLE, et DROP TABLE
  • Langage de contrôle des données (DCL) - Le langage de contrôle des données est le sous-langage responsable des tâches administratives de contrôle de la base de données elle-même, plus particulièrement de l'octroi et de la révocation des autorisations d'accès à la base de données pour les utilisateurs. En SQL, cela correspond aux commandes GRANT, REVOKE, et DENY, entre autres.

Dans les sections ci-dessous, nous allons examiner ces sous-langages un par un et explorer leur signification et les commandes qu'ils représentent. Si vous souhaitez approfondir ces concepts, suivez notre cours interactif SQL pour les débutants cours interactif sur LearnSQL.fr. Il contient 129 exercices pratiques qui vous aideront à apprendre SQL par la pratique. Chaque exercice résolu vous permettra de prendre confiance en vos compétences SQL.

Langage de requête de données (DQL)

Le langage d'interrogation des données, ou DQL en abrégé, est le groupe de commandes responsables de l'interrogation des données d'une base de données. La principale commande DQL de SQL est la commande SELECT, qui extrait des données d'une ou plusieurs tables.

Prenons le tableau suivant. Il contient les détails d'un compte bancaire et s'appelle Accounts:

IDNameBalance
1John Doe2000
2Sally Swanson1800
3Richard Poor5

Si nous voulions récupérer les noms de tous les utilisateurs possédant un compte bancaire, nous utiliserions la commande SELECT:

SELECT Name 
FROM Accounts

La commande ci-dessus est une instruction typique du sous-langage DQL. Mais que se passe-t-il si nous voulons obtenir les noms de tous les utilisateurs dont le solde est supérieur à 1 500 dollars ? Dans ce cas, nous devons ajouter la clause WHERE à l'instruction :

SELECT Name 
FROM Accounts 
WHERE Balance > 1500

Consultez notre aide-mémoire SQL pour les débutants pour en savoir plus sur la commande SELECT (et bien plus encore).

Langage de manipulation des données (DML)

Le langage de manipulation des données, ou DML en abrégé, est le groupe de commandes responsables de la manipulation des données dans une base de données, ce qui implique généralement l'insertion, la modification ou la suppression de lignes dans les tables SQL.

La commande SQL permettant d'insérer une nouvelle ligne dans une table est la commande INSERT. Si nous voulons ajouter une ligne à la table Accounts pour un utilisateur appelé Evan Johnson avec un solde de 3200 $, nous ferions quelque chose comme ceci :

INSERT INTO Accounts (Name, Balance) 
VALUES (‘Evan Johnson’, 3200)

Si, à un moment donné dans le futur, Evan fait un retrait de 200 $, nous devrons mettre à jour son solde à 3 000 $. Pour modifier l'enregistrement du compte bancaire d'Evan, nous devons utiliser la commande UPDATE:

UPDATE Accounts SET Balance = 3000 
WHERE Name = ‘Evan Johnson’

Enfin, si Evan décide de fermer son compte dans notre banque, nous devrons supprimer son entrée dans la table. Accounts dans la table. Pour ce faire, nous devons utiliser la commande DELETE:

DELETE FROM Accounts 
WHERE Name = ‘Evan Johnson’

Les commandes décrites ci-dessus (INSERT, UPDATE et DELETE) représentent les principales opérations SQL de manipulation des données et constituent donc le langage de manipulation des données. Pour en savoir plus sur ces commandes, vous pouvez lire l'article SQL INSERT, SQL UPDATE, SQL DELETE - Oh My ! ou bien suivre le cours Comment modifier une base de données avec SQL cours ici même sur LearnSQL.fr.

Langage de définition des données (DDL)

Le langage de définition des données, ou DDL, est constitué des commandes responsables de la création, de la modification et de la suppression des tables SQL. Ces commandes sont CREATE TABLE, ALTER TABLE, et DROP TABLE.

Dans les exemples ci-dessus, nous avons travaillé avec la table Accounts qui avait déjà une structure et des enregistrements. Mais comment faire pour créer cette table en premier lieu ? Nous devons utiliser la commande CREATE TABLE:

CREATE TABLE Accounts (
	ID INT,
	Name VARCHAR(255),
	Balance INT
)

Et si nous voulions ensuite modifier la table pour qu'elle comporte une colonne stockant les numéros de téléphone des titulaires de compte ? Nous utiliserions la commande ALTER TABLE:

ALTER TABLE Accounts
ADD Phone VARCHAR(255)

Enfin, si nous voulons supprimer la table Accounts Enfin, si nous voulons supprimer complètement la table, nous devons utiliser la commande DROP TABLE:

DROP TABLE Accounts

Ces commandes ont beaucoup plus de fonctionnalités que celles énumérées ci-dessus et leur syntaxe spécifique tend à varier selon les dialectes SQL. Si vous souhaitez en savoir plus, suivez notre cours sur la création de la structure d'une base de données ou lisez Qu'est-ce qu'un dialecte SQL, et lequel devriez-vous apprendre ? pour avoir une idée des différentes implémentations SQL disponibles.

Langage de contrôle des données (DCL)

Le langage de contrôle des données, ou DCL , est responsable de toutes sortes de tâches administratives liées à la base de données elle-même. La plus importante est la définition des autorisations pour les utilisateurs de la base de données, qui s'effectue principalement par le biais des commandes GRANT, REVOKE et DENY.

GRANT est la commande SQL responsable de l'octroi de permissions à un utilisateur de la base de données. Si nous voulons accorder l'autorisation d'interroger la table Accounts à un utilisateur nommé Mark, nous ferions quelque chose comme ceci :

GRANT SELECT TO ‘mark’@’localhost’

Pour refuser explicitement l'autorisation d'interroger la table à un utilisateur de la base de données, utilisez la commande DENY comme suit :

DENY SELECT FROM ‘mark’@’localhost’

Notez que le fait de refuser explicitement une permission empêche qu'elle soit accordée à l'avenir. Si nous voulons simplement annuler une commande GRANT ou DENY, nous devons utiliser la commande REVOKE :

REVOKE SELECT FROM ‘mark’@’localhost’

La commande ci-dessus annule toutes les autorisations particulières GRANT et DENY attribuées à l'utilisateur, les remettant essentiellement à leur état par défaut.

Notez que ces commandes diffèrent grandement entre les dialectes SQL, les exemples ci-dessus supposent donc que vous utilisez Microsoft SQL Server. Il existe de nombreuses autres commandes qui traitent de l'administration des bases de données, mais elles diffèrent tellement d'une plate-forme à l'autre qu'il serait fastidieux de les aborder ici. Consultez la documentation de votre base de données pour plus de détails.

En savoir plus sur le langage SQL

Pour résumer, le langage SQL peut être divisé en quatre sous-langages :

  1. Lelangage de requête de données (DQL) pour l'interrogation des données.
  2. Data Manipulation Language (DML) pour la modification des données.
  3. Data Definition Language (DDL) pour la structuration des données.
  4. Data Control Language (DCL) pour l'administration de la base de données.

Si vous souhaitez en savoir plus sur SQL, rejoignez notre cours SQL pour les débutants où nous abordons tous ces sujets et bien d'autres encore. Vous pouvez également consulter notre aide-mémoireSQL pour les débutants pour un rafraîchissement rapide de la syntaxe de n'importe quelle commande.