Vous êtes sur la page 1sur 60

Bases De Données

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 1 / 18


Bases De Données

SELECT ... FROM ... WHERE ...

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 1 / 18


Le langage SQL

Structured Query Language


en français : langage de requête structurée

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 2 / 18


Utilisation pratique

En ligne :

https://sqliteonline.com/

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 3 / 18


Utilisation pratique

En local :

SQLite Manager

Module de Firefox, gratuit, installation en 30s

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 4 / 18


Un exemple de base de données : Pissarro boutique

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 5 / 18


Un exemple de base de données : Pissarro boutique

Trois tables :
clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 5 / 18


Un exemple de base de données : Pissarro boutique

Trois tables :
clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...
articles
reference designation prix

r1 cahier 4.5
r2 colle 3
... ... ...

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 5 / 18


Un exemple de base de données : Pissarro boutique

Trois tables :
clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...
articles
reference designation prix

r1 cahier 4.5
r2 colle 3
... ... ...
ventes
reference numclient date

r1 1 20190901
r5 2 20190902
... ... ...
MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 5 / 18
Un exemple de base de données : Pissarro boutique

clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

Écrire une requête SQL retournant la liste des noms des clients

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 6 / 18


Un exemple de base de données : Pissarro boutique

clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

Écrire une requête SQL retournant la liste des noms des clients

SELECT nom FROM clients

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 6 / 18


Un exemple de base de données : Pissarro boutique

clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

Écrire une requête SQL retournant la liste des noms des clients qui habitent
Cergy.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 7 / 18


Un exemple de base de données : Pissarro boutique

clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

Écrire une requête SQL retournant la liste des noms des clients qui habitent
Cergy.

SELECT nom FROM clients WHERE adresse = "Cergy"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 7 / 18


Un exemple de base de données : Pissarro boutique

articles
reference designation prix

r1 cahier 4.5
r2 colle 3
... ... ...

Écrire une requête SQL retournant la liste des désignations et des prix des
articles coutant moins de 5 euros.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 8 / 18


Un exemple de base de données : Pissarro boutique

articles
reference designation prix

r1 cahier 4.5
r2 colle 3
... ... ...

Écrire une requête SQL retournant la liste des désignations et des prix des
articles coutant moins de 5 euros.

SELECT designation, prix FROM articles WHERE prix < 5

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 8 / 18


Un exemple de base de données : Pissarro boutique

ventes
reference numclient date

r1 1 20190901
r5 2 20190902
... ... ...

Écrire une requête SQL retournant la liste des références des articles vendu
entre le 03/09/2019 et le 12/09/2019.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 9 / 18


Un exemple de base de données : Pissarro boutique

ventes
reference numclient date

r1 1 20190901
r5 2 20190902
... ... ...

Écrire une requête SQL retournant la liste des références des articles vendu
entre le 03/09/2019 et le 12/09/2019.

SELECT reference FROM ventes WHERE date <= 20190912 AND date
>= 20190903

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 9 / 18


Vocabulaire des bases de données

Relation, attribut, domaine, schéma de relation, clé primaire.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 10 / 18


Vocabulaire des bases de données

Relation, attribut, domaine, schéma de relation, clé primaire.

relation : tableau à 2 dimension, ex : articles.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 10 / 18


Vocabulaire des bases de données

Relation, attribut, domaine, schéma de relation, clé primaire.

relation : tableau à 2 dimension, ex : articles.


attribut : colonne d'une relation, ex : designation.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 10 / 18


Vocabulaire des bases de données

Relation, attribut, domaine, schéma de relation, clé primaire.

relation : tableau à 2 dimension, ex : articles.


attribut : colonne d'une relation, ex : designation.

domaine : type d'un attribut, ex : le domaine de l'attribut

designation est chaîne de caractère, celui de prix est ottant

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 10 / 18


Vocabulaire des bases de données

Relation, attribut, domaine, schéma de relation, clé primaire.

relation : tableau à 2 dimension, ex : articles.


attribut : colonne d'une relation, ex : designation.

domaine : type d'un attribut, ex : le domaine de l'attribut

designation est chaîne de caractère, celui de prix est ottant


schéma de relation : structure de la relation, ex : le schéma de

relation de la relation articles est :


(reference : clé primaire, chaîne de caractère ; designation : chaîne de
caractère ; prix : ottant)

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 10 / 18


Vocabulaire des bases de données

