Vous êtes sur la page 1sur 71

BASE DE DONNEE 02/02/2021

Les Bases de Données

Présenté par
BOUZIDI Houssem Eddine
houssem.ipeim@gmail.com

1
BASE DE DONNEE 02/02/2021

Introduction
L’utilisation des fichiers présente des risque liés au
manque de sécurité et la multiplication des efforts pour
trouver l’information, ce qui engendre:
 Les redondances

 L’augmentation du risque d’incohérences

 La non intégrité des données

 Des problèmes liés à la sécurité

 Des problèmes liés au partage des données

2
BASE DE DONNEE 02/02/2021

C’est quoi une base de donnée?


 Une base de donnée est une entité dans laquelle il
est possible de stocker des données de façon
structurée et avec le minimum de redondance
possible.

 Ces données doivent pouvoir être utilisées par des


programmes et par des utilisateurs différents.

3
BASE DE DONNEE 02/02/2021

C’est quoi une base de donnée?


 La notion de base de données est généralement
couplée à celle de réseau, afin de pouvoir mettre en
commun ces informations : d’où le nom ‘base’.

 On parle généralement de système d’information


pour désigner toute la structure regroupant les
moyens mis en place afin de pouvoir partager des
données.

 La communication avec une base de donnée ce fait


à travers un SGBD (système de gestion de base de
4
donnée)
4
BASE DE DONNEE 02/02/2021

C’est quoi un SGBD?


 Un SGBD est un logiciel qui organise et gère les
données dans une base de données
 Un SGBD fournit l’environnement pour décrire,
mémoriser, manipuler et traiter des ensembles de
données
 Un SGBD permet d’assurer la sécurité, la
confidentialité, l’intégrité, la fiabilité et
l’indépendance logique et physique des données
 Exemple de SGBD:
(oracle, SQL Server, Sqlite…..)
5

5
BASE DE DONNEE 02/02/2021

Architecteur d’un SGBD


 Client/serveur:
La base de données est implémentée sur un
serveur
L’application tourne sur une autre machine (client)
 3-tiers:
L’introduction d’un troisième tiers, une machine qui
gère l’interface (navigateur web, une application
réseaux…..)

6
BASE DE DONNEE 02/02/2021

L’algèbre relationnel
 L’algèbre relationnelle fournit un cadre théorique
indépendant du langage, proche de la théorie des
ensembles.

 Les opérations sur les Bases de Données


Relationnel (BDR) sont définies de manière formelle
et permettant de les composer efficacement entre-
elles

7
BASE DE DONNEE 02/02/2021

L’algèbre relationnel
 La BDR représente la base de données comme un
ensemble de tables sans préjuger de la façon dont
les information sont stockées dans la machine
Donc:
 Les données sont organisées sous forme de tables à
deux dimensions, encore appelées relations, dont
les lignes sont appelées n-uplet ou tuple ou
enregistrement
 Les données sont manipulées par des opérateurs de
l’algèbre relationnelle
8

8
BASE DE DONNEE 02/02/2021

L’algèbre relationnel

• Un des grands avantages du modèle relationnel


est sa très grande simplicité. Il n’existe en effet
qu’une seule structure, la relation.
• Une relation peut simplement être représentée
sous forme de table.
• Une relation a donc un nom et se compose d’un
ensemble de colonnes désignées par un nom
d’attribut. Dans chaque colonne on trouve des
valeurs d’un certain domaine (chaînes de
caractères, nombres). Enfin on constate que
chaque ligne (ou tuple) correspond à une entité. 9

9
BASE DE DONNEE 02/02/2021

L’algèbre relationnel
 Domaine:
C’est un ensemble fini ou infini de valeurs
caractérisées par un nom dans lequel les données
(d’une colonne) prennent valeur (c’est-à-dire entier,
flottant, chaîne de caractère ou autre).
 Attribut (colonne):

C’est un nom qui permet de définir une colonne


d’une table (les attributs d’une même table sont
distincts). Un attribut est associé à un domaine

10

10
BASE DE DONNEE 02/02/2021

L’algèbre relationnel
Conclusion:
• Ensemble d’opérateurs qui s’appliquent aux
relations
• L’algèbre relationnelle permet de faire des
recherches dans les relations (Résultat : nouvelle
relation qui peut à son tour être manipulée)
• Opérations de base: sélection (noté σ), projection
(π)
• Opérations ensemblistes: produit cartésien (x),
jointures (|X|), union (∪),intersection (∩),différence
(−), division (÷)
11

