Le Struc­tu­red Query Language, re­pré­senté par l’abré­via­tion SQL, compte parmi les langages de pro­gram­ma­tion les plus connus. Il fait office d’interface uni­ver­selle per­met­tant le travail avec des données re­la­tion­nelles ou des systèmes de gestion de base de données re­la­tion­nelle (SGBDR). Ce langage est ca­rac­té­risé par un nombre dé­con­cer­tant de commandes SQL. Nous allons vous présenter les plus im­por­tantes, ainsi que leurs modèles sous-jacents.

Nom de domaine
Votre domaine en un clic
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée
Conseil

Consultez notre article d’in­tro­duc­tion à SQL à l’aide d’exemples pour découvrir la pro­gram­ma­tion avec SQL.

Commandes SQL : qu’est-ce que c’est ?

Les commandes SQL per­met­tent d’ordonner à un système de gestion de base de données (SGBD) d’exécuter certaines tâches. Il peut notamment s’agir de définir des tables et leur structure, d’insérer, de modifier ou de supprimer des données et d’effectuer des requêtes.

Dif­fé­rentes normes ISO ou ANSI encadrent la portée des commandes SQL. De plus, il existe plusieurs dialectes spé­ci­fiques à l’im­plé­men­ta­tion. De cette manière, les im­plé­men­ta­tions des prin­ci­paux four­nis­seurs tels que Post­greSQL, MySQL, Oracle DBMS et Microsoft SQL Server disposent toutes de leur propre variante pour ce langage. Certains four­nis­seurs possèdent leurs propres commandes ; la plupart du temps, leurs dif­fé­rences con­cer­nent surtout les fonctions liées au trai­te­ment des chaînes de ca­rac­tères et d’autres données.

En réalité, SQL est composé de plusieurs sous-langages, chacun d’eux portant sur un domaine différent et bé­né­fi­ciant de ses propres commandes. Découvrez avec nous les prin­ci­paux types de commandes SQL.

Quels sont les dif­fé­rents types de commandes SQL ?

De façon ap­proxi­ma­tive, il est possible de répartir les commandes SQL les plus im­por­tantes en cinq sous-langages. Voici, pour chaque sous-langage, un aperçu de son domaine d’uti­li­sa­tion et de ses commandes :

Sous-langage SQL Commandes Exemples
Data De­fi­ni­tion Language (DDL) Commandes de dé­fi­ni­tion du schéma de la base de données : création, mo­di­fi­ca­tion et sup­pres­sion de tables de la base de données ; dé­fi­ni­tion des clés primaires, des clés étran­gères et des con­traintes CREATE TABLE, DROP TABLE
Data Ma­ni­pu­la­tion Language (DML) Commandes de ma­ni­pu­la­tion des données : mo­di­fi­ca­tion, insertion et sup­pres­sion d’ensembles de données INSERT, UPDATE
Data Query Language (DQL) Commandes d’in­ter­ro­ga­tion et de pré­pa­ra­tion des données SELECT
Data Control Language (DCL) Commandes de gestion des au­to­ri­sa­tions GRANT, REVOKE
Tran­sac­tion Control Language (TCL) Commandes de contrôle des tran­sac­tions COMMIT, ROLLBACK

Quelles sont les bases de la syntaxe des commandes SQL ?

SQL est un langage dé­cla­ra­tif, ce qui le distingue de la plupart des autres langages de pro­gram­ma­tion po­pu­laires. En d’autres termes, il décrit le résultat à atteindre sans pour autant préciser les étapes exactes qu’il convient de suivre pour arriver à cet objectif. Cette par­ti­cu­la­rité donne un langage avec des commandes qui sont souvent plus longues, mais qui nécessite gé­né­ra­le­ment moins de lignes de code que les langages im­pé­ra­tifs, plus con­ven­tion­nels.

À titre d’exemple, in­té­res­sons-nous à la commande SQL « DROP TABLE IF EXISTS ». Comme vous l’avez sans doute compris, cette commande unique permet de supprimer une table si celle-ci existe déjà :

DROP TABLE IF EXISTS SomeTable;

Pour créer un exemple de code aux fonctions si­mi­laires avec Python, il est né­ces­saire d’appeler plusieurs d’entre elles, avec une ra­mi­fi­ca­tion sur deux lignes dif­fé­rentes :