Relation, attribut, domaine, schéma de relation, clé primaire.

relation : tableau à 2 dimension, ex : articles.


attribut : colonne d'une relation, ex : designation.

domaine : type d'un attribut, ex : le domaine de l'attribut

designation est chaîne de caractère, celui de prix est ottant


schéma de relation : structure de la relation, ex : le schéma de

relation de la relation articles est :


(reference : clé primaire, chaîne de caractère ; designation : chaîne de
caractère ; prix : ottant)
clé primaire : attribut ou ensemble d'attribut qui permet de
caractériser une ligne de la relation. Deux lignes diérentes ont des
clés diérentes. Ex : reference est choisi comme clé primaire de la
relation articles. (souligné)
MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 10 / 18
Vocabulaire des bases de données

Union, intersection, diérence.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 11 / 18


Vocabulaire des bases de données

Union, intersection, diérence.

Union de deux relations R1 et R2 ayant le même schéma :


SELECT nom,adresse FROM clients WHERE adresse = "Paris"
UNION
SELECT nom,adresse FROM clients WHERE adresse = "Cergy"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 11 / 18


Vocabulaire des bases de données

Union, intersection, diérence.

Union de deux relations R1 et R2 ayant le même schéma :


SELECT nom,adresse FROM clients WHERE adresse = "Paris"
UNION
SELECT nom,adresse FROM clients WHERE adresse = "Cergy"
Intersection de deux relations R1 et R2 ayant le même schéma :
SELECT nom,adresse FROM clients WHERE adresse <> "Paris"
INTERSECT
SELECT nom,adresse FROM clients WHERE adresse <> "Cergy"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 11 / 18


Vocabulaire des bases de données

Union, intersection, diérence.

Union de deux relations R1 et R2 ayant le même schéma :


SELECT nom,adresse FROM clients WHERE adresse = "Paris"
UNION
SELECT nom,adresse FROM clients WHERE adresse = "Cergy"
Intersection de deux relations R1 et R2 ayant le même schéma :
SELECT nom,adresse FROM clients WHERE adresse <> "Paris"
INTERSECT
SELECT nom,adresse FROM clients WHERE adresse <> "Cergy"
Diérence de deux relations R1 et R2 ayant le même schéma :
SELECT nom,adresse FROM clients WHERE adresse <> "Paris"
EXCEPT
SELECT nom,adresse FROM clients WHERE adresse = "Cergy"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 11 / 18


Vocabulaire des bases de données

Opérateurs logiques : AND, OR, NOT

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 12 / 18


Vocabulaire des bases de données

Opérateurs logiques : AND, OR, NOT

AND :
SELECT nom,adresse FROM clients WHERE adresse = "Paris" OR
adresse = "Cergy"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 12 / 18


Vocabulaire des bases de données

Opérateurs logiques : AND, OR, NOT

AND :
SELECT nom,adresse FROM clients WHERE adresse = "Paris" OR
adresse = "Cergy"
OR :
SELECT nom,adresse FROM clients WHERE adresse = "Paris" AND
adresse <> "Cergy"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 12 / 18


Vocabulaire des bases de données

Opérateurs logiques : AND, OR, NOT

AND :
SELECT nom,adresse FROM clients WHERE adresse = "Paris" OR
adresse = "Cergy"
OR :
SELECT nom,adresse FROM clients WHERE adresse = "Paris" AND
adresse <> "Cergy"
NOT :
SELECT nom,adresse FROM clients WHERE NOT adresse = "Paris"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 12 / 18


Vocabulaire des bases de données

Algèbre relationnelle
Théorie mathématique proche de la théorie des ensembles qui dénit des
opérations qui peuvent être eectuées sur des relations.
Établie par Edgar Frank Codd en 1970.

Opérateurs spéciques de l'algèbre relationnelle


projection
sélection (ou restriction)
renommage
produit
jointure

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 13 / 18


Vocabulaire des bases de données

Projection
πatt1 ,att2 (Tab)
récupère les attributs att1 , att2 de la table Tab (supprime des
colonnes) et supprime les lignes inutiles.
Algèbre relationnelle :
πreference (ventes)
SQL :
SELECT DISTINCT reference FROM ventes

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 14 / 18


Vocabulaire des bases de données

Sélection (ou restriction)


σC (Tab)
récupère les lignes de la table Tab qui vérient le critère C (supprime
des lignes)
Algèbre relationnelle :
σdate = 20190912 (ventes)
SQL :
SELECT * FROM ventes WHERE date = 20190912

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 15 / 18


