Qu’est-ce que le langage de requête structuré (SQL) ?

Gros plan d’une main sur un ordinateur de bureau surveillant une salle de contrôle

Auteurs

Alexandra Jonker

Staff Editor

IBM Think

Tim Mucci

IBM Writer

Gather

Qu’est-ce que le langage de requête structuré ?

Le langage de requête structuré (SQL) est un langage de programmation standardisé et spécialisé qui permet d’interagir avec des systèmes de gestion de bases de données relationnelles (SGBDR) comme MySQL, SQL Server, IBM Db2, PostgreSQL et Oracle Database.

Les requêtes SQL (également appelées commandes SQL ou instructions SQL) permettent aux utilisateurs d’ajouter, de récupérer, de mettre à jour, de supprimer, d’agréger et de gérer facilement les données dans une base de données relationnelle (ou SQL database). Dans ces systèmes, les données structurées sont organisées en lignes et colonnes qui, ensemble, forment des tables. Les données sont généralement structurées en plusieurs tables connexes, qui peuvent être liées à l'aide de clés primaires ou étrangères.

Contrairement à d’autres langages de programmation, SQL est un langage déclaratif, ce qui signifie qu’il décrit ce que l’utilisateur attend de l’ordinateur, et non la manière d’y parvenir. Les langages impératifs ou procéduraux (comme Java et COBOL), quant à eux, nécessitent des instructions étape par étape.

Par exemple, lorsqu’un utilisateur rédige une requête SQL pour récupérer des données, il n’a pas besoin de décrire les étapes à suivre pour obtenir ces données ; il définit simplement le résultat attendu :

SELECT nom, e-mail
FROM client
WHERE city = ’New York’ ;

Polyvalent, SQL est un outil essentiel de la pile technologique moderne, connu pour ses capacités de manipulation de données, son traitement rapide des requêtes et ses fonctionnalités de sécurité solides. Il allie également compatibilité des différents systèmes, évolutivité pour répondre aux besoins croissants en matière de données et support open source et communautaire robuste.

L’histoire de SQL

Dans les années 1970, les scientifiques d’IBM Donald Chamberlin et Raymond Boyce ont développé et introduit le SQL. Il est issu du concept de modèles relationnels et s’appelait à l’origine SEQUEL, pour « Structured English Query Language », avant d’être abrégé en SQL. Il a été commercialisé en 1979 et est devenu depuis la norme mondiale pour les systèmes de gestion de bases de données relationnelles.

Le SQL a été normalisé par l’American National Standards Institute (ANSI) en 1986, puis par l’Organisation internationale de normalisation (ISO) en 1987. Bien qu’il s’agisse d’une norme, le SQL possède différents dialectes, tels que T-SQL pour Microsoft SQL Server et PL/SQL pour Oracle Database. Ces dialectes SQL répondent à des besoins système spécifiques, tout en restant conformes aux principales commandes standard ANSI telles que SELECT, UPDATE, DELETE, INSERT et WHERE.

Les dernières actualités technologiques, étayées par des avis d’expert

Restez au fait des tendances les plus étonnantes du secteur dans le domaine de l’IA, de l’automatisation, des données et bien d’autres avec la newsletter Think. Consultez la déclaration de confidentialité d’IBM.
Lire la Déclaration de confidentialité d’IBM.

Merci ! Vous êtes abonné(e).

Vous recevrez votre abonnement en anglais. Vous trouverez un lien de désabonnement dans chaque newsletter. Vous pouvez gérer vos abonnements ou vous désabonner ici. Consultez la Déclaration de confidentialité d’IBM pour plus d’informations.

Pourquoi SQL est-il important ?

Depuis sa création dans les années 1970, le SQL est devenu l'épine dorsale des systèmes de gestion de bases de données modernes.

Contrairement aux langages de programmation généralistes, SQL est spécialement conçu pour les bases de données relationnelles, qui sont quant à elles optimisées pour SQL. Cette conception mutuelle fait de SQL un outil de gestion des données très efficace.

En raison de son caractère déclaratif, SQL est accessible même aux utilisateurs ayant une expérience limitée en programmation, ce qui en fait un langage de choix pour les débutants. Son usage généralisé et son intégration avec d’autres langages de programmation, comme Python et Java, en font une compétence recherchée dans les environnements de programmation et de gestion des données.

Les analystes de données, les data scientists et les administrateurs de bases de données utilisent régulièrement SQL, car il excelle dans des tâches telles que le traitement, la définition, le partage et l’intégration des données, ou encore le contrôle d’accès et l’analyse des big data.

En science des données, SQL permet de créer des bases de données qui stockent d’immenses jeux de données à des fins d’analyse. Sa capacité à manipuler et à récupérer les données structurées à partir de ces vastes jeux est également essentielle au développement des applications d’intelligence artificielle (IA) et de machine learning (ML), qui exigent des données de qualité pour être entraînées.