if db.has_table(some_table):
    db.drop_table(some_table)

Comme vous avez pu le constater, une seule commande SQL peut contenir plusieurs mots-clés. Ainsi; les dif­fé­rentes commandes se res­semblent sur le plan visuel. Prenons par exemple les deux commandes SQL « CREATE TABLE » et « CREATE OR REPLACE VIEW » ; si, de prime abord, elles semblent toutes deux être des ex­pres­sions d’une commande « CREATE » sous-jacente, il n’en est rien. Ces commandes se res­semblent, mais elles sont to­ta­le­ment in­dé­pen­dantes l’une de l’autre.

Comme c’est également le cas d’autres langages, certaines commandes SQL peuvent prendre en charge des pa­ra­mètres. La plupart du temps, il s’agit de noms de bases de données, de tables ou de colonnes. Ici, nous pouvons par exemple in­ter­ro­ger les colonnes « Name » (nom) et « Age » (âge) de la table « People » (personnes) :

SELECT Name, Age FROM People;
Note

Les commandes SQL telles que SELECT et CREATE TABLE s’écrivent gé­né­ra­le­ment en ma­jus­cules. En réalité, SQL ne fait toutefois aucune dis­tinc­tion entre les ma­jus­cules et les mi­nus­cules. Il ne s’agit donc là que d’une con­ven­tion très répandue.

En réalité, les commandes SQL cor­res­pon­dent plutôt à des ins­truc­tions. Il existe d’autres cons­truc­tions syn­taxiques qui, dans une certaine mesure, agissent également comme des commandes. Voici une pré­sen­ta­tion des prin­ci­paux éléments syn­taxiques du langage SQL :

Terme Équi­valent anglais Ex­pli­ca­tion Exemple
Ins­truc­tion Statement Ordonne au système de gestion de base de données re­la­tion­nelle d’effectuer une action et se termine par un point-virgule CREATE TABLE People;
Clause Clause Modifie une ins­truc­tion et ne peut ap­pa­raître qu’à l’intérieur de celle-ci WHERE, HAVING
Ex­pres­sion Ex­pres­sion Renvoie une valeur lors de l’éva­lua­tion 6 * 7
Iden­ti­fi­ca­teur Iden­ti­fier Re­pré­sente le nom d’un objet de la base de données, d’une variable ou d’une procédure et peut être qualifié ou non dbname.tablename / tablename
Prédicat Predicate Renvoie, en tant qu’ex­pres­sion, une valeur TRUE, FALSE ou UNKNOWN Age < 42
Requête Query Renvoie, en tant qu’ins­truc­tion spéciale, l’ensemble de données trouvé comme résultat SELECT Name FROM People WHERE Age < 42;
Fonction Function Traite une ou plusieurs valeurs, gé­né­ra­le­ment pour en créer une nouvelle UPPER('text') -- Renvoie ’TEXT’
Com­men­taire Comment Permet de commenter le code SQL, mais n’est pas pris en compte par le système de gestion de base de données re­la­tion­nelle -- Com­men­taire jusqu’à la fin de la ligne / /* Com­men­taire sur plusieurs lignes, le cas échéant */

Pré­sen­ta­tion des prin­ci­pales commandes SQL

Une base de données structure ses données de manière hié­rar­chique à l’aide de dif­fé­rentes couches de mémoire, qui vont du serveur de la base de données jusqu’à la valeur en­re­gis­trée dans un champ. Étant donné que SQL est en mesure de contrôler tous les aspects d’un système de gestion de base de données re­la­tion­nelle (SGBDR), des commandes SQL existent pour chacune des couches sus­men­tion­nées. Voici un aperçu de la hié­rar­chie des dif­fé­rents objets d’un système de gestion de base de données re­la­tion­nelle :

Objet de système de gestion de base de données re­la­tion­nelle Contenu
Serveur Bases de données
Base de données Tables
Table Ensembles de données
Ensemble de données Champs
Champ Valeur d’un type donné

