Ce cours sur le SQL a pour but de donner des bases pour quiconque voudrait avoir une vision globale sur ce sujet. Il permet d’avoir une vision globale sur comment lire une base de données et faire des requêtes. Cet article est le premier d’une série de 5 articles et a pour vocation à présenter les commandes de base.

Ce cours a vocation à être une introduction détaillée au SQL. Si vous voulez un cours plus complet, je ne peux que vous conseiller le site SQL.sh.

Sommaire du cours

Bases de données

Qu’est-ce que le SQL ?

Pour travailler avec des données, il faut un système de bases de données. 

Associé à ce système de données, un logiciel appelé Système de Gestion de bases de données (SGBD) permet de les manipuler. Si ces données sont dites relationnelles ce logiciel sera plutôt un Système de Gestion de bases de données relationnelles (SGBDR)

Pour dialoguer avec ce système, on a un langage de programmation : le SQL 

Les SGBDR les plus connus sont :

  • MySQL
  • PostgreSQL
  • Microsoft Access
  • Oracle Database
  • SQLite

Le langage SQL possède trois modalités :

  • Le LDD : Langage de définition de données. Il sert à créer ou supprimer des éléments de la base de données (tables, contraintes, …)
  • Le LCD : Langage de contrôle des données. Il permet de gérer les utilisateurs d’une base de données ainsi que leurs droits sur les objets (droit de lecture, droit de modification, administrateur, …)
  • Le LMD: Langage de manipulation des données. Il est destiné à manipuler les données contenues dans les tables. 

Nous allons principalement nous intéresser à la partie langage de manipulation de données. 

Le langage de manipulation des données

Le LMD contient 4 opérations principales : 

  • La création de lignes : Fonction insert
  • La lecture de lignes : Fonction select
  • L’actualisation de lignes : Fonction update
  • La suppression de lignes : Fonction delete

Ce cours va s’intéresser à la partie lecture de lignes

A quoi ressemble une base de données ?

  • Une base de données est un ensemble de datasets (appelé en français jeu de données) et de tables
  • Les datasets sont les équivalents des dossiers sur un ordinateur
  • Chaque dataset contient ensuite des tables. Un dataset peut contenir une seule table. Par exemple, un fichier CSV ou JSON peut être considéré comme un “jeu de données” 

Qu’est-ce qu’une table ?

table SQL
Une table en SQL

Bon évidemment une table, ce n’est pas la première photo du meme mais bien la deuxième ! Cela ressemble fortement à des cellules en Microsoft Excel / Google Sheets.
Voici ce qui caractérise une table :

  • Une table contient des lignes et des colonnes 
  • Une table contient une clé primaire et peut contenir des clés étrangères. La clé primaire est une clé qui permet de s’assurer qu’une ligne est bien unique. Les clés étrangères vont pouvoir permettre de faire le lien avec d’autres tables
  • Chaque colonne a une définition et des contraintes
  • A partir de là on remplit des lignes correspondants à ces contraintes

La clé primaire est un identifiant unique qui permet de déterminer chaque ligne d’une table de manière unique. La clé primaire est constituée d’une ou plusieurs colonnes.

Exemple : On a une table avec numéro de sécurité sociale, nom, prénom, second prénom, date de naissance. Le numéro de sécurité sociale peut être la clé primaire, c’est un identifiant unique

Une clé secondaire est un identifiant, constitué d’une ou plusieurs colonnes permettant de relier entre elles plusieurs tables.

Exemple : On a : 

  • Une table 1 qui contient titre de film, ID de film
  • Une table 2 qui contient un ID unique de note, un ID de film, un ID de personne et la note associée 

Dans la table 1 l’ID est la clé primaire, dans la table 2 c’est une clé étrangère qui permet de faire le lien avec la table 1, l’ID unique de note étant la clé primaire.

Les colonnes

Chaque colonne est définie par un type. Voici la liste simplifiée des types :