11
BASE DE DONNEE 02/02/2021

L’algèbre relationnel
 Schéma relationnel

Un schéma relationnel S consiste en un ensemble fini


de n attributs { A1 , A2 ..... , An } et de la définition de
leurs domaines. Il est noté sous la forme :
S = ( A1 : D1 , A2 : D2 ... , Ai : Di ... , An : Dn)
Où Ai les attributs (distincts deux à deux) et Di les
domaines associés

12

12
BASE DE DONNEE 02/02/2021

Règles d’intégrité
 Les règles d’intégrité (R.I.) sont des assertions qui doivent être vérifiées à
tout moment par les données contenues dans la base de données
 Trois types de R.I. complètent obligatoirement la description d’un
schéma relationnel:
1- Contrainte de clé
La contrainte de clé impose que chaque relation possède une clé
primaire
2- Contrainte de référence
Elle porte sur une relation R et impose que la valeur d’un attribut
(clé étrangère) apparaisse comme valeur de clé primaire dans une autre
relation S.
3- Contrainte d’entité
Elle impose que tout attribut faisant partie de la clé primaire d’une
relation soit non nul. 13

13
BASE DE DONNEE 02/02/2021

LANGAGE SQL
Création d’une table

CREATE TABLE Nomtable (


colonne1 type1 C.I,
colonne2 type2 C.I,
.........,
.........);

14

14
BASE DE DONNEE 02/02/2021

Les principaux types de données

 Chaînes de caractères de taille fixe CHAR(taille) ou