En plus des prin­ci­paux objets des systèmes de gestion de base de données re­la­tion­nelle présentés ci-dessus, il est également possible d’utiliser d’autres objets tels que les vues (Views) et les pro­cé­dures stockées (Stored Pro­ce­dures). Des commandes SQL propres à chacun de ces objets existent également. Dé­cou­vrons à présent les commandes relatives aux cinq sous-langages prin­ci­paux de SQL :

  1. Data De­fi­ni­tion Language (DDL) : langage de dé­fi­ni­tion des données
  2. Data Ma­ni­pu­la­tion Language (DML) : langage de ma­ni­pu­la­tion des données
  3. Data Query Language (DQL) : langage d’in­ter­ro­ga­tion des données
  4. Data Control Language (DCL) : langage de contrôle des données
  5. Tran­sac­tion Control Language (TCL) : langage de contrôle des tran­sac­tions

Commandes SQL pour la dé­fi­ni­tion de données

Avec ces commandes SQL, vous pouvez définir des struc­tures de données. Toutes ces commandes agissent sur des objets agrégés, comme les bases de données, les tables ou encore les index. Un objet agrégé peut stocker plusieurs ensembles de données ; un ensemble de données va quant à lui contenir plusieurs champs, chacun de ces champs étant associé à une colonne. La colonne permet de définir le type de données contenu par le champ (un nombre, une chaîne de ca­rac­tères, une valeur booléenne…). Il est de plus possible de spécifier des res­tric­tions pour les valeurs de ces colonnes : « doit être unique », « ne peut pas être nulle », etc.

Commandes SQL pour la dé­fi­ni­tion de bases de données

Les bases de données sont toujours au sommet des systèmes de gestion de base de données re­la­tion­nelle (SGBDR). Des commandes SQL per­met­tent de créer ou encore de supprimer celles-ci :

Commande SQL Ex­pli­ca­tion Exemple
CREATE DATABASE Créer une nouvelle base de données CREATE DATABASE Store;
DROP DATABASE Supprimer en­tiè­re­ment la base de données DROP DATABASE Store;
USE Sé­lec­tion­ner la base de données pour les commandes à venir USE Store;

Commandes SQL pour la dé­fi­ni­tion de tables

Pour créer une base de données, il faut d’abord définir son schéma. Celui-ci est essentiel si vous voulez utiliser ef­fi­ca­ce­ment votre base de données. Il nécessite une con­cep­tion des plus mé­ti­cu­leuses et une re­pré­sen­ta­tion des dif­fé­rentes tables et de leurs as­so­cia­tions. En règle générale, le schéma d’une base de données se développe à partir de dia­grammes entité-as­so­cia­tion ou de dia­grammes UML spé­ci­fiques.

Le schéma de la base de données prend donc la forme d’une des­crip­tion abstraite, tandis que sa structure se crée en utilisant les commandes SQL cor­res­pon­dantes. La dé­fi­ni­tion des tables s’effectue avec leurs colonnes et leurs types, et les éventuels liens entre celles-ci sont ma­té­ria­li­sés par des Foreign Keys (c’est-à-dire des « clés étran­gères »). Vous avez toujours la pos­si­bi­lité de modifier cette structure par la suite, à l’aide d’autres commandes SQL. Découvrez avec nous les prin­ci­pales commandes que vous pouvez utiliser :

Commande SQL Ex­pli­ca­tion Exemple
CREATE TABLE Créer une nouvelle table dans la base de données ; vous pouvez définir le nom des colonnes et leurs types en plus du nom de la table CREATE TABLE Customers ( Cus­to­me­rID INT UNSIGNED NOT NULL AUTO_INCREMENT, Cus­to­mer­Name VARCHAR(255) NOT NULL, Country VARCHAR(60) NOT NULL, PRIMARY KEY (Cus­to­me­rID) );
ALTER TABLE Modifier une table existante ; vous pouvez insérer ou supprimer des colonnes, mais aussi en modifier le type ou le nom ALTER TABLE Customers ADD Email VARCHAR(50);
TRUNCATE TABLE Supprimer toutes les données d’une table ; vous pouvez toutefois en conserver la structure TRUNCATE TABLE Customers;
DROP TABLE Supprimer en­tiè­re­ment une table ; si celle-ci n’existe pas, une erreur est signalée au moment de l’exécution DROP TABLE Customers;
DROP TABLE IF EXISTS Supprimer une table, à la condition que celle-ci existe DROP TABLE IF EXISTS Customers;
ALTER COLUMN Modifier le type de données d’une colonne existante ALTER TABLE Customers ALTER COLUMN Email VARCHAR(255);
DROP COLUMN Supprimer en­tiè­re­ment une colonne de la table concernée ALTER TABLE customers DROP COLUMN Email;
CREATE INDEX Créer un index avec un nom pour une ou plusieurs colonnes d’une table existante CREATE INDEX IdxEmail ON Customers (Email);
DROP INDEX Supprimer un index existant ALTER TABLE Customers DROP INDEX IdxEmail;

