Bases de données et SQL
Aspect historique
Histoire des bases de donnée
- En 1970, Edgar Codd invente le modèle relationnel pour les bases de données.
- En 1973, première version du langage SQL (Structured Query Language). C'est un langage de requêtes permettant d'interagir avec une base de données.
- En 1979, apparition du premier Système de Gestion de Base de Données (sgbd) : Oracle qui fera la fortune de ses trois fondateurs (L. Ellison, E. Oats et B. Miner).
- En 1995 (et 1996), première version d'importants sgbd libres}MySQL (et PostGreSQL).
- En 2020, Le volume mondial de données stockées est estimé à 47 milliards de téra-octets (\(47 \times 10^{21}\) octets) et a été multiplié par 20 en 10 ans.
Outils traditionnels
Apport des bases de données
Les bases de données corrigent de nombreux défauts des outils traditionnels de gestion des données. En effet :
- Les accès simultanés par plusieurs programmes aux mêmes données pouvaient générer des conflits.
- Pour lire (ou modifier) les données il fallait savoir comment elles étaient représentées.
- Les utilisateurs devaient s'assurer de l'intégrité des données avant de les stocker. C'est à dire que c'est l'utilisateur qui était chargé du contrôle de la validité de ses données.
Principes
Principes des bases de données
Plusieurs aspects des bases de données viennent corriger les limitations des outils traditionnels :
- Principe d'unicité : un enregistrement doit être unique (une donnée qui apparaît plusieurs fois est dite redondante).
Ici intervient la notion de clé primaire, c'est à dire dans une table une identification unique de l'enregistrement.
- Principe d'intégrité : le contrôle de la validité des données est effectué par le sgbd.
Ici intervient la notion de domaine, c'est à dire qu'on peut préciser que les valeurs d'un champ doivent être d'un certain types (par exemple entier, flottant, chaine de caractères, ...) et appartenir à un certain ensemble de valeurs : le domaine.
- Principe d'indépendance logique : les utilisateurs accèdent aux données sans se soucier de la façon dont elles sont représentées ou codées dans la base.
Exemple
Prenons l'exemple suivant :
Nom | Prénom | Naissance |
---|---|---|
Pascal | Blaise | 1623 |
Lovelace | Ada | 1815 |
Boole | George | 1815 |
-
Il est certes peu probable (mais pas impossible) que deux personnes portant les mêmes noms et prénoms naissent la même année, afin de respecter le principe d'unicité, nous devons adjoindre à chaque enregistrement un champ (par exemple
id
) unique qui servira de clé primaire. -
Les champs
Nom
etPrénom
sont au format texte, le champNaissance
est un entier. -
On peut par exemple préciser les contraintes d'intégrité suivantes :
Nom
doit être non vide,Naissance
doit être supérieur à 0.
Schéma relationnel
Schéma relationnel
Le schéma relationnel d'une base de données présente les tables de cette base sous la forme de liste ou de tableau.
Dans les deux cas, on précise la clé primaire de la table en soulignant l'attribut.
On indique aussi parfois le type des attributs.
Exemple
Le schéma relationnel de la table personne
peut s'écrire sous forme de liste :
personnes (id
: int
, Nom
: text
, Prenom
: text
, Naissance
: int
)
Bases de SQL
SELECT et FROM
SELECT et FROM
- Pour récupérer la totalité des champs d'une table
table
on utilise la syntaxe :
- Pour récupérer simplement les champs
champ1
,champ2
, ... on utilise :
WHERE
Clause WHERE
Une instruction SELECT
peut être suivie d'une clause WHERE
qui permet de rechercher les enregistrements correspondants à certains conditions. Ces conditions s'expriment à l'aide des opérateurs suivant :
-
Comparaison :
=
,<
,>
,<=
,>=
,<>
(différent) etBETWEEN
(entre) -
Logique :
AND
,OR
etNOT
-
Modèle de chaines de caractères :
LIKE
où%
désigne n'importe quel suite de caractères et_
un unique caractère.
Exemples
Pour chercher dans la table les personnes nées après 1789 :
Pour chercher dans la table les personnes dont la deuxième lettre du nom est un e :
Classement des résultats
Clause ORDER BY
Une instruction SELECT
peut être suivie d'une clause ORDER BY
qui permet de classer les enregistrements selon un ou plusieurs champs.
Cette clause est elle même suivie de :
-
ASC
pour indiquer un classement par ordre croissant -
DESC
pour indiquer un classement par ordre décroissant
La valeur par défaut est ASC
Exemple
Pour classer par ordre alphabétique nom puis prénom notre table exemple :
Clauses DISTINCT et LIMIT
Clauses DISCTINCT et LIMIT
-
Une instruction
SELECT
peut être directement suivie d'une clauseDISTINCT champ
qui indique quechamp
ne doit apparaître qu'une fois dans les résultats -
Une instruction
SELECT
peut être suivie d'une clauseLIMIT
qui indique le nombre maximal d'enregistrement à renvoyer. Cette clause est particulièrement utile en relation avecORDER BY
.
Exemples
- Pour afficher les années de naissance sans répétitions :
- Pour afficher les trois plus jeunes personnes de la table :
Agrégation
Agrégation
Le langage SQL offre des opérateurs appelés fonction d'agrégation
permettant de calculer une valeur à partir d'un ensemble d'enregistrement :
-
MIN
pour obtenir le minimum (d'un champ sur un ensemble d'enregistrement) -
MAX
pour obtenir le maximum -
SUM
pour obtenir la somme -
AVG
pour obtenir la moyenne -
COUNT
our compter le nombre d'enregistrements
Exemple
Pour avoir la personne la plus âgée présente dans la table :
Créé: January 24, 2023