En respectant les propriétés ACID (atomicité, cohérence, isolation et durabilité), SQL permet de fiabiliser le traitement des transactions dans les cas d’utilisation critiques et le traitement des données sensibles. Il permet également une prise de décision axée sur les données plus précise, des analyses avancées et une Business Intelligence améliorée.

AI Academy

La gestion des données est-elle le secret de l’IA générative ?

Découvrez pourquoi des données de haute qualité sont essentielles pour une utilisation réussie de l’IA générative.

Quels sont les avantages de SQL ?

SQL présente de nombreux avantages, c’est pourquoi il demeure l’un des langages de programmation les plus utilisés et les plus durables.

Manipulation aisée des données

Les commandes simples de SQL (comme GROUP BY, ORDER BY, GRANT et REVOKE) permettent aux utilisateurs de se servir des bases de données, quel que soit leur niveau de compétence.

Traitement rapide des requêtes

Les index SQL et les techniques d’optimisation des requêtes accélèrent la récupération des données et, par conséquent, améliorent la performance des bases de données.

Sécurité des données renforcée

Les bases de données SQL proposent des fonctionnalités de sécurité telles que l’authentification des utilisateurs, les contrôles d’accès et le chiffrement pour protéger les données.

Communalité et compatibilité

SQL adhère aux normes SQL ANSI et ISO, qui permettent d’assurer la compatibilité avec divers systèmes et plateformes, notamment les environnements cloud et les outils de gestion des big data.

Évolutivité

Le SQL est capable de gérer efficacement des bases de données de toute taille, s’adaptant aux besoins croissants en matière de données sans perte notable de performance.

Support open source

De nombreuses bases de données SQL sont open source et bénéficient d’un soutien actif d’une large communauté qui contribue à l’amélioration continue et à la résolution des problèmes.

Requête SQL : comment ça marche ?

Les bases de données relationnelles organisent les données au format tabulaire (lignes et colonnes) et facilitent les relations entre les différentes tables. Par exemple, une base de données de service client peut comporter des tables distinctes pour les informations clients, les achats, les codes produits et les contacts, reliées entre elles par des clés comme un identifiant client unique.

SQL permet aux utilisateurs d’écrire des requêtes (et sous-requêtes) pour manipuler ces données. Ces commandes sont exécutées par plusieurs composants logiciels au cours du processus SQL :

Un analyseur vérifie l’exactitude des instructions SQL et les convertit dans un format que la base de données peut comprendre, tel que les symboles tokenisés. Cette étape fait appel à l’analyse de la syntaxe et à la vérification sémantique. L’analyseur permet également de s’assurer que l’utilisateur est autorisé à effectuer l’opération.

Ensuite, un moteur relationnel, également connu sous le nom d’optimiseur de requêtes, planifie les stratégies de récupération, de modification ou d’ajout de données les plus efficaces. Pour ce faire, il évalue différents plans d’exécution des requêtes. Il écrit le plan en bytecode, qui est un langage de machine virtuelle. Cette étape est cruciale pour optimiser la performance de la base de données et l’utilisation des ressources.

Enfin, un moteur de stockage traite le bytecode, exécute l’instruction SQL et gère le stockage physique des données. Il gère la représentation physique des données, notamment les formats de fichiers et la mise en mémoire tampon des données. Il se charge également de renvoyer le résultat à l’utilisateur ou à l’application. Cette étape permet de garantir un accès aux données et des mises à jour sur disque efficaces. Ce type de liaison permet de mettre en place des relations (par exemple, un-à-plusieurs ou plusieurs-à-plusieurs) établies à l’aide de clés primaires et étrangères pour garantir l'intégrité des données.

Principaux composants des systèmes SQL

Les systèmes de gestion de bases de données relationnelles (également appelés systèmes SQL) comportent de nombreux composants, notamment :

  • Base de données : un référentiel numérique permettant de stocker, de gérer et de sécuriser les données rassemblées et organisées.

  • Tables de base de données : données organisées en lignes et en colonnes ; chacune contient des informations sur un type d’entité.

  • Requêtes SQL : les requêtes SQL sont des instructions écrites en SQL, qui permettent de manipuler les données au sein d’une base de données relationnelle.

  • Contraintes SQL : règles qui contrôlent les données dans les colonnes et les tables d’une base de données pour assurer leur intégrité.

  • Procédures stockées : commandes SQL enregistrées pour une réutilisation continue.

  • Transactions : une ou plusieurs commandes SQL regroupées en une seule unité de travail ou d’exploitation.

  • Types de données : règles définissant le type de données pouvant être stockées dans une colonne.

  • Index : un objet de base de données qui accélère la récupération des données en réduisant le nombre d’accès au disque nécessaires aux requêtes.

  • Vues : elles fonctionnent comme des tables virtuelles basées sur des requêtes SQL, simplifiant les requêtes complexes et améliorant la sécurité en limitant l’accès aux données sous-jacentes.

  • Sécurité et autorisations : fonctions permettant de gérer l’accès des utilisateurs, tandis que les mécanismes de sauvegarde et récupération de stockage protègent les données contre la perte et la corruption.