L’une des pro­prié­tés im­por­tantes des systèmes de gestion de base de données (SGBD) consiste à garantir la cohérence des données. Vous pouvez donc décider que les champs de certaines colonnes ne doivent pas être vides ou que les valeurs contenues par ceux-ci doivent rester dans les limites au­to­ri­sées. Il s’agit là de Cons­traints (con­traintes). De la même manière, les Foreign Keys (ou clés étran­gères) per­met­tent d’exiger l’éta­blis­se­ment de liens corrects entre plusieurs tables.

Il suffit d’utiliser une série de clauses dans les ins­truc­tions relatives à la dé­fi­ni­tion des données pour spécifier les con­traintes ap­pli­cables aux dif­fé­rentes colonnes. Voici quelques-unes de ces con­traintes (sans exemple) :

Commande SQL Ex­pli­ca­tion
NOT NULL La valeur du champ concerné ne peut pas être nulle
UNIQUE La valeur du champ concerné ne peut pas ap­pa­raître deux fois dans la même colonne
DEFAULT Une valeur par défaut est définie pour le champ ; elle s’applique si aucune valeur n’est indiquée pour le champ concerné au moment de la création de l’ensemble de données
CHECK La valeur du champ doit remplir une condition
PRIMARY KEY Le champ contient la clé primaire (implique les commandes « UNIQUE » et « NOT NULL »)
FOREIGN KEY La valeur du champ doit être une clé primaire issue d’une autre table

Commandes SQL pour la ma­ni­pu­la­tion de données

Si les tables de votre base de données sont déjà définies, vous devez vous occuper des opé­ra­tions sur les dif­fé­rents ensembles de données. En utilisant les commandes SQL ap­pro­priées, vous pouvez insérer, modifier et supprimer des ensembles de données. Dans ce contexte, il est également question des opé­ra­tions CRUD de base (Create, Read, Update, Delete, soit « Créer, lire, mettre à jour et supprimer »), qui se re­trou­vent également dans les bases de données NoSQL :

Commande SQL Ex­pli­ca­tion Exemple
INSERT INTO Insérer un ensemble de données dans une table INSERT INTO Customers (Cus­to­mer­Name) VALUES('Tester');
UPDATE Modifier les champs d’un ou de plusieurs ensembles de données UPDATE Customers SET Email = 'test@example.com' WHERE Cus­to­mer­Name = 'Tester';
DELETE FROM Supprimer des ensembles de données d’une table DELETE FROM Customers WHERE Cus­to­mer­Name = 'Tester';

Attention : les clauses ou les fonctions « WHERE », « SET » et « VALUES » que vous voyez dans les exemples ci-dessus peuvent également ap­pa­raître dans d’autres si­tua­tions. Elles portent toujours le même nom, mais les règles encadrant leur uti­li­sa­tion peuvent toutefois lé­gè­re­ment différer. Nous vous con­seil­lons donc de faire preuve de prudence lorsque vous utilisez les commandes SQL « UPDATE » et « DELETE FROM » sans la clause « WHERE ». Si vous le faites, sachez que tous les ensembles de données contenus dans la table concernée seront modifiés ou supprimés.

Commandes SQL pour l’in­ter­ro­ga­tion des données

La commande « SELECT » est peut-être la plus connue parmi toutes celles que compte le langage SQL. Elle vous permet en effet d’in­ter­ro­ger les données d’une base de données. En règle générale, cela n’a pas pour effet de modifier la base de données. Il n’est donc pas rare que la commande « SELECT » soit mise à la dis­po­si­tion des analystes. Dé­cou­vrons ensemble les prin­ci­paux com­po­sants de la commande SQL « SELECT » :

