C’est quoi SQL ? Tout savoir pour débuter avec le langage de programmation des bases de données
Le monde de la data vous intéresse et vous souhaitez en savoir plus ? Découvrez le langage SQL et ses applications dans l’exploitation de base de données.
Chaque année, les entreprises modernes acquièrent de plus en plus de données de toute nature.
Elles doivent être capables d’analyser ces données afin de prendre de bonnes décisions stratégiques ou opérationnelles.
Grâce à des requêtes SQL, il est possible de manipuler de grandes bases de données et de leur donner du sens.
C’est pourquoi la maîtrise du langage SQL est une compétence particulièrement recherchée et valorisée par les recruteurs. C'est notamment pour cela que beaucoup optent pour une formation à SQL avant de se lancer dans l'analyse de donnée.
Dans cet article, nous allons voir ce qu'est SQL, et comment vous pouvez utiliser SQL pour votre analyse de donnée.
SQL, c’est quoi ce langage de programmation ?
Le SQL est un des outils préférés du Data Analyst (et bientôt le tien !).
SQL, ou Structured Query Language, est un langage de programmation qui fait aujourd’hui référence dans l’utilisation des bases de données relationnelles.
SQL est un langage de programmation :
- De définition de données, ou Data Definition Language (DDL) : il permet de créer, modifier ou supprimer des tables dans une base de données relationnelle,
- De manipulation de données, ou Data Manipulation Language (DML) : il permet de sélectionner, insérer, modifier ou supprimer des données dans une table d'une base de données relationnelle,
- De contrôle de données, ou Data Control Language (DCL) : il permet de définir des permissions au niveau des utilisateurs d'une base de données)
1974 : la naissance du Structured Query Language
Avant d’être purement un langage de programmation, SQL germe d’une idée d’un mathématicien hollandais : David L. CHILDS.
Ce chercheur de l’université de Michigan s'intéresse à l'informatique, notamment aux problèmes de performance des structures de stockage. Dans un de ses papiers il affirme que l’on peut exprimer toutes questions posées à une base de données par seulement 3 types de fonction :
- La "sélection",
- La "relation",
- Le “regroupement”.
Cela semble utopiste mais ce coup de génie marque le début d’une grande aventure.
Cependant, sans la création du modèle de base de données relationnelle, la théorie de D.L Childs n’aurait jamais trouvé son application en informatique.
En 1969, le chercheur Edgar F.Codd développe ce modèle de base de données relationnelles. En se basant sur l’association de “clés primaires” ou de “clés étrangères” avec diverses données, il crée la relation entre deux ou plusieurs bases de données.
Enfin, c'est en 1974 que deux informaticiens d'IBM, D.D. Chamberlin et R.F. Boyce, publient Sequel : a structured english query language.
Les premiers mots du futur langage SQL apparaissent.
Chamberlin et Boyce s'inspirent des travaux D.L Childs en traduisant ses 3 fonctions ensemblistes :
- "sélection" par SELECT/WHERE,
- "relation" par FROM
- "regroupement" par GROUP BY.
Le SQL est né.
Depuis la création du SQL :
Après la publication de D.D. Chamberlin et R.F. Boyce, IBM se concentre sur le développement de ce langage et met au point une série d’amélioration et de version du langage :
- En 1981 : IBM sort SQL/DS
- En 1982 : IBM sort SQL/DS pour son environnement VM/CMS et l'ANSI (American National Standard Institute) lance un projet de normalisation d'un langage relationnel.
- En 1983 : IBM lance DB2 pour l'environnement MVS.
Dans les années 1980, la première norme SQL (SQL-1) de l'ISO (International Standard Organisation) apparaît. Depuis, les différents produits phares ont évolué, la norme SQL est passée à SQL-2, puis SQL-3.
SQL est désormais un langage incontournable pour tout système de gestion de base de données (SGBD) moderne.
Cependant, bien qu'une norme SQL existe, on assiste à l’apparition de “dialectes” propres à chaque produit :
- Soit des sous-ensembles de la norme (certaines fonctionnalités n'étant pas implantées),
- Soit des sur-ensembles de la norme (ajout de certaines fonctionnalités, propres à chaque produit).
Aujourd’hui, Oracle et Informix dominent le marché, bien que SQL-Server (de Microsoft) tente de s'imposer dans le monde des PC. À côté de ces produits très chers, il existe heureusement des systèmes libres et gratuits. MySQL et PostgreSQL sont les plus connus, nous en parlons plus bas dans cet article.
Aujourd’hui, SQL est le deuxième langage le plus utilisé dans le monde de la Data analysis et de la Data Science.
A quoi sert le langage SQL ?
Avec SQL, il est possible de :
- Créer une base de données,
- Réaliser des tables dans une base de données,
- Interroger ou demander des informations à partir d'une base de données,
- Insérer des enregistrements dans une base de données,
- Mettre à jour ou modifier des enregistrements dans une base de données,
- Supprimer des enregistrements de la base de données,
- Définir les permissions ou le contrôle d'accès dans la base de données pour la sécurité des données,
- Définir des vues pour éviter de taper des requêtes complexes fréquemment utilisées,
Remarque : la liste ne se termine pas ici ! Grâce à des requêtes SQL, tu peux effectuer de nombreuses autres tâches liées à la base de données.
Le langage SQL permet de manipuler des bases de données beaucoup plus importantes que sur un tableur Excel.
Sur Excel, les données sont stockées sur ton ordinateur et sont limitées par la taille du tableur (nombre de lignes et nombre de colonnes). Les bases de données SQL sont stockées sur un cloud et peuvent donc être beaucoup plus volumineuses : allant de plusieurs millions à plusieurs milliards de cellules.
La taille du tableau n’a pas d’impact sur les performances car les machines qui stockent ces données sont beaucoup plus puissantes que ton ordinateur ! Ce n’est pas étonnant que le SQL se soit vite développé pour devenir un must-have parmi les entreprises de la Tech.
Bien souvent, les bases de données sont composées de plusieurs tableaux, mis en relation par un système de clé primaire et de clé étrangère. C’est ce qu’on appelle des bases de données relationnelles.
Imaginons une base de données relationnelles composées de deux tables :
- La première table s’appelle “Cinéma”. Elle contient des informations relatives à des films.
- La seconde table s’appelle “Acteurs”. Elle contient des informations relatives aux acteurs qui ont joué dans les films de la table “Cinéma”.
Table "Cinema"
Table "Acteurs"
Ici les deux tables sont mises en relation grâce à la colonne “Id Film”.
Par exemple, grâce à une requête SQL, il est possible de filtrer la table “Acteurs” avec l’ID “11223344” et obtenir la liste des acteurs qui ont joué dans “Jaws”.
Ainsi, afin de faciliter son analyse avec des requêtes SQL, une base de données relationnelle est composée de plusieurs tables mises en relation.
NB : cette base de données n’est composée que de deux tables mais en tant que Data Analyst, tu dois être capable d’interroger des bases de données relationnelles composées de plusieurs dizaines de tables !
En suivant la formation SQL de Databird, tu apprends les requêtes SQL indispensables à maîtriser en entreprise.
Les utilisations sont multiples et la simplicité du langage rend toutes manipulations de données beaucoup plus simple à qui connaît le SQL.
{{cours-gratuit-sql="/brouillon"}}
Pourquoi apprendre le SQL ?
Dans le monde de la Tech, on entend souvent parler de Data et des ses applications révolutionnaires. Cependant, pour être capable d’analyser cette data brute, il faut pouvoir la manipuler en exécutant des requêtes dessus.
C’est là que SQL devient utile.
Aujourd’hui presque toutes les entreprises et les startups utilisent des données pour leurs activités. Ces données sont stockées pour la plupart dans des bases de données relationnelles, hébergées par les Data Center (type Amazon, Google ou Microsoft).
L’explosion de la demande en base de données a donc engendré une explosion de la demande d’experts en base de données qui doivent être capable de maîtriser le SQL. C’est pourquoi un Data Analyst doit savoir coder en SQL. Cette compétence est indispensable pour candidater à un poste d’expert Big Data, de Data Analyst ou de Data Scientist.
Si tu veux en savoir plus, tu trouveras ici toutes les raisons de pourquoi il faut apprendre le SQL.
Comment comprendre le langage SQL ?
Si tu souhaites te lancer dans l’apprentissage du langage SQL, des sites comme sql.sh délivrent la documentation qui permet de se former seul. Cependant, devenir autodidacte en SQL, sans l’aide d’un professeur, n’est pas simple.
En quelques semaines (intensives), Databird te donne les clés de l’utilisation du SQL et les bonnes pratiques à adopter (méthodologie, syntaxe, conventions etc…). Pour te rendre compétent(e) et opérationnel(le) en entreprise dès la fin de la formation, nos professeurs enseignent le langage SQL par la pratique : tu apprends à résoudre une problématique business comme le ferait un Data Analyst au jour le jour.
Que tu suives la formation à temps plein ou à temps partiel, le programme est le même. Le certificat accordé en fin de formation atteste de tes nouvelles compétences !
Les avantages et inconvénients du langage SQL
Le SQL possède beaucoup d’avantages, c’est pour ça qu’il s’est vite imposé comme un leader dans la manipulation de base de données relationnelles.
SQL est un langage compact et puissant. Il permet de consulter et modifier des bases de données avec des requêtes courtes et simples. Contrairement à un langage de programmation classique qui demande plusieurs lignes de code et une syntaxe complexe, en SQL une seule ligne permet de réaliser des requêtes complexes tout en utilisant que quelques instructions (voir plus bas la partie dédiée aux instructions et aux clauses incontournables de SQL).
SQL est compatible avec de nombreux langages de programmation Web (ASP.NET, JSP, PHP, …) et réseau (Perl, Delphi, …). Par exemple, on peut écrire, avec le langage Python, un code qui exécute des requêtes SQL sur une base de données.
Par ailleurs, une bonne connaissance de SQL est un gros atout sur un CV. Un spécialiste SQL peut même intégrer une équipe de développeurs maîtrisant différents langages de programmation car le SQL est un langage à part entière.
Le langage SQL et ses inconvénients
Cependant, le langage apporte aussi certains inconvénients. Tout d’abord, une mauvaise manipulation peut engendrer une destruction ou une modification de la base de données (requête UPDATE par exemple).
Enfin, il faut bien faire attention à la version SQL que tu apprends car certaines fonctionnalités changent entre les versions.
Les requêtes SQL incontournables
Le langage SQL se base sur l’utilisation de requêtes qui vont venir extraire des informations dans les différentes bases de données auxquelles tu peux avoir accès.
Reprenons l’exemple précédent : la base de données contient des informations réparties des deux tables séparées. Comme ces tables sont en relation, nous pourrions répondre à la question : "Quel est l'acteur qui a joué dans Star Wars. Dans ce cas, nous devons utiliser une des jointures SQL existantes afin de fusionner les deux tables et en créer une nouvelle. Pour plus d'informations, consulte l'article dédiée aux Jointures SQL.
Cependant, nous avons a déjà accès à une base de données, nommée "Cinéma" dans laquelle on trouve différentes informations sur des films. Les données sont réparties en plusieurs colonnes : nom du film, date de sortie, réalisateur, genre, revenus générés, note IMDB.
Grâce à une requête SQL, il est par exemple possible de demander à la base de données : “affiche les réalisateurs qui ont sorti un film entre 1990 et 2000 et dont la moyenne IMBD des films est supérieure à 4 »
En langage SQL, cela se traduit par :
SELECT realisateur,
AVG (note_IMDB) FROM Cinema
WHERE date_de_sortie BETWEEN 1990 AND 2000
GROUP BY realisateur
HAVING AVG (note_IMDB) > 4
Vous n’y comprenez rien ? Décomposons les différents éléments de cette requête.
Les instructions SELECT, FROM et WHERE
Les instructions SELECT, FROM et WHERE sont les requêtes fondamentales du SQL. Elles permettent de guider la requête afin de sélectionner certaines informations, à l’endroit souhaité.
Reprenons l’exemple précédent mais cette fois-ci nous avons une base de données relationnelle composées de deux tables :
- La table “Cinéma” contient une liste de films. Elle est composée des colonnes : Nom du film, date de sortie, réalisateur, genre, revenus générés, note IMDB.
- La table “Acteurs” contient la liste des acteurs qui ont joué dans ces films. Elle est composée des colonnes : Id Film, Nom, Prénom, Salaire.
L’instruction FROM permet d’effectuer une recherche au sein des données de la table “Cinéma” ou de la table “Acteurs”.
L’instruction SELECT permet de sélectionner les données appartenant à une colonne en particulier.
L’instruction WHERE permet de filtrer les données de la colonne étudiée.
Par exemple, avec ces trois instructions, tu peux répondre à la question : “Combien d’acteurs ont joué dans un film d’action sorti en 2018 ou après ?".
Le langage SQL est en quelque sorte le “Siri” des Data Analyst. Il existe une requête pour chaque question qu’il est possible de formuler oralement. Certaines requêtes SQL courtes sont parfois très longues à traduire littéralement.
La clause GROUP BY
La clause GROUP BY regroupe les lignes ayant les mêmes valeurs dans des lignes récapitulatives. Cette instruction s’utilise le plus souvent avec une fonction d’agrégation :
- La fonction COUNT () permet de compter dans une colonne,
- La fonction MAX () permet d’extraire la valeur maximum d’un groupe de données,
- La fonction MIN () permet d’extraire la valeur minimum d’un groupe de données,
- La fonction AVG () permet d’extraire la moyenne des valeurs d’un groupe de données,
- La fonction SUM () permet d’extraire la somme des valeurs d’un groupe de données.
Le plus souvent, GROUP BY applique la fonction d’agrégation à une colonne particulière. Par exemple, écrivons requête SQL du type : « Donne-moi, pour chaque réalisateur, la somme des revenus de tous leurs films ».
Pour écrire cette requête, on utilise d’abord SELECT et FROM pour appeler les colonnes “réalisateur” et “revenus” de la table “Cinéma”.
Ensuite, l’instruction GROUP BY permet de regrouper le résultat par réalisateur et enfin, la fonction SUM appliquée à “revenus” affiche la somme des recettes des films de chaque réalisateur.
La clause HAVING
La clause HAVING a été ajoutée à SQL parce que le mot-clé WHERE n’est pas compatible avec les fonctions d'agrégation. Elle permet de rajouter une contrainte de recherche (= un filtre) supplémentaire dans la base de données.
Prenons le même exemple que pour l’instruction GROUP BY que nous allons enrichir.
L’instruction HAVING pourra me permettre de répondre à la question :
« Donne-moi pour chaque réalisateur, la somme des revenus de tous leurs films et filtre les résultats pour n’afficher que les réalisateurs dont les films ont généré plus de 100 millions de dollars de revenus »
Ça commence à devenir un peu complexe, non ? Pas de panique, en SQL, on peut répondre à cette requête assez simplement.
Comme précédemment, on utilise SELECT et FROM pour appeler les colonnes « réalisateur » et « revenus » de la table « Cinéma », ensuite l’instruction GROUP BY permet de regrouper le résultat par réalisateur et enfin le fonction SUM appliquée à « revenus » affiche la somme des recettes des films de chaque réalisateur.
Enfin, on ajoute la clause HAVING pour filtrer la liste et ne garder que les réalisateurs dont la somme des recettes de leurs films dépasse 100 M$.
Voici donc un aperçu de la simplicité et de la puissance du langage SQL !
Chez Databird, la formation à temps plein, à temps partiel ou à distance te donne les connaissances, la méthode et les bonnes pratiques des experts de l’analyse de bases de données. Aucun pré-requis n’est exigé ! (à part une bonne capacité d’analyse)
Le monde de la data t’intéresse mais tu ne sais pas par où commencer ? Fonce découvrir notre formation dédiée !
{{cours-gratuit-sql="/brouillon"}}
Les différents systèmes de base de données
MySQL
MySQL est un système de gestion de base de données relationnelle (SGBDR) open source. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels. Il est donc important d'en apprendre plus sur ce système qu'est MySQL
Cet outil devient indispensable dans le développement de sites web. Il est actuellement le leader du marché des bases de données, il est utilisé par exemple par Google, Amazon, LinkedIn et Netflix, pour la gestion de leurs sites !
MySQL permet d’enregistrer, gérer, stocker ou supprimer toutes les informations nécessaires au bon fonctionnement d’un site, ce qui le rendra plus performant, plus réactif et donc beaucoup plus agréable pour les futurs visiteurs de tes sites web.
Cette base de données apporte certains avantages et inconvénients qui vont vous orienter ou non vers son utilisation.
L’avantage de MySQL est qu’il utilise une technologie de défragmentation qui le rend beaucoup plus performant que ses concurrents (pour faire plus simple, il a besoin d’une puissance de calcul moins importante pour fonctionner). Si tu vises la performance pour ton projet car tes ressources sont limitées il sera l’outil parfait !
De plus, il est fortement recommandé pour la qualité de son service de sauvegarde. Il ne te fera jamais défaut, ce qui est particulièrement intéressant si tu manipules des données sensibles dont les sauvegardes sont essentielles.
Cependant, pour les amateurs de commandes complexes, qui demandent de créer beaucoup de tables temporaires qui serviront à créer une table finale, MySQL fait défaut. En effet, il ne fournit qu’une quantité limitée de place pour ce type d’opérations.
Enfin, pour les grosses bases de données du type Big Data, le système d’indexage de MySQL fait qu’il est difficile d’effectuer des recherches flexibles. Il faut être très précis dans les requêtes pour ne pas se perdre.
MySQL s’oriente donc vers une utilisation pour des projets visant la simplicité d’utilisation et la performance. Maintenant jetons un coup d'œil du côté du principal concurrent de MySQL : PostgreQL !
PostgreSQL
PostgreSQL et MySQL sont deux systèmes de gestion de bases de données relationnelles open source. Cependant, tandis que MySQL met la priorité sur la performance et la flexibilité, PostgreSQL lui choisit de favoriser l’exploitation de bases de données lourdes et complexes (type Big Data).
La spécificité de PostgreSQL est qu’il est focalisé sur l’intégrité des données et plus respectueux des normes SQL. C’est à dire que lorsque que tu utilises PostgreSQL tu as peu de chance de rencontrer des problèmes lors d'interactions entre la base de données et d’autres logiciels. Cette compatibilité est importante car très souvent un développeur ou un Data Analyst est amené à travailler sur des outils différents qui doivent communiquer entre eux.
PostgreSQL est un outil robuste et puissant car il permet de manipuler des gros volumes de données sans les altérer.
Il est également compatible avec les langages de programmation les plus utilisés dans le monde de l’industrie et de la tech : Java, Python, Perl, C/C++, SQL et bien d’autres !
Lorsqu'un Data Analyst veut automatiser son traitement de données SQL avec un programme informatique, cette caractéristique de PostgreSQL en fait un outil idéal.
Enfin, PostgreSQL est open-source donc constamment amélioré par la communauté, et l’accès aux améliorations est gratuit. De plus, au moindre problème, un membre de la communauté a une réponse pour toi !
Cependant, ses inconvénients principaux sont sa complexité et sa lenteur d’exécution.
Finalement, si tu souhaites développer un projet complexe et de grande envergure qui aura une grande interaction avec d’autres outils alors ton choix se portera sur PostgreSQL.
NoSQL
Maintenant que tu as eu un aperçu de l’utilisation des bases de données relationnelles qui utilisent SQL. Il est temps de te parler des bases de données non relationnelles, c'est-à-dire NoSQL.
En effet, de plus en plus de données sont stockées dans des bases de données qui ne suivent plus le schéma classique des tables, colonnes et clés. Ces bases de données sont appelées NoSQL.
Par exemple, au lieu de stocker des tables avec des colonnes et des clés qui les relient entre elles. Un type de base NoSQL va stocker les informations sous deux formes : une Clé et une Valeur. Si tu possèdes un magasin et que tu veux stocker tes produits alors ta clé sera le code barre et la valeur du nom du produit ! Il existe plein d’autres bases de données de type NoSQL qui répondent à différents besoins.
Depuis le développement du NoSQL, le débat est lancé sur l’utilité ou non du SQL : que choisir entre SQL vs NoSQL ?
Ces deux technologies amènent leur lot d’avantages et d’inconvénients et ne répondent parfois pas au même problème.
Les particularités des bases de données NoSQL sont les suivantes :
- Elles ne sont pas relationnelles et ne suivent pas l’ordre tables, colonnes. Il n’est donc plus nécessaire d’utiliser un langage de requêtes complexe pour faire dialoguer les bases de données.
- Les bases de données sont distribuées, ce qui permet une meilleure performance.
Les base de données NoSQL ont aussi des interfaces faciles d’utilisation qui permettent des requêtes simplifiées (NoSQL).
{{formation-sql="/brouillon"}}