TypeExemple
String / Chaîne de caractères‘Bonjour’
Integer / Entier2
Float / Nombre à virgule3,1415926535
Date2021/05/17
Timestamp17/05/2021 – 11:30:09
BooleanTrue / False

Les colonnes peuvent être nullable : on a le droit de ne pas remplir cette colonne à un instant donné. Et a contrario, elles peuvent être non nullable : Cette colonne là doit toujours être remplie

SELECT et FROM

Définition

Toute requête de lecture des données doit contenir ces deux commandes, SELECT et FROM.

SELECT permet de choisir les colonnes dont a besoin. FROM permet de choisir le nom de la table

Exemples

Exemple : Admettons que l’on dispose de la table “Personnes” possédant 4 colonnes : 

  • secu_sociale qui représente le Numéro de sécurité sociale
  • nom qui représente le nom de famille
  • prenom qui représente le prénom
  • ville qui représente la ville de naissance

Voici un extrait de cette table :

secu_socialenomprenomville
1DupontBaptisteParis
2DurandJeanMarseille
3DuchenePierreLyon
4DupontPaulParisis
5DurandJacquesMarseille
6GirardBaptisteParis

Si on veut sélectionner les numéros de sécurité sociale et les noms de famille, on fait la requête suivante :

SELECT
	secu_sociale, nom
FROM
	personnes

On obtient alors le résultat suivant :

secu_socialenom
1Dupont
2Durand
3Duchene
4Dupont
5Durand
6Girard

Si on veut seulement les prénoms, on fait la requête suivante :

SELECT
	prenom
FROM
	personnes

Ce qui nous donne cette fois le résultat

prenom
Baptiste
Jean
Pierre
Paul
Jacques
Baptiste

Si on veut sélectionner toutes les colonnes, on utilise la commande * . On fait ainsi la requête suivante :

SELECT
	*
FROM
	personnes

Ce qui nous donne donc à nouveau

secu_socialenomprenomville
1DupontBaptisteParis
2DurandJeanMarseille
3DuchenePierreLyon
4DupontPaulParisis
5DurandJacquesMarseille
6GirardBaptisteParis

SELECT DISTINCT

Maintenant, on veut la liste de tous les prénoms mais sans les doublons. On s’aperçoit qu’il y a notamment 2 “Baptiste”. On rajoute alors DISTINCT derrière le SELECT. On fait alors la requête suivante : 

SELECT DISTINCT
	prenom
FROM
	personnes

On obtient le résultat suivant : 

prenom
Baptiste
Jean
Pierre
Paul
Jacques

On peut bien sûr le faire avec 2 colonnes :

SELECT DISTINCT
	prenom, ville
FROM
	personnes

On avait 2 lignes avec un Baptiste né à Paris, on n’a gardé qu’une seule ligne :

prenomville
BaptisteParis
JeanMarseille
PierreLyon
PaulParisis
JacquesMarseille

La commande AS

On peut renommer une colonne ou une table grâce à la commande AS

SELECT 
	nom AS nm, prenom AS prnm
FROM
	personnes as pr

On obtient le résultat suivant :

nmprnm
DupontBaptiste
DurandJean
DuchenePierre
DupontPaul
DurandJacques
GirardBaptiste

La commande EXCEPT

Si on veut sélectionner toutes les colonnes sauf une, on utilise la commande EXCEPT

SELECT
	* EXCEPT secu_sociale
FROM
	personnes

On obtient le résultat suivant : 

nomprenomville
DupontBaptisteParis
DurandJeanMarseille
DuchenePierreLyon
DupontPaulParisis
DurandJacquesMarseille
GirardBaptisteParis

Résumé

  • SELECT permet de choisir les colonnes dont a besoin
  • FROM permet de choisir le nom de la table
  • On peut sélectionner une ou plusieurs colonnes
  • La commande * permet de sélectionner toutes les colonnes d’un coup
  • Si on veut sélectionner les lignes de manière unique, SELECT DISTINCT permet de le faire
  • La commande AS permet de renommer une colonne

4 Comments

Laisser un commentaire