Commande SQL Ex­pli­ca­tion Exemple
SELECT In­ter­ro­ger les données de la base de données concernée SELECT Cus­to­mer­Name FROM Customers;
WHERE Limiter la requête aux en­re­gis­tre­ments de données répondant à un prédicat donné SELECT Email FROM Customers WHERE Cus­to­mer­Name = 'Tester';
AS Définir un alias pour une table ou une ligne dans une requête SELECT Cus­to­me­rID AS ID, Cus­to­mer­Name AS Customer FROM Customers;
HAVING Limiter la requête aux ensembles de données per­ti­nents en utilisant la fonction d’agré­ga­tion SELECT COUNT(Cus­to­me­rID), Country FROM Customers HAVING COUNT(Cus­to­me­rID) >= 1;

La commande SQL « SELECT » est la seule qui permet d’in­ter­ro­ger des données, mais ses pos­si­bi­li­tés d’uti­li­sa­tion sont nom­breuses. Il existe en effet une série de clauses pouvant vous aider à filtrer, trier et regrouper les données générées ; découvrez-les ci-après.

Commandes SQL pour l’amé­lio­ra­tion des requêtes

La commande SQL « SELECT » renvoie in­va­ria­ble­ment un Result Set, ou « jeu de résultats ». D’un point de vue con­cep­tuel, un jeu de résultats peut être re­pré­senté comme une table avec des colonnes contenant des valeurs. D’un point de vue pratique, il est souvent né­ces­saire de filtrer ces résultats, de les trier ou encore de limiter le nombre d’ensembles de données générés. Pour chaque cas d’uti­li­sa­tion, il existe une clause que vous pouvez utiliser dans le cadre de votre commande SQL « SELECT » :

Commande SQL Ex­pli­ca­tion Exemple
DISTINCT Supprimer tout doublon du jeu de résultats SELECT DISTINCT Country FROM Customers;
LIMIT Limiter le jeu aux résultats les plus élevés SELECT * FROM Customers LIMIT 5;
GROUP BY Regrouper les résultats en un jeu sur la base d’une ca­rac­té­ris­tique commune SELECT Cus­to­mer­Name, Country FROM Customers GROUP BY Country;
ORDER BY Trier le jeu de résultats sur la base d’une ca­rac­té­ris­tique SELECT Cus­to­mer­Name, Email FROM Customers SORT BY Cus­to­mer­Name;
ASC Utiliser la fonction de tri dans l’ordre croissant (ascending) SELECT DISTINCT Country FROM Customers SORT BY Country ASC;
DESC Utiliser la fonction de tri dans l’ordre dé­crois­sant (des­cen­ding) SELECT DISTINCT Country FROM Customers SORT BY Country DESC;

Commandes SQL pour l’as­so­cia­tion de requêtes

En plus d’améliorer votre jeu de résultats, vous pouvez également combiner des requêtes sur plusieurs tables. À titre de rappel, une commande SQL « SELECT » renvoie un jeu de résultats. Certaines commandes SQL peuvent donc, con­for­mé­ment aux règles de la théorie des ensembles re­la­tion­nels, vous permettre de fusionner deux jeux de résultats.

Pour vous expliquer dans le détail le fonc­tion­ne­ment des commandes SQL per­met­tant d’associer des requêtes, nous devrions faire appel à des exemples plus complexes, avec la dé­fi­ni­tion de plusieurs tables. Ici, nous avons donc choisi de ne vous présenter aucun exemple de code. Dé­cou­vrons ensemble les prin­ci­pales opé­ra­tions que vous pouvez utiliser dans ce contexte :

Commande SQL Ex­pli­ca­tion
UNION Associer deux jeux de résultats, dont les colonnes doivent être du même type et dans le même ordre ; leurs lignes sont ainsi fu­sion­nées
INNER JOIN Filtrer deux jeux de résultats sur la base d’un critère commun
LEFT JOIN Associer le jeu de résultats de la requête de gauche aux résultats cor­res­pon­dants de la requête de droite ; si les champs ne cor­res­pon­dent pas, leur valeur devient nulle
RIGHT JOIN Associer le jeu de résultats de la requête de droite aux résultats cor­res­pon­dants de la requête de gauche ; si les champs ne cor­res­pon­dent pas, leur valeur devient nulle
FULL OUTER JOIN Combiner les commandes « LEFT JOIN » et « RIGHT JOIN »