Vocabulaire des bases de données

clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

Écrire une requête SQL retournant la liste des noms des clients qui habitent
Cergy.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 16 / 18


Vocabulaire des bases de données

clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

Écrire une requête SQL retournant la liste des noms des clients qui habitent
Cergy.

SELECT nom FROM clients WHERE adresse = "Cergy"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 16 / 18


Vocabulaire des bases de données

clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

Écrire une requête SQL retournant la liste des noms des clients qui habitent
Cergy.

SELECT nom FROM clients WHERE adresse = "Cergy"

Traduire la requête précédente dans le langage de l'algèbre relationnelle.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 16 / 18


Vocabulaire des bases de données

clients
numclient nom adresse

1 Camille Cergy
2 Daniel Pontoise
... ... ...

Écrire une requête SQL retournant la liste des noms des clients qui habitent
Cergy.

SELECT nom FROM clients WHERE adresse = "Cergy"

Traduire la requête précédente dans le langage de l'algèbre relationnelle.

πnom (σadresse=”Cergy ” (clients))


MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 16 / 18
Vocabulaire des bases de données

Renommage
SELECT reference AS r FROM articles
SELECT reference r FROM articles

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 17 / 18


On veut maintenant trouver la liste des

noms des clients qui ont fait une

commande avant le 15/09/2019.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 18 / 18


Vocabulaire des bases de données

Produit cartésien
R1 × R2 est formée par toutes les combinaisons possibles (l1 , l2 ) de
lignes l1 de R1 et de lignes l2 de R2 .
SELECT * FROM clients, ventes
SELECT * FROM clients c, ventes v

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 19 / 18


Vocabulaire des bases de données

2 tables

clients ventes
numclient nom adresse reference numclient date
1 Camille Cergy r1 1 20190901
2 Daniel Pontoise r5 2 20190902
leur produit cartésien

clients × ventes
numclient nom adresse reference numclient date
1 Camille Cergy r1 1 20190901
1 Camille Cergy r5 2 20190902
2 Daniel Pontoise r1 1 20190901
2 Daniel Pontoise r5 2 20190902
MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 20 / 18
Vocabulaire des bases de données

Jointure
On considère deux relations R1 et R2 ayant des attributs en commun.
R1 ./C R2 est formée par toutes les combinaisons possibles (l1 , l2 ) de
lignes l1 de R1 et de lignes l2 de R2 pour lesquelles la condition C est
vériée.
SELECT * FROM clients, ventes WHERE clients.numclient =
ventes.numclient
SELECT * FROM clients c, ventes v WHERE c.numclient =
v.numclient
SELECT * FROM clients JOIN ventes ON clients.numclient =
ventes.numclient
SELECT * FROM clients c JOIN ventes v ON c.numclient =
v.numclient

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 21 / 18


Vocabulaire des bases de données

2 tables

clients ventes
numclient nom adresse reference numclient date
1 Camille Cergy r1 1 20190901
2 Daniel Pontoise r5 2 20190902
leur jointure sur numclient

clients ./clients.numclient=ventes.numclient ventes


numclient nom adresse reference numclient date
1 Camille Cergy r1 1 20190901
2 Daniel Pontoise r5 2 20190902

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 22 / 18


Vocabulaire des bases de données

Jointure
Écrire une requête SQL retournant la liste des noms des clients qui ont fait
une commande avant le 15/09/2019.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 23 / 18


Vocabulaire des bases de données

Jointure
Écrire une requête SQL retournant la liste des noms des clients qui ont fait
une commande avant le 15/09/2019.

SELECT DISTINCT nom FROM clients c, ventes v WHERE


c.numclient = v.numclient AND v.date <= 20190915
SELECT DISTINCT nom FROM clients c JOIN ventes v ON
c.numclient = v.numclient WHERE v.date <= 20190915

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 23 / 18


Vocabulaire des bases de données

Jointure
Écrire une requête SQL retournant la liste des désignations des articles
achetés le 15/09/2019.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 24 / 18


Vocabulaire des bases de données

Jointure
Écrire une requête SQL retournant la liste des désignations des articles
achetés le 15/09/2019.

SELECT DISTINCT designation FROM articles a, ventes v WHERE


a.reference = v.reference AND date = 20190915
SELECT DISTINCT designation FROM articles a JOIN ventes v ON
a.reference = v.reference WHERE date = 20190915

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 24 / 18


