Cours
Si vous travaillez dans un secteur riche en données, vous avez forcément entendu parler des bases de données. L’une des façons les plus courantes d’accéder aux données stockées dans une base est d’utiliser SQL. Dans cet article, vous allez en savoir plus sur SQL. Mais au lieu de plonger directement dans la syntaxe et les termes utilisés en SQL, nous allons d’abord passer par quelques notions clés d’informatique pour répondre à la question : SQL est-il un langage de programmation ?
Qu’est-ce que SQL ?
Commençons par définir ce qu’est une base de données. En bref, une base de données est un système de stockage destiné à héberger vos données structurées. En complément, un système de gestion de base de données (SGBD) fait office d’interface entre la base et ses utilisateurs finaux ou programmes. Vous pouvez en apprendre davantage sur cette relation dans le cours Database Design de DataCamp.
Le type de SGBD le plus courant est le système de gestion de base de données relationnelle (SGBDR), où l’on stocke des données structurées, c’est-à-dire des données intégrant des relations entre entités et variables. Ces entités et variables sont organisées en un ensemble de tables comportant des colonnes et des lignes.
Dans un SGBDR, les données sont stockées dans un objet de base de données appelé table. Une base regroupe souvent plusieurs tables. Chaque table est identifiée par un nom unique et contient un ensemble d’enregistrements liés, structurés en lignes et colonnes. Les colonnes d’une table sont appelées champs et portent les valeurs d’une propriété précise de la table. Chaque ligne d’une table est appelée un enregistrement.
SQL, qui se prononce « S-Q-L » ou « sequel », signifie Structured Query Language. SQL est utilisé en programmation et conçu pour gérer les données stockées dans un SGBDR à l’aide de requêtes SQL.
Une requête n’est rien d’autre qu’une instruction composée de différentes commandes SQL qui, ensemble, réalisent une tâche précise pour accéder à vos données, les gérer, les modifier, les mettre à jour, les contrôler et les organiser. Cette définition se rapproche beaucoup de celle d’un « programme informatique ». Cela signifie-t-il que SQL est un langage de programmation ?
Voyons plus précisément ce que l’on entend par langage de programmation dans la section suivante.
Qu’est-ce qu’un langage de programmation ?
Un langage de programmation se compose d’un vocabulaire prédéfini et de règles grammaticales. Ce langage permet ensuite d’indiquer à un ordinateur ou à un dispositif de calcul quelles tâches effectuer.
Il existe de nombreux types de langages de programmation, chacun avec ses spécificités et sa finalité. De manière générale, on les répartit toutefois en deux familles : les langages de bas niveau et les langages de haut niveau.
Les langages proches du code machine ou du binaire (0 et 1) sont dits de bas niveau.
Ces langages sont souvent difficiles à lire pour les humains, car ils structurent les instructions comme « pense » la machine. Ils restent néanmoins plus compréhensibles que la suite brute de 0 et 1.
Pourquoi utiliser un langage de bas niveau ? Parce qu’il est rapide ! Et il donne au programmeur un contrôle plus fin sur le fonctionnement du matériel informatique.
À l’inverse, les langages de haut niveau se rapprochent de la façon dont nous communiquons. Ils utilisent, dans leurs instructions, des mots proches de ceux de nos langues du quotidien, ce qui les rend plus simples à programmer et à maintenir. Leur revers : ils nécessitent plus de temps de traduction en code machine pour être compris par l’ordinateur.
Mais à mesure que la puissance des machines augmente, l’écart de performance entre bas niveau et haut niveau se joue souvent à quelques millisecondes. C’est pourquoi la plupart des offres d’emploi recherchent aujourd’hui des compétences sur des langages de haut niveau.
Qu’est-ce que la complétude de Turing ?
Pour mesurer la puissance d’un langage de programmation, les informaticiens utilisent souvent la notion de complétude de Turing. Elle doit son nom à Alan Turing, scientifique qui, en 1936, a proposé la machine de Turing. Ce concept a jeté les bases des théories du calcul et de l’informatique.
La machine de Turing était un dispositif qui imprimait des symboles sur un ruban de papier d’une manière reproduisant l’exécution d’instructions logiques par une personne.
Les langages de programmation sont des systèmes de règles formelles qui permettent d’accéder aux données et de les modifier. Si ces règles peuvent simuler la machine de calcul hypothétique de Turing, on dit qu’elles sont « Turing-complètes ». Un système Turing-complet peut être démontré, mathématiquement, comme capable d’effectuer tout calcul possible.
Nous vous recommandons vivement de regarder cette vidéo de Computerphile pour en savoir plus sur les machines de Turing, ainsi que leurs vidéos suivantes sur la complétude de Turing.
Langage de programmation généraliste vs langage spécifique à un domaine
SQL dispose d’un ensemble de mots-clés prédéfinis et d’une syntaxe stricte. Pour vous lancer dans la programmation en SQL, consultez le cours Introduction to SQL de DataCamp, où l’on commence par sélectionner et filtrer les enregistrements et champs, avant d’aborder les fonctions d’agrégation, le tri et le regroupement.
Compte tenu de la définition d’un langage de programmation — vocabulaire dédié et syntaxe spécifique —, SQL est bien un langage de programmation. En revanche, il n’est pas un General Purpose Language (GPL), mais bel et bien un Domain-Specific Language (DSL).
Un langage spécifique à un domaine est un langage informatique créé pour résoudre des problèmes dans un domaine précis et qui n’a pas vocation à traiter ceux qui en sortent.
Il est conçu et implémenté avec des objectifs ciblés. Par exemple, SQL a été créé spécifiquement pour fonctionner avec des bases de données, interroger ces bases et manipuler les données qu’elles contiennent. Vous ne pouvez pas créer une application complète uniquement en SQL.
Un autre exemple de DSL est les Cascading Style Sheets — plus connus sous l’acronyme CSS —, utilisés pour styliser le HTML sur les sites web.
À l’opposé, un General Purpose Language (GPL) est largement applicable quel que soit le domaine. Il est conçu pour vous permettre d’écrire tout type de programme, avec la logique de votre choix.
Vous pouvez créer toutes sortes d’applications avec un GPL : desktop, mobile ou web. Parmi les GPL les plus utilisés, on retrouve Python, C++, Ruby, Java et JavaScript.
De manière générale, les DSL sont moins puissants que les GPL. Mais cela a un avantage : du fait de leur périmètre restreint, SQL est relativement plus simple à apprendre que la plupart des langages généralistes.
Nous vous encourageons à suivre le parcours SQL Fundamentals de DataCamp, qui vous emmène du niveau débutant à confirmé en 5 cours et seulement 21 heures.
Alors, SQL est-il un langage de programmation ?
Comme nous l’avons vu, la complétude de Turing est un indicateur de la puissance d’un langage. Plus un langage est puissant, plus il peut réaliser des calculs complexes. Avec l’introduction des expressions de table communes (CTE) et des fonctions de fenêtre en SQL, il est possible d’effectuer des calculs récursifs et hiérarchiques, ce qui le rend encore plus puissant et le qualifie de Turing-complet.
Cependant, il a fallu du temps pour que la norme SQL intègre les requêtes hiérarchiques et récursives. Ainsi, certains SGBDR plus anciens et traditionnels peuvent ne pas être Turing-complets.
Nous avons également expliqué en quoi un langage généraliste diffère d’un langage spécifique à un domaine. Quand les gens disent « langage de programmation », ils entendent souvent « langage de programmation généraliste », ce qui peut prêter à confusion.
Au sens strict, SQL est un langage de programmation spécifique à un domaine et Turing-complet. Il s’agit donc bien d’un langage de programmation.
Si vous maîtrisez déjà les bases de SQL et souhaitez passer à l’étape suivante avec les fonctions de fenêtre, découvrez le cours interactif de DataCamp PostgreSQl Summary Stats and Window Functions. Vous y apprendrez à créer des requêtes pour l’analytique et l’ingénierie des données grâce aux fonctions de fenêtre, l’arme secrète de SQL !
Les différents types de SQL
Vous avez sans doute entendu parler des différents types ou dialectes de SQL : T-SQL, PostgreSQL, MySQL, etc. Mais vous vous demandez peut-être ce qui les distingue et pourquoi ils existent ? Jetons un œil à l’histoire de SQL.
Edgar Frank Codd, informaticien britannique chez IBM, a publié en 1970 un article intitulé « A Relational Model of Data for Large Shared Data Banks ». Il y a posé le modèle relationnel pour la gestion des bases de données, qui constitue depuis la base théorique des bases relationnelles et des SGBDR.
Par la suite, des efforts ont été menés pour créer une norme officielle SQL à la fin des années 1980.
SQL est devenu une norme de l’American National Standards Institute (ANSI) en 1986 et de l’Organisation internationale de normalisation (ISO) en 1987. La norme SQL a été révisée à plusieurs reprises depuis les années 1980, bien que les fonctionnalités centrales du SQL standard soient stables depuis 1992.
Néanmoins, de nouvelles variantes ont continué d’apparaître, car les concepteurs de bases, au sein d’entreprises différentes, devaient résoudre de nouveaux problèmes ou contourner des limitations non couvertes par la norme. C’est ce qui explique l’émergence et la coexistence actuelle de multiples dialectes SQL.
Aujourd’hui, il n’existe qu’un seul langage SQL, mais les systèmes de gestion de base de données ont étendu la norme d’origine pour ajouter leurs propres fonctionnalités ou adapter la syntaxe à leur fonctionnement. Ce faisant, ils ont donné naissance à une variété de dialectes SQL.
Vous pouvez en savoir plus sur ces différents dialectes dans notre article de blog justement intitulé « SQL Server, PostgreSQL, MySQL... quelles différences ? Par où commencer ? »
Quel dialecte SQL choisir pour débuter ?
Nous vous suggérons de commencer par PostgreSQL.
PostgreSQL est un système de base de données relationnelle objet puissant et open source qui utilise et étend le langage SQL. Il propose également diverses fonctionnalités pour stocker et mettre à l’échelle en toute sécurité les charges de données les plus complexes.
C’est l’un des dialectes les plus proches du SQL standard et il est largement utilisé. Démarrer avec PostgreSQL vous donnera l’outil le plus flexible pour vous adapter ensuite à d’autres dialectes et transposer vos compétences sur d’autres SGBDR.
Le cours Functions for Manipulating Data in PostgreSQL de DataCamp est un excellent cours interactif de niveau intermédiaire pour vous mettre sur la bonne voie.
SQL et langages procéduraux
Nous savons donc que SQL n’est pas un langage de programmation généraliste. Cependant, vous pouvez combiner SQL avec des langages procéduraux pour reproduire certains comportements de type GPL. Cela rend techniquement possible l’utilisation de SQL au-delà de son domaine d’application initial.
Les langages procéduraux sont des langages de programmation qui reposent sur l’utilisation de fonctions, d’instructions conditionnelles et de variables pour écrire des programmes compréhensibles par les ordinateurs, afin d’obtenir un résultat de calcul donné.
Tous les systèmes de gestion de bases de données (SGBD) acceptent un ou plusieurs dialectes de langages procéduraux. Parmi les exemples :
Procedural Language for SQL (PL/SQL)
Extension de SQL créée par Oracle Corporation. À l’instar des langages généralistes, PL/SQL permet l’utilisation de conditions et de boucles. Avec PL/SQL, vous pouvez également déclarer des constantes, variables, types de variables, déclencheurs, procédures et fonctions.
Procedural Language/PostgreSQL (PL/pgSQL)
Langage procédural pris en charge par le SGBD relationnel objet open source PostgreSQL. Très proche du PL/SQL d’Oracle décrit ci-dessus, il inclut des éléments tels que boucles et conditions. Il autorise aussi les fonctions définies par l’utilisateur et la surcharge d’opérateurs.
Transact-SQL (T-SQL)
Extension de programmation proposée par Sybase et Microsoft qui permet la déclaration de variables locales. Elle modifie également les instructions DELETE et UPDATE par rapport au standard SQL. Elle inclut le contrôle des transactions, ainsi que la gestion des exceptions et des erreurs. Elle est utilisée dans Microsoft SQL Server, une base de données très répandue.
Grâce à ces extensions, SQL peut se comporter de manière proche d’un GPL, ce qui en fait une compétence encore plus puissante et essentielle à maîtriser !
Commencez avec SQL.
Nous espérons vous avoir convaincu que SQL n’est pas « juste » un langage de programmation, mais un langage de programmation puissant qui vous aide à tirer le meilleur parti de vos données !
DataCamp est une excellente plateforme pour apprendre en ligne la data science et l’analytique. Nous proposons de nombreux cours en ligne de grande qualité pour comprendre SQL et ses subtilités.
Notre Introduction to SQL Server est l’un de ces cours interactifs où vous pourrez tester vos connaissances et gagner en confiance en mettant immédiatement en pratique ce que vous apprenez. Vous travaillerez sur une base de données de médias numériques pour analyser les ventes de différents artistes et morceaux, sur des jeux de données Eurovision, ainsi que sur les tendances des pannes d’électricité aux États-Unis, afin d’explorer divers types de données et scénarios.
Bonne formation !