Commandes SQL pour la sau­ve­garde et la ré­pé­ti­tion de requêtes

Comme nous avons pu le voir, les requêtes SQL peuvent s’avérer assez complexes dans certaines cir­cons­tances. Dans les faits, il est souvent judicieux de répéter ces requêtes. En principe, il est possible de sau­ve­gar­der les commandes SQL con­cer­nées sous forme de code, puis de s’en servir en cas de besoin. Cette méthode n’est toutefois pas très efficace. Fort heu­reu­se­ment, des commandes SQL spéciales per­met­tent de sau­ve­gar­der des requêtes complexes di­rec­te­ment dans le système de gestion de base de données concerné, et ce, en tant qu’entités.

Pour commencer, in­té­res­sons-nous aux vues (Views en anglais). Une vue de la base de données cor­res­pond ap­proxi­ma­ti­ve­ment à une requête en­re­gis­trée. À titre de rappel, une requête renvoie un jeu de résultats présenté sous la forme d’une table. Au lieu d’ignorer ce jeu, nous choi­sis­sons de l’en­re­gis­trer en tant que vue. Le terme de « table virtuelle » est donc également utilisé pour désigner une vue. De manière générale, il n’est possible d’accéder à une vue qu’en mode lecture. Quelques commandes SQL peuvent vous permettre de tra­vail­ler avec les vues :

Commande SQL Ex­pli­ca­tion Exemple
CREATE VIEW Créer une nouvelle vue CREATE VIEW Ger­man­Cus­to­mers AS SELECT Cus­to­mer­Name, Email FROM Customers WHERE Country = "DE";
ALTER VIEW Modifier une vue existante ALTER VIEW Ger­man­Cus­to­mers AS SELECT * FROM Customers WHERE Country = "DE";
CREATE OR REPLACE VIEW Créer une nouvelle vue ou, le cas échéant, remplacer une vue existante CREATE OR REPLACE VIEW Ger­man­Cus­to­mers AS SELECT * FROM Customers WHERE Country = "DE";
SHOW CREATE VIEW Afficher la commande SQL utilisée pour créer la vue en question SHOW CREATE VIEW Ger­man­Cus­to­mers;
DROP VIEW Supprimer une vue existante DROP VIEW Ger­man­Cus­to­mers;

En plus des vues de la base de données, vous pouvez tirer parti des « pro­cé­dures stockées » (Stored Pro­ce­dures en anglais). Les pro­cé­dures stockées vous per­met­tent de répéter certaines requêtes et sont donc plus complexes que les vues. Elles peuvent prendre en charge des pa­ra­mètres, et ainsi assembler des requêtes de façon dynamique. Une procédure stockée peut en outre vous permettre de bé­né­fi­cier d’un accès en écriture aux données sous-jacentes. Nous vous pré­sen­tons ci-dessous les commandes SQL cor­res­pon­dantes, mais nous ne disposons pas d’assez de place pour vous proposer des exemples :

Commande SQL Ex­pli­ca­tion
CREATE PROCEDURE Créer une nouvelle procédure
ALTER PROCEDURE Modifier une procédure existante
CREATE OR REPLACE PROCEDURE Créer une nouvelle procédure ou, le cas échéant, remplacer une procédure existante
DROP PROCEDURE Supprimer une procédure existante
CALL Exécuter une procédure stockée

En utilisant une procédure stockée, vous déplacez le code du client vers le serveur. Une fois cette sé­pa­ra­tion effectuée, vous bé­né­fi­ciez d’une plus grande sécurité et de meil­leures per­for­mances. Si la « logique métier » contenue dans une procédure stockée se trouve en dehors du système de contrôle de version, cela peut vous être dom­ma­geable. Comme les pro­cé­dures stockées sont largement tri­bu­taires du système de gestion de base de données qui les entourent, un chan­ge­ment de four­nis­seur peut, dans le pire des scénarios, entraîner une perte de fonc­tion­na­lité.

Note

Attention à ne pas confondre les Stored Pro­ce­dures (pro­cé­dures stockées) avec les Prepared Sta­te­ments (ins­truc­tions préparées). Ces deux mé­ca­nismes ont certes pour objectif d’améliorer la sécurité, mais les Prepared Sta­te­ments se dé­fi­nis­sent plutôt du côté de l’ap­pli­ca­tion client.