Types de commandes SQL : DDL, DML, DQL, DCL et TCL

Les commandes SQL sont généralement réparties dans les catégories suivantes :

  • Langage de définition des données (DDL)
  • Langage de manipulation des données (DML)
  • Langage de contrôle des données (DCL)
  • Langage d’interrogation des données (DQL)
  • Langage de contrôle des transactions (TCL)

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

Le langage de définition des données gère les objets de base de données tels que les tables, les vues et les index. Il définit la structure et l’organisation des données stockées, ainsi que les relations entre les différents éléments de données. 

Langage de manipulation des données (DML)

Le langage de manipulation des données gère les données au sein d’une base de données par le biais d'opérations comme INSERT, UPDATE et OUTER JOIN, qui permettent d’ajouter, de modifier et de combiner les données.

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

Le langage de contrôle des données permet de contrôler l'accès à ces dernières au moyen de commandes comme GRANT (pour accorder des permissions) et REVOKE (pour les retirer). Il peut restreindre la capacité d’un utilisateur à récupérer, ajouter et modifier les données.

Langage d’interrogation des données (DQL)

Le langage d’interrogation des données exécute des requêtes pour récupérer des informations, généralement à l’aide de la commande SELECT. Il peut récupérer des éléments de données bien spécifiques, ou une série d’éléments.

Langage de contrôle des transactions (TCL)

Le langage de contrôle des transactions gère les modifications apportées aux transactions pour garantir l’intégrité des données, et prend en charge les opérations ROLLBACK et COMMIT pour respectivement annuler ou stocker les modifications. Il permet de coordonner le partage simultané des données par les utilisateurs.

Quelles sont les commandes SQL les plus courantes ?

Les bases de données SQL prennent en charge diverses instructions SQL pour exploiter les données. Toutefois, les commandes SQL peuvent varier d’une base de données à l’autre, chacune pouvant utiliser sa propre syntaxe SQL.

Voici quelques exemples de commandes SQL de base :

SELECT

Récupère les données d'une ou plusieurs tables.

SELECT nom, e-mail

FROM client

WHERE city = ’New York’ ;
Cette instruction récupère le nom et l'e-mail de tous les clients résidant à New York dans la table customers.

INSERT

Ajoute de nouvelles lignes à une table.

INSERT INTO client (nom, adresse e-mail, ville)
VALUES (’Jane Doe’, ’jane.doe@example.com’, ’Los Angeles’) ;

Cette instruction ajoute une nouvelle ligne dans la table customers avec le nom « Jane Doe », l’e-mail « jane.doe@example.com » et la ville « Los Angeles ».

UPDATE

Modifie les données d’une table.

UPDATE client 
SET email = ’new.email@example.com’ 
WHERE name = 'John Doe' ;

Cette instruction met à jour l’e-mail du client nommé « John Doe » dans la table customers avec « new.email@example.com ».

DELETE

Supprime des lignes d’une table selon une condition.

DELETE FROM client 
WHERE city = ’Boston’ ;

Cette instruction supprime toutes les lignes de la table customers où la ville est « Boston ».

CREATE TABLE

Définit une nouvelle table et sa structure.

CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2)
) ;

Cette instruction crée une nouvelle table appelée products, avec trois colonnes : product_id comme clé primaire entière, name comme chaîne de caractères variable jusqu'à 100 caractères, et prix comme valeur décimale avec dix chiffres et deux décimales.

ALTER TABLE

Modifie la structure d’une table existante.

ALTER TABLE client 
ADD COLUMN birthday DATE ;

Cette instruction ajoute une nouvelle colonne birthday de type DATE à la table customers.

DROP TABLE

Supprime une table et toutes ses données.

DROP TABLE old_customers ;

Cette instruction supprime la table old_customers ainsi que toutes ses données.

JOIN

Combine les lignes de deux ou plusieurs tables en fonction d'une colonne commune.

SELECT c.name, p.name AS product_name
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
JOIN products p ON o.product_id = p.product_id
WHERE c.city = ’New York’ ;

L’instruction SQL JOIN récupère les noms des clients ainsi que les noms des produits qu’ils ont commandés. Elle lie les tables customers, orders et products en se basant sur les identifiants client et produit, et sélectionne uniquement les clients vivant à New York.