Vocabulaire des bases de données

Jointure
Écrire une requête SQL retournant la liste des noms et adresses des clients
ayant acheté de la colle.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 25 / 18


Vocabulaire des bases de données

Jointure
Écrire une requête SQL retournant la liste des noms et adresses des clients
ayant acheté de la colle.

SELECT DISTINCT c.nom,c.adresse FROM clients c, ventes v,


articles a WHERE c.numclient = v.numclient AND a.reference =
v.reference AND designation = "colle"
SELECT DISTINCT c.nom,c.adresse FROM clients c JOIN ventes v
ON c.numclient = v.numclient JOIN articles a ON a.reference =
v.reference WHERE designation = "colle"

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 25 / 18


Vocabulaire des bases de données

Fonctions d'agrégation : min, max, somme, moyenne, comptage.

Min :

SELECT MIN(prix) FROM articles


Max :

SELECT MAX(prix) FROM articles


Somme :

SELECT SUM(prix) FROM articles


Moyenne :

SELECT AVG(prix) FROM articles

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 26 / 18


Vocabulaire des bases de données

Fonctions d'agrégation : min, max, somme, moyenne, comptage.

Comptage :

SELECT COUNT(*) FROM articles


SELECT COUNT(*) FROM articles WHERE prix < 10
SELECT prix, COUNT(*) FROM articles GROUP BY prix
SELECT prix, designation FROM articles ORDER BY prix
SELECT prix, designation FROM articles ORDER BY prix DESC
SELECT prix, designation FROM articles ORDER BY -prix

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 27 / 18


Vocabulaire des bases de données

Somme :

SELECT SUM(prix) FROM articles

Écrire une requête SQL retournant le montant total des ventes.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 28 / 18


Vocabulaire des bases de données

Somme :

SELECT SUM(prix) FROM articles

Écrire une requête SQL retournant le montant total des ventes.

SELECT SUM(a.prix) FROM articles a JOIN ventes v ON v.reference =


a.reference
SELECT SUM(a.prix) FROM articles a, ventes v WHERE v.reference =
a.reference

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 28 / 18


Vocabulaire des bases de données

Somme :

SELECT SUM(prix) FROM articles


Comptage :

SELECT prix, COUNT(*) FROM articles GROUP BY prix

Écrire une requête SQL retournant la liste des clients, avec pour chaque
client le montant de ses dépenses.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 29 / 18


Vocabulaire des bases de données

Somme :

SELECT SUM(prix) FROM articles


Comptage :

SELECT prix, COUNT(*) FROM articles GROUP BY prix

Écrire une requête SQL retournant la liste des clients, avec pour chaque
client le montant de ses dépenses.

SELECT c.nom, c.adresse, SUM(a.prix) FROM articles a JOIN ventes v


ON v.reference = a.reference JOIN clients c ON c.numclient = v.numclient
GROUP BY c.numclient

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 29 / 18


Vocabulaire des bases de données

Moyenne :

SELECT AVG(prix) FROM articles

Écrire une requête SQL retournant la liste des désignation des articles dont
le prix est supérieur au prix moyen des articles.

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 30 / 18


Vocabulaire des bases de données

Moyenne :

SELECT AVG(prix) FROM articles

Écrire une requête SQL retournant la liste des désignation des articles dont
le prix est supérieur au prix moyen des articles.

SELECT designation FROM articles WHERE prix > (SELECT AVG(prix)


FROM articles)

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 30 / 18


En résumé

SELECT (DISTINCT) liste d'attributs, fonctions d'attributs


FROM liste de tables, résultat d'un select
WHERE liste de conditions séparées par AND, OR, NOT
GROUP BY attribut
ORDER BY attribut

SELECT (DISTINCT) liste d'attributs, fonctions d'attributs


FROM table1
JOIN table2 ON table1.attribut1 = table2.attribut1
JOIN table3 ON table2.attribut2 = table3.attribut2
WHERE liste de conditions séparées par AND, OR, NOT
GROUP BY attribut
ORDER BY attribut

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 31 / 18


Liste des mots clés

SELECT JOIN
DISTINCT ON
*
FROM AND
WHERE OR
AS NOT

GROUP AVG
ORDER MIN
COUNT MAX
BY SUM

MP - Lycée Pissarro - Pontoise Bases De Données 2020/2021 32 / 18

Vous aimerez peut-être aussi