Commandes SQL pour le contrôle des accès

Un seul serveur de bases de données peut renfermer plusieurs bases de données. Si vous souhaitez les ad­mi­nis­trer in­dé­pen­dam­ment les unes des autres, vous pouvez mettre en place des mé­ca­nismes de contrôle des accès. Vous avec donc la pos­si­bi­lité de définir le niveau des droits d’accès de chaque uti­li­sa­teur aux bases de données et aux tables que celles-ci con­tien­nent. Vous pouvez en outre créer des groupes dans lesquels vous pouvez ca­té­go­ri­ser vos uti­li­sa­teurs. Pour ce faire, deux commandes SQL sont par­ti­cu­liè­re­ment adaptées :

Commande SQL Ex­pli­ca­tion Exemple
GRANT Accorder un droit d’accès GRANT ALL ON SomeDB.* TO 'john'@'lo­cal­host';
REVOKE Révoquer un droit d’accès REVOKE INSERT ON *.* FROM 'john'@'lo­cal­host';

Commandes SQL pour le contrôle des tran­sac­tions

Les garanties apportées par les pro­prié­tés ACID cons­ti­tuent l’un des avantages de l’uti­li­sa­tion des systèmes de gestion de base de données re­la­tion­nelles (SGBDR). Pour faire court, elles ga­ran­tis­sent la bonne or­ga­ni­sa­tion et la bonne dé­fi­ni­tion de vos données. Sur le plan technique, elles utilisent des tran­sac­tions in­di­vi­sibles sous la forme d’Atomic Ope­ra­tions (« opé­ra­tions atomiques »). Soit la tran­sac­tion est exécutée en­tiè­re­ment et sans aucune erreur, soit une erreur se produit et les dif­fé­rentes étapes sont alors annulées. Dé­cou­vrons ensemble les commandes SQL pour le contrôle des tran­sac­tions :

Commande SQL Ex­pli­ca­tion Exemple
START TRAN­SAC­TION Marquer le début d’une tran­sac­tion START TRAN­SAC­TION;
COMMIT Mener à bien une tran­sac­tion entamée START TRAN­SAC­TION; TRUNCATE TABLE Customers; COMMIT;
ROLLBACK In­ter­rompre une tran­sac­tion entamée et restaurer les données de manière à ce qu’elles re­trou­vent leur état initial START TRAN­SAC­TION; TRUNCATE TABLE Customers; ROLLBACK;
SAVEPOINT Créer un point de sau­ve­garde avec un nom au sein d’une tran­sac­tion START TRAN­SAC­TION; SAVEPOINT Be­fo­reAdd­Data;
ROLLBACK TO Revenir à un point de sau­ve­garde avec un nom ROLLBACK TO Be­fo­reAdd­Data;

Pré­sen­ta­tion des pro­prié­tés ACID men­tion­nées ci-avant :

Propriété ACID Équi­valent français Ex­pli­ca­tion
Atomicity Atomicité Les tran­sac­tions sont « in­di­vi­sibles ». Cela signifie qu’elles s’exécutent en­tiè­re­ment ou pas du tout. Si vous in­ter­rom­pez une tran­sac­tion atomique, le système revient à l’état dans lequel il se trouvait avant le début de ladite tran­sac­tion.
Con­sis­tency Cohérence Après l’exécution d’une tran­sac­tion, les données réap­pa­rais­sent sous une forme cohérente.
Isolation Isolation Les tran­sac­tions si­mul­ta­nées ne doivent pas avoir d’effet les unes sur les autres.
Du­ra­bi­lity Du­ra­bi­lité Les con­sé­quences d’une tran­sac­tion sur les données con­cer­nées doivent être durables. Les résultats d’une tran­sac­tion réussie ne doivent pas dis­pa­raître dans le cas, par exemple, d’une panne du SGBDR.
Conseil

Épinglez notre guide numérique à votre barre des tâches Windows. De cette manière, vous pourrez toujours vous référer fa­ci­le­ment à nos dif­fé­rents articles. Pour ce faire, consultez le lien cor­res­pon­dant à votre situation :

Aller au menu principal