Bases de données SQL et NoSQL

Les bases de données SQL sont des bases de données relationnelles au sein desquelles les données structurées sont stockées dans des lignes et des tables liées de diverses manières. SQL est le langage standard pour interagir avec ces bases de données.

Les bases de données NoSQL (ou bases de données non relationnelles) ont vu le jour à la fin des années 2000 pour gérer les données moins structurées. Ces types de bases de données (comme MongoDB) offrent des modèles de données plus flexibles que ceux des bases de données SQL.

Les principales différences entre SQL et NoSQL sont les suivantes :

  • Évolutivité
  • Structure
  • Performances
  • Cas d’utilisation
  • Connaissances et communauté
  • Maintenance et gestion

Évolutivité

Les bases de données NoSQL sont évolutives horizontalement, ce qui permet de gérer un trafic plus élevé en ajoutant des serveurs. Les bases de données SQL, quant à elles, sont traditionnellement évolutives verticalement, ce qui veut dire qu’elles requièrent un matériel plus puissant pour gérer les charges accrues.

Structure

Les bases de données SQL utilisent une structure basée sur des tables, idéale pour les transactions multi-lignes et les requêtes complexes sur des données liées, grâce à des capacités d’indexation et de jointure robustes. Les bases de données NoSQL, quant à elles, proposent différentes structures, telles que des magasins de clés-valeurs, des documents, des graphes ou des colonnes larges, offrant une plus grande flexibilité pour gérer des données semi-structurées ou non structurées.

Performances

Les bases de données SQL sont optimisées pour les requêtes complexes avec une cohérence stricte des données, suivant les principes ACID. À l’inverse, les bases de données NoSQL, basées sur les principes BASE (basically available, soft state, eventual consistency), offrent des performances plus rapides pour certains types de données, mais avec des garanties de cohérence différentes.

Cas d’utilisation

Les bases de données SQL sont généralement choisies pour les applications requérant transactions complexes, données cohérentes et respect strict des schémas, comme les systèmes financiers, les plateformes d’e-commerce et les bases de données CRM. NoSQL est préféré pour traiter les données dynamiques, à grande échelle ou semi-structurées (par exemple, réseaux sociaux, analytique en temps réel ou systèmes de gestion de contenu).

Connaissances et communauté

Les bases de données SQL disposent d’un éventail plus large de ressources, dont les tutoriels SQL et un support communautaire, en raison de leur longue histoire et de leur adoption généralisée. Si NoSQL requiert généralement un travail de conception en aval moins important et peut s’avérer plus facile à mettre à l’échelle, il exige toutefois un développement plus personnalisé pour traiter les requêtes complexes et assurer la cohérence des données.

Maintenance et gestion

Les bases de données SQL exigent une conception soignée des schémas et peuvent s’avérer exigeantes en termes de maintenance lors des changements de ces derniers. Les systèmes de gestion de base de données NoSQL offrent une évolutivité et une adaptabilité plus aisées face aux changements de schéma, sans temps d’arrêt ni restructurations majeures.

Qu’est-ce que l’injection SQL ?

Malgré les nombreux avantages des bases de données SQL en matière de sécurité, certaines applications d’entreprise restent vulnérables à des problèmes de sécurité, tels qu’une authentification insuffisante, une conception non sécurisée ou une mauvaise configuration. En raison de ces vulnérabilités, l’injection SQL reste une menace réelle pour les entreprises.

On parle d’injection SQL lorsque des attaquants manipulent des requêtes SQL pour accéder aux informations sensibles d’une base de données ou les altérer. Il est essentiel de comprendre ces vulnérabilités et d’implémenter des mesures de sécurité solides pour protéger les données SQL.

Solutions connexes
IBM StreamSets

Créez et gérez des pipelines intelligents de diffusion de données en continu via une interface graphique intuitive, facilitant ainsi une intégration fluide des données dans les environnements hybrides et multicloud.

Découvrir StreamSets
IBM watsonx.data

watsonx.data vous permet d’adapter le dimensionnement des analyses et de l’IA à toutes vos données, où qu’elles se trouvent, grâce à un entrepôt de données ouvert, hybride et gouverné.

Découvrir watsonx.data
Services de conseil pour les données et les analyses

Avec IBM Consulting, exploitez les données de votre entreprise et développez une organisation basée sur les informations pour tirer des avantages métier.

Découvrir les services d’analytique
Passez à l’étape suivante

Élaborez une stratégie de gestion des données qui élimine les silos, réduit la complexité et améliore la qualité des données pour offrir une expérience client et collaborateur exceptionnelle.

Découvrir les solutions de gestion des données Découvrir watsonx.data