text,
 Chaînes de taille variable VARCHAR(taille) ,
 entiers (INT ou INTEGER),
 Nombres (NUMERIC(nbChiffres,nbDecimales) ,
 nombres en virgule flottante (REAL),
 Une date (DATE)
 Un booléen (BLOB)
15

15
BASE DE DONNEE 02/02/2021

Règles d’intégrité
Les contraintes d’intégrité, portant sur une ou plusieurs colonnes,
possibles sont :
 PRIMARY KEY: spécifie qu’un ensemble d’attributs est clé primaire,
 UNIQUE: spécifie qu’un ensemble d’attributs ne contient pas des
doublons ( comme PRIMARY KEY, sauf qu’il est possible de spécifier
plusieurs UNIQUE sur la même table)
 FOREIGN KEY... REFERENCES: spécifie qu’un ensemble d’attributs est
clé étrangère,

16

16
BASE DE DONNEE 02/02/2021

Règles d’intégrité

 NOT NULL: spécifie qu’un ensemble d’attributs ne contient pas


de valeur manquante (NULL)
 AUTOINCREMENT: la valeur de l’attribut sera incrémentée +1 par
rapport a la dernière ligne qui a été insérée, cette contrainte
d’intégrité est valable pour le type integer
 DEFAULT VALEUR: la valeur de l’attribut de la ligne insérée sera la
valeur par défaut si dans l’insertion on ne mentionne pas la valeur
de l’attribut

17

17
BASE DE DONNEE 02/02/2021

Schéma relationnel
base_Etudiant

Soit le schéma relationnel de la base de donnée base_etudiant

Etudiant=(NCIN,NOM_ETUD,PRENOM_ETUD,AGE,#NUM_GR)

Groupe=(NUM_GR,Filiere)

Enseignant=(NUM_ensg,nom_ensg,prenom_ensg,#num_mat)

Matiere=(num_mat,nom_mat)

Note=(#ncin,#num_mat,NOTE_DS,NOTE_EXAMEN)

18

18
BASE DE DONNEE 02/02/2021

EXEMPLE:
 Le schéma relationnel de la table ETUDIANT

ETUDIANT=(NCIN:entier,NOM_ETUD:chaine,PRENOM_ETUD:CHAINE,AGE:entier,#NUM_GR:entier)

 SQL:
CREATE TABLE ETUDIANT(
NCIN integer,
NOM_ETUD char,
PRENOM_ETUD text,
AGE int,
NUM_GR int,
PRIMARY KEY (NCIN),
19
FOREIGN KEY (NUM_GR) REFERENCES GROUPE(NUM_GR));

19
BASE DE DONNEE 02/02/2021

EXEMPLE:
 Le schéma relationnel de la table NOTE
NOTE=(#NCIN:entier,#NUM_MATIERE:entier ,NOTE_DS:reel,NOTE_EXAMEN:reel)

 SQL:

CREATE TABLE NOTE(


NCIN integer,
NUM_MATIERE integer,
NOTE_DS real,
NOTE_EXAMEN real,
PRIMARY KEY (NCIN,NUM_MATIERE),
FOREIGN KEY (NCIN) REFERENCES ETUDIANT(NCIN),
20
FOREIGN KEY (NUM_MATIERE) REFERENCES MATIERE(NUM_MATIERE));

20
BASE DE DONNEE 02/02/2021

Suppression d’une table


Suppression d’une table

DROP TABLE Nomtable ;

21

21
BASE DE DONNEE 02/02/2021

Modification d’une table (schéma relationnel)

 Ajout d’un attribut à la relation en utilisant le mot clé ADD.


l'attribut est également ajouté aux lignes existants
et la valeur de l'attribut pour ces lignes est la valeur par défaut ;

ALTER TABLE R
ADD colonne type C.I;

 Suppression d’un attribut à la relation en utilisant le mot clé DROP.


l'attribut est supprimer pour tous les tuples de la relations

ALTER TABLE R
22
DROP colonne ;
22
BASE DE DONNEE 02/02/2021

Insertion des données

INSERT INTO Nomtable (attr1,attr2,…..,attrN)


VALUES(val1,val2,………,valN);

• Les attributs qui n’ont pas de valeurs vont prendre la valeur NULL ou la
valeur par défaut

23

23
BASE DE DONNEE 02/02/2021

Insertion des données


Exemple:
INSERT INTO ETUDIANT (NCIN,NOM_ETUD,PRENOM_ETUD,NUM_GR)
VALUES (1,’BOUZIDI’,’HOUSSEM’,2)

 La valeur de l’attribut AGE va être NULL

INSERT INTO ETUDIANT


VALUES (1,’BOUZIDI’,’HOUSSEM’,19,2)

 Dans ce cas les valeurs des attributs doit suivre l’ordre de la


création de la table ETUDIANT 24

24
BASE DE DONNEE 02/02/2021

manipulation de données (Projection)

Projection : Elimination de certains attributs d’une relation.

 Algèbre relationnelle :
Π attributs (R)

 SQL:
SELECT Ai ,…., Ap
FROM R ;

Exemple: Donner le nom et le prénom des étudiants


ΠNOM_ETUD,PRENOM_ETUD(ETUDIANT)
Select NOM_ETUD,PRENOM_ETUDFROM ETUDIANT;
25

25
BASE DE DONNEE 02/02/2021

manipulation de données (selection)

Sélection : sélection des tuples satisfaisant un certain prédicat.

 Algèbre relationnelle : σcondition(R)


 SQL:
SELECT *
FROM R
WHERE P;

Exemple: Les étudiants qui ont un âge >=20

Select * FROM ETUDIANT


σAGE>=20(ETUDIANT) WHERE AGE>=20;
26

26
BASE DE DONNEE 02/02/2021

manipulation de données (Sélection)

Exemple: Les noms et les prénoms des étudiants qui ont un âge >=20

Π NOM_ETUD,PRENOM_ETUD(σAGE>=20(ETUDIANT))

Select NOM_ETUD,PRENOM_ETUD
FROM (select * FROM ETUDIANT where AGE>=20)

Select NOM_ETUD,PRENOM_ETUD
FROM ETUDIANT
where AGE>=20
27

27
BASE DE DONNEE 02/02/2021

manipulation de données (Sélection)

 <, <=, =, >=, >, <> ;


 AND, OR, NOT ;
 IN: par exemple AGE IN (20, 22) ; les étudiants dont l'âge
est 20 OU 22
 NOT IN: par exemple AGE NOT IN (19,22); les étudiants dont
l’âge différent de19 et 22
 BETWEEN: par exemple AGE BETWEEN 19 AND 21 ;
 LIKE: pour comparer des chaînes de caractères, par exemple :
NOM_ETUD LIKE ‘_e%’ (« % » remplace n’importe quel
ensemble de caractère, « _ » remplace un seul caractère)
renverra les tuples des étudiants dont le deuxième caractère du
nom est ‘e’.
28

28
BASE DE DONNEE 02/02/2021

manipulation de données (Sélection)

 IS: par exemple AGE is NULL pour chercher les tuples dont la
valeur de l’attribut AGE est vide ;
 EXISTS: L’utilisation basique de la commande EXISTS consiste à
vérifier si une sous-requête retourne un résultat ou non, en
utilisant EXISTS dans la clause conditionnelle. La requête
externe s’exécutera uniquement si la requête interne retourne au
moins un résultat.

A noter : cette commande n’est pas à confondre avec la clause IN.


La commande EXISTS vérifie si la sous-requête retourne un résultat
ou non, tandis que IN vérifie la concordance d’une à plusieurs
données.
29

29
BASE DE DONNEE 02/02/2021

manipulation de données (Sélection)

Le nom et le prénom des étudiants ‘MP’

Select NOM_ETUD,PRENOM_ETUD
FROM ETUDIANT
Where NUM_GR in (select NUM_GR
FROM GROUPE
Where FILIERE =‘MP’)

Select NOM_ETUD,PRENOM_ETUD
FROM ETUDIANT E
Where exists(select *
FROM GROUPE G
Where G.NUM_GR = E.NUM_GR and
FILIERE =‘MP’)
30

30
BASE DE DONNEE 02/02/2021

manipulation de données (Sélection)

 Les noms et les prénoms des étudiants qui ont les même âges que
les étudiants dont le nom commence par la lettre ‘b’

Select NOM_ETUD,PRENOM_ETUD
FROM ETUDIANT
Where AGE in (select AGE
FROM ETUDIANT
Where NOM_ETUD like ‘b%’)

31

31
BASE DE DONNEE 02/02/2021

manipulation de données
Les opérations binaires:

Soient R et S deux relations du même schéma :


 Union: R ∪ S

 Intersection : T = R∩S

 Différence : T=R-S

 Produit cartésien : RxS


 Jointure R [X] S

 Division R ÷ S

32

32
BASE DE DONNEE 02/02/2021

manipulation de données (Union)

Union : unit dans une même relation les tuples de R et de S


.
 Algèbre relationnelle : R S
A B C D
R∪S
1 5 3 8

 SQL: 2 6 4 9
3 8
SELECT A1,A2 R∪S
FROM R A B
1 5
Union
2 6
SELECT A1,A2
3 8
FROM s 3 8 33

4 9
33
BASE DE DONNEE 02/02/2021

manipulation de données (Union)

 les noms et les prénoms des étudiants qui ont un âge = 19 ou 20.

 Algèbre relationnelle :

Π NOM_ETUD,PRENOM_ETUD(σ AGE=19 ou AGE=20 (ETUDIANT))

ou

Π NOM_ETUD,PRENOM_ETUD(σ AGE=19(ETUDIANT))

Π NOM_ETUD,PRENOM_ETUD(σAGE=20(ETUDIANT))

34

34
BASE DE DONNEE 02/02/2021

manipulation de données (Union)

 SQL:

Select NOM_ETUD,PRENOM_ETUD
From (select * from ETUDIANT where AGE=19 or AGE=20)

Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where AGE=19 or AGE=20

Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where AGE=19

Union
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where AGE=20
35

35
BASE DE DONNEE 02/02/2021

manipulation de données (Union)

 les noms et les prénoms des étudiants et les enseignants qui ont un
nom qui se termine par la lettre ‘b’

Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where NOM_ETUD like ‘%b’
Union
Select NOM_ENSG,PRENOM_ENSG
From ENSEIGNANT
Where NOM_ENSG like ‘%b’

36

36
BASE DE DONNEE 02/02/2021

manipulation de données(Intersection)
 Intersection : sélectionner dans une même relation les tuples qui
existent à la fois dans R et S
 Algèbre relationnelle : R S
A B A B
R∩S 1 5 3 8
 SQL: 2 6 1 5
3 8 4 9
SELECT A1,A2 R∩S
FROM R A B
INTERSECT 1 5
SELECT A1,A2 3 8

FROM s
37

37
BASE DE DONNEE 02/02/2021

manipulation de données(Intersection)
 les NCIN des étudiants qui ont une note de DS et une note
d’examen >= 10
 Algèbre relationnelle :

Π NCIN (σ NOTE_DS>=10 (NOTE)) ∩ Π NCIN (σ NOTE_EXAMEN >=10 (NOTE))

 SQL:

Select NCIN
From NOTE
Where NOTE_DS>=10
intersect
Select NCIN
From NOTE
Where NOTE_EXAMEN >=10
38

38
BASE DE DONNEE 02/02/2021

manipulation de données(Différence)
 Différence: sélectionner les tuples de R qui ne sont pas dans S
 Algèbre relationnelle :
R S
R-S A B A B
1 5 3 8
 SQL:
2 6 1 5
3 8 4 9
SELECT A1,A2
R-S
FROM R
A B
MINUS ou EXCEPT
2 6
SELECT A1,A2
FROM s
39

39
BASE DE DONNEE 02/02/2021

manipulation de données(Différence)
 Les noms et les prénoms des étudiants qui ont toutes les notes de ds >=10
dans toutes les matières
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
EXCEPT
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where NCIN in (select NCIN
From NOTE
Where NOTE_DS <10)

ou
Select nom_etud,prenom_etud
From ETUDIANT E
Where not exists (select *
From note N
Where E.NCIN = N.NCIN
40
And NOTE_DS <10)

40
BASE DE DONNEE 02/02/2021

manipulation de données
(Produit cartésien)

 Produit cartésien: est la relation qui inclut tout les tuples


représentant toutes les combinaisons possibles de R et S
 Algèbre relationnelle : R S
A B B C
RXS 1 5 5 8
 SQL: 2 6 6 3
3 5
SELECT * A B B C
1 5 5 8
FROM R,S
1 5 6 3
RXS
2 6 5 8
2 6 6 3
3 5 5 8
41
3 5 6 3

41
BASE DE DONNEE 02/02/2021

manipulation de données(Jointure)
 Jointure: créer toutes les combinaisons significatives entre les
tuples de deux relations
Algèbre relationnelle : R S
A B B C
R |X|R.Ai=S.Ai S 1 5 5 8
 SQL: 2 6 6 3
SELECT * 3 5
A B B C
FROM R,S R [X] S 1 5 5 8
Where R.B=S.B A B B C 1 5 6 3
1 5 5 8 2 6 5 8
SELECT *
2 6 6 3 2 6 6 3
FROM R join S 3 5 5 8 3 5 5 8
On R.A1=S.A1 3 5 6 3
42

42
BASE DE DONNEE 02/02/2021

manipulation de données (Jointure)

 Les ncin, noms et les prénoms des étudiants ainsi que leurs
numéros du groupe et leurs filières

SELECT E.NCIN,E.NOM_ETUD,E.PRENOM_ETUD,E.NUM_GR,G.FILIERE
FROM ETUDIANT E JOIN GROUPE G
ON E.NUM_GR = G.NUM_GR;

SELECT E.NCIN, E.NOM_ETUD,E.PRENOM_ETUD,E.NUM_GR,G.FILIERE


FROM ETUDIANT E , GROUPE G
where E.NUM_GR = G.NUM_GR;

43

43
BASE DE DONNEE 02/02/2021

manipulation de données (Jointure)

 Les noms et les prénoms des étudiants ‘MP’

SELECT E.NOM_ETUD,E.PRENOM_ETUD
FROM ETUDIANT E , GROUPE G
where E.NUM_GR = G.NUM_GR
And FILIERE = ‘MP’
 Les noms , les prénoms , le nom de la matière, la note de ds et
la note d’examen pour chaque étudiant

SELECT E.NOM_ETUD,E.PRENOM_ETUD, NOM_MAT, NOTE_DS,NOTE_EXAMEN


FROM ETUDIANT E , Note N, MATIERE M
where E.NCIN = N.NCIN
And M.NUM_MAT = N.NUM_MAT

44

44
BASE DE DONNEE 02/02/2021

manipulation de données (Division)

 Division : relation composée des n-uplets tels que le produit cartésien


avec le diviseur soit un sous-ensemble de la relation dividende
Algèbre relationnelle :
R÷S

 EXEMPLE:

45

45
BASE DE DONNEE 02/02/2021

manipulation de données
 Soit le schéma relationnel suivant:
Article = (desig, #coul)
Couleur=(coul)
Desig: désignation de l’article
Coul: est le couleur de l’article

 Donner la requête SQL qui permet de donner la


couleur manquante pour l’article qui à comme
désignation =‘PANTALON’
46

46
BASE DE DONNEE 02/02/2021

manipulation de données (Division)


ARTICLE COULEUR
DESIGNATION COUL COUL
CHEMISE NOIR
T-shirt BLEU NOIR
CHEMISE BLEU BLEU
CHEMISE GRIS GRIS
PANTALON BLEU
T-SHIRT GRIS
DESIGNATION
PANTALON NOIR
CHEMISE

 ARTICLE ÷ COULEUR : est la réponse à la question quels sont les articles qui

sont disponibles dans toutes les couleurs

47

47
BASE DE DONNEE 02/02/2021

manipulation de données (Division)

 Quel sont les articles qui sont disponibles dans toutes les couleurs

Select distinct (designation)


From article ar1,
Where not exists (select *
From couleur c1
Where not exists (select *
From article ar2
Where ar2.designation = ar1.designation
And cl.coul= ar2.coul))

48

48
BASE DE DONNEE 02/02/2021

manipulation de données
(Fonction d’agrégation)

Les fonctions d’agrégation dans le langage SQL permettent d’effectuer des


opérations statistiques sur un ensemble d’enregistrement.

Les principales fonctions sont les suivantes :

 AVG(): pour calculer la moyenne sur un ensemble d’enregistrement

 COUNT(): pour compter le nombre d’enregistrement sur une table ou une


colonne distincte

 MAX(): pour récupérer la valeur maximale d’une colonne sur un ensemble de


ligne. Cela s’applique à la fois pour des données numériques ou
alphanumériques

 MIN():pour récupérer la valeur minimum de la même manière que MAX()

 SUM(): pour calculer la somme sur un ensemble d’enregistrement 49

49
BASE DE DONNEE 02/02/2021

manipulation de données
(Fonction d’agrégation)

 GROUP BY: est utilisée en SQL pour grouper plusieurs résultats et utiliser une
fonction d’agrégation sur un groupe de résultat.
 HAVING: est similaire à une clause WHERE si ce n'est qu'elle qui s'applique
uniquement aux groupes dans leur ensemble (c'est-à-dire aux lignes du jeu de
résultats qui représentent des groupes), tandis que la clause WHERE
s'applique aux lignes individuelles. Une requête peut comporter à la fois une
clause WHERE et une clause HAVING
 ORDER BY: permet de trier les lignes dans un résultat d’une requête SQL. Il
est possible de trier les données sur une ou plusieurs colonnes, par ordre
ascendant ou descendant. Par défaut les résultats sont classés par ordre
ascendant, toutefois il est possible d’inverser l’ordre en utilisant le suffixe
50
DESC après le nom de la colonne.

50
BASE DE DONNEE 02/02/2021

manipulation de données
(Fonction d’agrégation)

Syntaxe général:
SELECT Fonction (Attribut)
FROM Relation
WHERE condition
GROUP BY (Attribut)
HAVING condition
ORDER BY Attribut

Une requête cumulant WHERE, HAVING, GROUP BY est évaluée dans


l'ordre suivant :
1 – Application de WHERE : sélectionne des lignes
2 – Application de GROUP BY : constitution des groupes
3 – Application de HAVING : sélection des groupes
4 – évaluation des fonctions d'agrégation sur les groupes constitués.
51

51
BASE DE DONNEE 02/02/2021

manipulation de données
 Le nombre des nom des étudiants dont leur nom commence par ‘s’:
Select count (distinct(NOM_ETUD)) from ETUDIANT where NOM_ETUD like ‘s%’

 Le nombre des étudiants que leur nom commence par ‘s’

Select count (NOM_ETUD) from ETUDIANT where NOM_ETUD like ‘s%’

 La moyenne générale de chaque matière


Select AVG (note_examen) from note Group by (num_mat)

 La moyenne générale des notes de l’examen en informatique

Select AVG (note_examen)


from note
Group by (num_mat)
Having num_mat = (select num_mat from matiere where nom_mat=‘informatique’ 52

52
BASE DE DONNEE 02/02/2021

manipulation de données
 Le nombre des étudiants
Select count (*) FROM ETUDIANT
 Le nombre des étudiants par groupe
Select count (*),NUM_GR FROM ETUDIANT groupe by (NUM_GR)

 Le nombre des étudiants par filière

Select count (*),FILIERE


FROM ETUDIANT E,GROUPE G
Where E.NUM_GR = G.NM_GR
groupe by (FILIERE)

 Le nombre des étudiants par filière ‘MP’


Select count (*),FILIERE
FROM ETUDIANT E,GROUPE G
Where E.NUM_GR = G.NM_GR
groupe by (FILIERE) 53
Having FILIERE = ‘MP’
53
BASE DE DONNEE 02/02/2021

manipulation de données
 Les noms des étudiants qui ont la meilleure note de DS en informatique

Select nom_etud,prenom_etud
From etudiant
Where ncin in (select ncin
From note
Where note_ds = (select max(note_ds)
From note
Where num_mat = (select N_MAT
From matiere
Where NOM_MAT = ‘INF%’))
And NUM_Mat = (select N_MAT
From matiere
Where NOM_MAT=‘INFORMATIQUE’)

54

54
BASE DE DONNEE 02/02/2021

manipulation de données
 Le nom, prénom, le nom de la matière et la moyenne de chaque matière pour
chaque étudiant (Sachant que la moyenne d’une matière est calculée comme
suit : 40% note de ds et 60% note d’examen)
Select E.nom_etud as NOM, E.PRENOM_ETUD as PRENOM, M.NOM_MAT as
MATIERE, (note_ds*0.4 + note_examen*0.6) as MOYENNE
from ETUDIANT E ,NOTE N , MATIERE M

where N.NCIN=E.NCIN and N.NUM_MAT = M.NUM_MAT

 Le nom, prénom et la moyenne générale pour chaque étudiant en ordre


décroissant de la moyenne
Select nom , prenom, AVG(moy) as moyenne
from (Select E.ncin, E.nom_etud as NOM, E.PRENOM_ETUD as PRENOM,
(note_ds*0.4 + note_examen*0.6) as MOY
from ETUDIANT E ,NOTE N
where N.NCIN=E.NCIN)
Group by (NCIN)
55
Order by moyenne DESC

55
BASE DE DONNEE 02/02/2021

Mise à jour des données(suppression )


La suppression s’effectue avec la commande DELETE dont la
syntaxe est la suivante :

DELETE FROM R

WHERE C;

 Cette requête supprime toutes les lignes de R satisfaisant la condition C.

56

56
BASE DE DONNEE 02/02/2021

Mise à jour des données(suppression )

 supprimer les étudiants qui ont une note de ds <10 en informatique

DELETE FROM ETUDIANT


WHERE NCIN in (select NCIN
from note
Where note_ds<10 and num_mat = (select num_mat
from matiere
where nom_mat=‘INFORMATIQUE’)

57

57
BASE DE DONNEE 02/02/2021

Mise à jour des données (modification )


La modification s’effectue avec la commande UPDATE dont la
syntaxe est la suivante :

UPDATE R
SET A1 = V1,A2=V2,…,An=Vn
WHERE C;

 Cette requête modifie tous les lignes de R pour les attributs Ai avec Vi
satisfaisant la condition C.

58

58
BASE DE DONNEE 02/02/2021

Mise à jour des données (modification )

 Ajouter +1 à la note de ds pour tous les étudiants ‘MP’

UPDATE NOTE
Set NOTE_DS = NOTE_DS + 1
WHERE NCIN in (select NCIN
from ETUDIANT
Where NUM_GR in (select NUM_GR
from GROUPE
where FILIERE = ‘MP’))

59

59
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


 Pour importer la bibliothèque de l’SGBD sqlite3

import sqlite3
 Pour se connecter à la base de donnée
BD=sqlite3.connect(‘’nom_base.db’’)

• Le nom de la base de donnée doit être une chaine de caractère qu’il peut
être le chemin relatif ou absolu de la base
• Si la base de donnée n’existe pas elle sera créer
• La variable BD dans notre exemple sera le lien à notre base

60

60
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


 Permet d’avoir un curseur pour pouvoir communiquer avec la base BD à
travers SGBD sqlite3
Cur=BD.cursor()
 Exécuter une requête SQL
Cur.execute(Req)
 Req est une chaine de caractère dont on trouvera notre requête SQL qui
sera exécutée
 Exécuter une requête plusieurs fois (nombre des éléments de L)

Cur.executemany(Req,L)

 Récupérer le résultat de la dernière requête qui a été exécutée. Cette


méthode permet de retourner une liste de tuples contenant les
enregistrements de la requête exécutée
61

Cur.fetchall()
61
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON

 Récupérer la première ligne du résultat de la requête qui a été exécutée. Le


résultat sera un tuple

Cur.fetchone()
 valide une transaction avec la base
BD.commit()
 Fermer la connexion avec la base de données
BD.close()

62

62
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


Exemple: création d’une table
import sqlite3
BD=sqlite3.connect("base_etud.bd")
Cur=BD.cursor()

La création d’une relation ETUDIANT dont le schéma relationnel est le suivant:


Etudiant=(NCIN:entier,NOM_ETUD:chaine,PRENOM_ETUD:chaine,AGE:entier,#NUM_GR:entier)

Cur.execute(’’’create table Etudiant (NCIN int,NOM_ETUD


varchar(20),PRENOM_ETUD text, AGE integer,NUM_gr integer,
Primary key (NCIN),
FOREIGN Key (NUM_GR) REFERENCES GROUPE (NUM_GR)); ’’’)

req=’’’create table GROUPE (NUM_gr integer, FILIERE


text, PRIMARY KEY (NUM_GR)); ’’’
Cur.execute(req) 63

63
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


Exemple: Insertion des données
 Insertion de la ligne (01,’BOUZIDI’,’HOUSSEM’,19,2) dans la table ETUDIANT

Cur.execute("INSERT INTO ETUDIANT (NCIN,NOM_ETUD,PRENOM_ETUD,AGE,NUM_GR)


VALUES (01,‘BOUZIDI',‘HOUSSEM',19,2)")

Cur.execute("INSERT INTO ETUDIANT VALUES (01,‘BOUZIDI',‘HOUSSEM',19,2)")

Req="INSERT INTO ETUDIANT VALUES(01,‘BOUZIDI',‘HOUSSEM',19,2)"


Cur.execute(Req)

Req="INSERT INTO etudiant VALUES (?,?,?,?,?) "


Cur.execute(Req,[01,‘BOUZIDI',‘HOUSSEM',19,2]) 64

64
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


Exemple: Insertion des données
 Insertion de plusieurs lignes dans la table GROUPE qui seront dans une liste L
L=[[1,’MP’], [2,’MP’], [3,’PT’], [4,’PT’], [5,’PC’]]

for i in L:
Cur.execute("INSERT INTO GROUPE VALUES (?,?) ",i)

Cur.executemany("INSERT INTO GROUPE VALUES (?,?) ",L)

65

65
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


Exemple: chercher des données
 Les noms et les prénoms des étudiants ‘MP’
Cur.execute( ‘‘‘ select nom_etud,prenom_etud from
etudiant where num_gr in (select num_gr from etudiant
where filiere = ‘MP’) ’’’ )
L=Cur.fetchall()

 L est une liste du tuple où chaque tuple contient deux éléments qui seront
respectivement le nom et le prénom des étudiants ‘MP’

66

66
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


 Ecrire une fonction qui accepte en paramètre une liste L qui contient des listes
contenant chacune les informations d’un étudiant dans la relation ETUDIANT de la
base ‘’BASE_ETUD.bd’’
def insertion_etudiant(L):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
c.executemany(‘insert into ETUDIANT values(?,?,?,?,?),L)
B.commit()
B.close()

def insertion_etudiant(L):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
for i in L:
c.execute(‘insert into ETUDIANT values(?,?,?,?,?),i)
B.commit() 67
B.close()

67
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


 Ecrire une fonction qui accepte en paramètre un âge et qui permet de
retourner une liste qui contient les noms et les prénoms des étudiants
dont l'Age égale à l'âge passé en paramètre

def recherche_etudiant_age(A):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
c.execute(‘’’ select NOM_ETUD, PRENOM_ETUD
from ETUDIANT where AGE = ?)’’’, [A])
L= c.fetchall()
B.close()
return (L)

68

68
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON

def recherche_etudiant_age(A):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
c.execute(‘’’ select NOM_ETUD, PRENOM_ETUD
from ETUDIANT where AGE = {}’’’.format(A))
L= c.fetchall()
b.close()
Return (L)

69

69
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON


 Ecrire une fonction qui accepte en paramètre une filière et qui permet d’enregister dans un
fichier texte (« fich_etud.txt ») les noms et les prénoms des étudiants qui appartiennent à la
filière passée en paramètre. Chaque étudiant sera enregistré dans une ligne avec le nom et
le prénom sont séparés par un point-virgule.

def remplir_fich_etudiant(FIL):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
c.execute(‘’’ select NOM_ETUD, PRENOM_ETUD
from ETUDIANT where NUM_GR in (select NUM_GR
From GROUPE where FILIERE = ?)’’’, [FIL])
L= c.fetchall()
B.close()
f=open(‘fich_etud.txt’,’w’)
for i in L:
f.write(‘;’.join(i)+’\n’)
70
f.close()

70
BASE DE DONNEE 02/02/2021

SQLITE & PYTHON

Correspondance entre les types de Python et ceux de SQLite.

Types Python Types Sqlite

None NULL
int INTEGER, INT
float REAL
str TEXT, CHAR, VARCHAR
bytes BLOB
71

71

Vous aimerez peut-être aussi