Vous êtes sur la page 1sur 157

Plan:

Chap. 1 - Notion de base de donnes;


Chap. 2 - Base de donnes relationnelles;
Chap. 3 - Langage SQL

GESTION DES BASE DE DONNES


ENCG-K

Semestre 5
Pr. O. ZYTOUNE

2015

Droulement
2

Cours +TP=33h
Evaluation:
40%

: (Note CC1+ Note TP+Travaux rendre)


60% : Note Examen Ecrit.

Bases de donnes omniprsentes


3

Chap. 1
Notion de Bases de donnes
4

1.
2.
3.
4.
5.

6.

Plan de la leon:
Introduction;
Dfinition dune base de donnes et dun SGBD;
Diffrents types de bases de donnes;
Quelques SGBD existants;
Objectifs et avantages des BD et SGBD;
Conclusion.

Introduction: Exemple de gestion dentreprise


5

Service clients :

Fichier client :

code client ;
Nom client ;
Adresse

Service commercial :

Ncommande ;
date de la commande ;
total de la commande ;
code client ;
Nom client ;
Adresse.

Introduction
6

Introduction:
Deux approches:
- Approche Fichiers: donnes en fonction du
traitement risque dincohrence;
- Approche base de donnes : intgration des
donnes dans un seul fichier/indpendance des
traitements.

Introduction: BD/Excel?
7

Redondance :

Donnes rptes (info client si plusieurs commandes, info produit si


plusieurs fois command)

Rcriture

Orthographe, perte de temps, mise jour difficile

Dfinition dune BD et dun SGBD


8

Une BD:
- Ensemble structur de donnes indpendant des
traitements effectuer.
- Reprsente le monde rel.
- Interroge et mise jour par des utilisateurs.

Dfinition dune BD et dun SGBD


9

Un SGBD:
- logiciel permettant un utilisateur dinteragir avec une
BD.
- Interface entre la BD et les programmes dapplications
qui communiquent avec la BD.
- Permet:
-

la dfinition d'une BD (spcification des types de donnes


stocker),
la construction d'une BD,(stockage des donnes)
la manipulation des donnes (ajouter, supprimer, retrouver
des donnes).

Diffrents types de BD
10

Il existe quatre grands types de bases de donnes :


-Les bases hirarchiques;
-Les bases rseaux;
-Les bases relationnelles;
-Les bases objets.

Modle hirarchique
11

Appartient la deuxime gnration 1965 70 sappelle aussi,


SGBD navigationnelle;
Prsente les donnes sous forme dun arbre;
Une donne peut rfrencer une autre donne dans une relation
pre/fils;
Lien entre enregistrements par des pointeurs

Modle hirarchique
12

Inconvnients :
Redondance

de donnes.
Manipulation difficile de donnes htrognes.

Modle rseau
13

Appartient aussi la 2me gnration;


Possibilit des liens entre enregistrements dans diffrents sens

Avantage par rapport aux SGBD hirarchiques : la non


redondance de donnes et la rapidit.
Inconvnients : La schma de la BD devient complexe quand la
base de donnes est importante.

Modle relationnel
14

3me gnration 1969-


les donnes sont reprsentes dans des tables
Manipulation suivant les rgles mathmatiques des ensembles

Le modle Objet
15

Apparition entre 1990 - 1999


Les donnes sont reprsentes en tant quinstances
de classes hirarchises

Diffrents types de BD
16

Aujourdhui, le modle relationnel est le plus utilis il


occupe environ 75%

Quelques SGBD existants


17

Hirarchiques : IMS;

Rseaux : IDS2, Socrate-Clio;

Quelques SGBD existants : Bases relationnelles


18

Les petites BD:


FileMaker Pro
Access
FoxPro
4e dimension
MySQL
Paradox

Les grosses BD
Oracle
Informix
Sybase
ProsgreSQL
DB2
Ingres
(SQLServer)

Quelques SGBD existants


19

Bases objet :

O2
Gemstone
ObjectStore
Jasmine

Objectifs et avantages
20

Les principales fonctions dun SGBD:


- Indpendance donnes/programme (indpendance
physique);
- Indpendance logique;
- Intgration des donnes sans redondance;
- Partage de donnes;
- Intgrit des donnes;
- Scurit des donnes et confidentialit.

Indpendance physique
21

Ils ne sont pas apparents:


Les

disques, la machine, les mthodes daccs, les


modes de placement, les mthodes de tri, le codage
des donnes.

Le SGBD offre une structure canonique permettant


la reprsentation des donnes relles sans se
soucier de laspect matriel du systme.

Indpendance logique
22

Chaque groupe de travail doit pouvoir se concentrer sur ce qui


lintresse.
Peut arranger les donnes comme il souhaite, mme si dautres
utilisateurs ont une vue diffrente.
Ladministrateur peut faire voluer le SI sans remettre en cause
lorganisation de chaque groupe de travail.
Exemple: Une base de donnes contient les informations suivantes:

vhicule(num-vhicule, marque, type, couleur)


personne(num-CIN, nom, prnom)
propritaire(num-CIN, num-vhicule, date-achat).
Un groupe de travail ne sintressera quaux individus qui possdent une voiture :

individus(num-CIN, nom, prnom, num-vhicule).

Un autre groupe ne sintressera quaux vhicules vendus une certaine date :

voiture(num-vhicule, type, marque, date-achat).

Non-redondance des donnes


23

Le SGBD doit permettre dviter la duplication


dinformations qui entraine:
la

perte de place mmoire,


demande des moyens humains importants pour saisir et
maintenir jour plusieurs fois les mmes donnes.

Cohrence des donnes


24

Cohrence obtenue par la vrification des contraintes


dintgrit.
Une contrainte dintgrit est une contrainte sur les donnes de
la base, qui doit toujours tre vrifie pour assurer la
cohrence de cette base.
Les systmes dinformation sont souvent remplis de telles
contraintes ; le SGBD doit permettre une gestion automatique
de ces contraintes dintgrit sur les donnes.
Par exemple :

un identifiant doit toujours tre saisi ;


le salaire doit tre positif ;

Concurrence daccs aux donnes


25

Le SGBD doit permettre plusieurs personnes (ou


applications) daccder simultanment aux donnes
tout en conservant lintgrit de la base.
Chacun doit avoir limpression quil est seul utiliser
les donnes.

Scurit des donnes


26

Les donnes doivent tre protges des accs non autoriss ou mal
intentionns.
Il doit exister des mcanismes permettant dautoriser, contrler et
enlever des droits daccs certaines informations nimporte
quel usager.

Exemple, un chef de service pourra connatre les salaires des personnes quil
dirige, mais pas de toute lentreprise.

Le systme doit aussi tolrer les pannes : si une panne pendant


lexcution dune opration, le SGBD doit tre capable de revenir
un tat dans lequel les donnes sont cohrentes.
Il en va de mme en cas dchec dans un programme. Le SGBD
doit pouvoir revenir un tat cohrent, ce qui est rendu possible
par la gestion des transactions.

Manipulation possible par des non informaticiens


27

Le SGBD doit permettre dobtenir les donnes par


des langages non procduraux.
On doit pouvoir dcrire ce que lon souhaite sans
dcrire comment lobtenir.

Exercice
28

Indiquer

quel est lutilisateur qui doit excuter les


fonctions suivantes pour un systme de paie dune
grande entreprise : Un programmeur, un administrateur
ou lutilisateur final?
a) crire

un programme dapplication pour gnrer et imprimer


les chques.

b) Changer

dans la base de donnes ladresse dun employ


qui a dmnag.

c)

Crer un nouveau compte dutilisateur pour un employ


nouvellement embauch.

Exercice
29

tant

donn le modle de donnes suivant dun jardin,


doit-il tre hirarchique, rseau ou relationnel ?

Nom de la plante

Instructions
de la plantation

Luminosit
ncessaire

Conditions

Cot
Conditions
de sol

Solution de lexercice N2
30

Ce

doit tre un modle hirarchique car il a un aspect


arborescent.
Pour

dterminer la quantit de lumire ncessaire, il faut


accder dabord au nom de la plante, puis aux conditions.

Il

serait difficile daccder aux instructions de plantation


uniquement pour les plantes qui doivent tre plantes en
plein soleil.

Mais

le modle relationnel est aussi possible. La


navigation se fait par valeur.

Conclusion
31

Utilit de loutil informatique dans lentreprise


(Automatiser une partie/tout le SI);
Avantages apports par lutilisation des BDs ;
Modle relationnel est le plus utilis.

Chap. 2
Modle Relationnel
32

Plan
Introduction

Concepts

de base
Algbre relationnelle
Rgle de passage du MCD au MLD

Motivation dun MLD


33

Un Modle Conceptuel de Donnes nest pas directement


implantable car indpendant de tout choix technologique;
Traduction ncessaire vers un Modle Logique de Donnes:
Suit une approche spcifique de modlisation (hirarchique,
objet, relationnelle, )
Utilise un langage formel de spcification de la structure
logique des donnes.

Origine du modle relationnel


34

Propos par Codd (Thse de doctorat) en 1970


Application de la thorie des relations la gestion de fichiers
informatiques
Le modle relationnel fournit un support mathmatique
cohrent la manipulation de donnes : lalgbre relationnelle
Modle dominant dans les offres commerciales de SGBD
Oracle, DB2, Sybase, Ingres, Postgres, MySQL, Access

Base de donnes relationnelle


35

Une BD relationnelle est compose dun ensemble de


tables (ou relations)
Une table possdant un nom et est compose de :

Chaque champ a un nom et un type


Texte, numrique, date,
Manipulation par des oprateurs de lalgbre relationnelle
Cohrence des donnes gre par des rgles et normes (Vrifie
surtout au niveau MCD)
Dpendances fonctionnelles
Thorie de la normalisation

Lignes quon appelle enregistrements (ou tuples)


Colonnes reprsentant chacune un champ (ou un attribut)

Exemple de tables
36

3 champs

Nom de la table

Commande NComman
de

4 enregistrements

DateCommande Montant

27

13/2/2007

120

65

12/1/2008

34

10/06/2006

27

34

14/12/2007

1500

NCommande est du type numrique entier


Montant est du type numrique rel
DateCommande est du type date

Relation & attribut


37

Chaque

colonne dune table appartient un ensemble


de valeurs possibles appel son domaine.
Le domaine dsigne toutes les valeurs permises qui
peuvent apparatre dans la colonne.
Un domaine se dfinit soit :
en

extension : couleur_voiture = {bleu, vert, marron, noir, gris,


rouge}
en comprhension : ge_enfants = {x dans N tel que x <15}

Relation & attribut


38

Soit lattribut Ai est une variable qui prend ses valeurs dans un domaine Di
Soit U = {A1 , A2, ..., An}
Une relation(table) r dfinie sur U est un sous-ensemble du produit
cartsien D1 D2 Dn

Soient deux ensembles P et Q, on appelle Produit cartsien de P


et Q, l'ensemble not PQ , des couples (x, y) o x P et y Q.
Exemple:

Professeurs={ Abbad, Saaidi, Moursi}


tudiants= { Issam, Hamidi}
tudiants Professeurs={ (Issam, Abbad) , (Issam,Saaidi) , (Issam,
Moursi) , (Hamidi, Abbad) , (Hamidi, Saaidi) , (Hamidi, Moursi) }

Tuple & cl
39

Soit u un tuple de la relation R, on note u.Ai la valeur de l'attribut Ai


du tuple u.
Chaque tuple est distinct :

u, v r, i 1,2,..., n

u.Ai v.Ai

si

alors

uv

Une cl de la relation R est un ensemble minimal d'attributs K tels


que les valeurs de ces attributs permettent de distinguer tout tuple
des autres

K A1, A2,..., An

u, v r , si

La cl retenue est dite cl primaire

u.K v.K

alors

uv

Relation & attribut


40

Le schma de relation reprsente la structure invariante dune


relation.
Constitu du nom de la relation suivi de la liste des attributs et
de leurs domaines associs
PRODUIT (NPRODUIT : entier, NOM : chane, QTE EN STOCK : entier>0)

Les attributs constituant la cl de r sont crits en premier dans


le schma de relation et sont gnralement souligns.
Une BD relationnelle est un ensemble de relations r1, r2,..., rm

Relation & attribut


41

Le

degr dune table est le nombre de ses attributs.


Exemple : La table Produit (code produit, libell du produit,
prix unitaire, quantit en stock).
Le

Le

degr de la table Produit est gale 4.

nombre total des enregistrements prsents dans une table


est appel la cardinalit de la table.

Exemple de relations
42

Propritaires

numero

nom

prenom

naissance

5
13
76

Madani
Azzouz
Daoud

Hossame
Mohcine
Ali

04-fvr-80
15-mai-76
29-nov

Vhiculs

immatriculation
3452
9835
1234
9878

A
B
A
A

13
72
2
4

marque
BMW
Renault
Peugeot
BMW

proprietaire
13
76
5
76

Rgles pour une relation


43

Deux tables dune mme BD ne peuvent avoir le mme nom


Deux colonnes dune mme table ne peuvent avoir le mme nom
Un mme champ peut tre prsent dans plusieurs tables
Lordre des colonnes est sans aucune importance.
Toutes les lignes ont le mme format et le mme nombre dentre.
Chaque entre dans chaque ligne doit tre une valeur unique.
Lordre des lignes est sans importance car elles sont identifies par
leur contenu.
Il ny a pas deux lignes identiques dans toutes leurs entres.

La valeur NULL
44

Dans

une relation, la valeur NULL reprsente des


donnes manquantes, inconnues ou des donnes
inapplicables.
La valeur NULL correspond une entre non
renseigne (non saisie, non introduite, non obligatoire).
Attention :
La

valeur NULL nest pas gale 0 (zro) et ne reprsente


aucune valeur particulire pour lordinateur.

LES RGLES D'INTGRIT


45

INTGRIT DE DOMAINE
INTGRIT DE RELATION
INTGRIT DE RFRENCE

INTGRIT DE DOMAINE
46

Contrle des valeurs des attributs:


par exemple, 4.000 salaire 20.000
liste de couleurs possibles [bleu, rouge, vert, jaune]

Contrle entre valeurs des attributs:


QTE_STOCK

QTE_COMMANDE

Contrle des oprateurs entre attributs

INTGRIT DE DOMAINE

Intgrit de la relation
48

Unicit de la cl primaire;
Aucun des attributs de la cl primaire ne doit tre NULL
(du fait que la cl primaire identifie de manire unique
les tuples dune relation).

Cl trangre
La connaissance dun numro de
commande nous permet de retrouver de
faon unique un numro de client.
Dpendance
fonctionnelle

Il existe donc une dpendance fonctionnelle


entre deux tables (commande et client).
Pour matrialiser ce lien, une colonne (numcli)
sera ajoute la table source de la dpendance
fonctionnelle.
Celle-ci sera appele cl trangre.

Attribut commun aux


deux tables
matrialisant la
dpendance
fonctionnelle.

Cls trangres et Contrainte dIntgrit Rfrentielle


50

Cl trangre (ou cl extrieure) permet au SGBDR de


maintenir la cohrence des lignes de deux relations ou des
lignes de la mme relation.
Dfinition : une cl trangre est un attribut appartenant
une table qui existe aussi en tant que cl primaire dans une
autre table.
Une cl trangre dune table rfrence une cl primaire
dune autre table.
Les valeurs de cl trangre qui apparaissent dans une
table doivent tre les mmes que celles de cl primaire dans
la table connexe.
Exemples dans le monde rel :

Une commande doit provenir dun client.

Cls trangre
n

Attribut commun aux


deux tables
matrialisant la
dpendance
fonctionnelle.

CLIENT ( NumCli, Nomcli, Adresseruecli, AdresseCPcli, Adressevillecli)

COMMANDE ( NumCom, datecom, # NumCli )


Si la relation comprend un attribut cl trangre, celui-ci sera plac la fin et prcd du signe #.

108

Cls trangre

Ce qui est ncessaire :


2 tables (ou requtes ou une combinaison des deux)
1 champ en commun dans chacune des tables
mme type de champ (texte avec texte, numrique avec
numrique ...)
mme longueur (pas un champ long de 15 caractres avec
un autre long de 20 caractres)
mme genre d'information (Ex.: Code d'inventaire avec des
codes d'inventaires, CNE avec CNE ...)

Cls trangres et CIR


53

Un

SGBDR doit appliquer les rgles suivantes afin


dassurer les CIR :
Ajout

: lors de lajout dune ligne contenant une valeur de cl


trangre, le SGBD vrifie que cette valeur existe aussi
comme valeur de cl primaire dans la table connexe.
Suppression : lors de la suppression dune ligne, le SGBD
vrifie quaucune cl trangre dans les tables connexes ne
possde la mme valeur que la cl primaire de la ligne
supprime.
Mise jour (ou modification) : lors de la mise jour dune
valeur de cl primaire, le SGBD vrifie quaucune cl
trangre dans les tables connexes na la mme valeur.

Cls trangres et CIR


54

Dans

le premier cas, le SGBD rejettera lajout dune


ligne contenant une valeur cl trangre inconnue.
Dans les deux derniers cas, un concepteur de BD
conserve habituellement un certain contrle sur la faon
dont lapplication rfrentielle est applique.
Lorsquune ligne contenant une cl primaire est
supprime, le concepteur peut spcifier au SGBD de
supprimer toutes les lignes des autres tables ayant des
cls correspondantes ou de rgler toutes les cls
trangres correspondantes NULL.
Un choix similaire est possible lors de la modification
dune valeur de cl primaire.

Les relations entre tables


55

Dans

une BD, certaines tables sont en relation les unes


avec les autres.
Dans les BD relationnelles, les relations entre tables sont
gnralement tablies par lintermdiaire de cls
primaires et trangres.
On rpartie les donnes dans des tables que lon relie
pour rduire la redondance des donnes.

Les relations entre tables


56

Relation

un un : une ligne dune table A est en


relation avec une seule ligne dune autre table B.
Relation un plusieurs : une ligne dune table A
peut tre en relation avec plusieurs lignes dune autre
table B.

Les relations entre tables


57

Exemples
Un

de relations entre tables :

recteur dirige une universit :


Relation de type un un.

Un

propritaire possde plusieurs voitures, une voiture


appartient un seul propritaire :

Relation de type un plusieurs.

Les relations entre tables


58

IDREC

NOM

PRENOM

Benali

Wail

Touimi

Rahma

Table Recteur

IDUNIV

NOM

VILLE

IDREC

100

Mohamed V

Rabat

200

Hassan II

Mohamdia

Table Universit

Les relations entre tables


59

IDPROP

NOM

PRENOM

Razi

Mohamed

Nafia

Mostafa

Adili

Said

Propritaire

MATRICULE

MODELE

IDPROP

1234 1

Peugeot 205

7588 48

Renault 19

25254 72

Hyundai Acc

25482 6

Toyota Cor

Voiture

Exercice
60

Considrons

la table Dpartement et les lignes montres


la suite. Expliquez si ces les lignes peuvent tre ou non
insres dans cette table.

N dpartement

NOM

LIEU

Effectif

20

Ventes

Rue FAR

10

10

Marketing

Rue Fs

10

R&D

Bd Oqba

15

15

Informatique Anfa

13

Comptabilit Agdal

23

Solution de lexercice
61

10
15

R&D

Bd Oqba

15

Informatique Anfa

13

Comptabilit Agdal

23

Non : cette ligne ne peut pas tre insre, car elle

viole le principe dunicit de la cl primaire (la valeur


10 existe dj dans la table).
Non : cette ligne ne peut pas tre insre, car elle
viole la contrainte dintgrit de la cl primaire (la
cl primaire ne peut pas tre NULL).

Oui : cette ligne peut tre insre sans problme, car


aucune contrainte nest viole.

Normalisation
62

Lors de la conception dune BD, plusieurs possibilits de


modlisation existent;
La qualit dun modle dpend de plusieurs facteurs

quantit d'information stocker


facilit d'expression des requtes
prvention d'erreur de mise jour et d'incohrences

La normalisation dune BDD implique le respect de critres de


protection de lintgrit des donnes
Plusieurs formes normales(6) existent dont

1re, 2me, 3me sont largement suffisantes

La normalisation : exemple
63

Une entreprise de vente de bateaux qui souhaite constituer un SI relatif son activit

Achats(IdClient, NomClient, PrnomClient, AdresseClient,


ImmatriculationBateau, ModleBateau, LongueurBateau,
DateAchat, MontantAchat)

Problmes potentiels

redondance de donnes :

incohrence suite une Mise jour :

une personne qui achte plusieurs bateaux

une personne qui change dadresse

anomalies lors dinsertion/suppression :

un client potentiel ne peut tre enregistr dans la BD sil na pas encore achet de
bateau
lorsquun client vend son bateau, il est supprim du systme dinformation

Comment normaliser ?
64

Dcomposition des relations jusqu ce que toutes


respectent les 3 Formes Normales suivantes :
Premire

Forme Normale

Une

relation est dite en Premire Forme Normale si tous


ses attributs sont atomiques ;

aucun des attributs ne doit tre une relation entre sousattributs


pas de colonnes dans une colonne

Dpendance Fonctionnelle
65

Dfinition

Deux groupes dattributs X et Y de la relation R sont en Dpendance


Fonctionnelle si dans R, chaque valeur de X dtermine une et une seule valeur
de Y

si je connais la valeur de X alors je connais la valeur de Y

une DF est une assertion sur toutes les extensions possibles dune relation et pas
uniquement sur ses n-uplets actuels

Exemple : ensemble de DF pour une table

Seconde Forme Normale


66

Condition
Premire Forme Normale
tous les attributs nappartenant pas la cl sont en
dpendance fonctionnelle lmentaire avec la cl

ds quun attribut non-cl dpend dune partie de la cl, la relation nest pas en 2FN.

Seconde Forme Normale


67

Exemple

Prt_livre (numcli, numlivre, nomcli, adrcli, titre_livre, dateprt)

DF

numcli nomcli, adrcli

num_livre titre_livre

numcli, numlivre dateprt

Prt_livre n est pas en 2 FN car

nomcli dpend uniquement de numcli et pas de numcli et de numlivre

dcomposition laide des DF

client (numcli, nomcli,adrcli)

Livre (numklivre, titre_livre)

prt (numcli, numlivre, dateprt)

Troisime Forme Normale


68

Seconde Forme Normale (2FN)

Aucun de ses attributs non-cls ne dpend dun autre attribut non-cl ;

il n existe pas de DF entre 2 attributs non-cls

Troisime Forme Normale


69

Exemple

ville(num_ville, nom_ville, num_dept, nom_dept)

DF

num_ville nom_ville, num_dept, nom_dept

num_dept nom_dept

ville nest pas en 3 FN car

nom_dept dpend de num_dept

dcomposition laide des DF

ville(num_ville, nom_ville, num_dept)

dept(num_dept, nom_dept)

Crer une base de donnes


Possibilit de crer avec SQL, mais pas indispensable
Base de donnes = ensemble de tables
Donner un nom la Base de donnes extension .ACCdb

Objets dune base de donnes


71

Tables,
entits/relations

Macros,
automatiser des actions excuter

Requtes,
interrogations

Formulaires,
visualisation de
tous les
attributs/Saisie
tats,
documents
publier

Objets dune base de donnes


72

Tables, Requtes

Formulaires, tats
Tables,
entits/relations
Requtes,
interrogations
Formulaires,
visualisation de
tous les attributs
tats,
documents
publier

Crer une table cration


73

Crer une table cration


74

Contrainte de cl primaire :
Une fois que la cl primaire sera dsigne et
le champ dclar sans doublons, les saisies
de valeurs identiques seront impossibles.
Choix du type :
Il sagit de prciser quel type de valeurs sera
stock dans le champ.
Il existe trois grands types (numrique,
date, texte). Pour les champs de type texte, il
est possible dintervenir sur la taille du
champ, de manire optimiser la place
occupe sur le support de stockage.
Contrle de la saisie :
Pour faciliter la saisie, un masque, une valeur
par dfaut, peuvent tre mis en place.
Contrainte de domaine :
Il est possible, pour un champ donn, de
limiter les valeurs autorises la saisie.
Celles-ci sont indiques dans la case
Valide si , un message derreur peut y tre
associ.

Lors de la cration dune table, la cl primaire et lappartenance


des donnes un type doivent tre obligatoirement dfinies.
Dautres lments peuvent tre poss pour assurer le confort et la
scurit de la saisie.

Les types dattributs


75

Les types dattributs


76
1.
2.
3.

4.
5.
6.
7.
8.

9.

Texte
max : 255 caractres
Mmo
max : 65 535 caractres
Numrique
entier, simple prcision, nombre dcimale, etc.
Date/Heure
anne 1009999, 12 ou 24 h
Montaire
nombres rels de 1 4 dcimales
NumroAuto
incrmentation automatique
Oui/Non
Vrai/Faux , Actif/inactif
Objet OLE (Object Linking and Embedding)
feuilles de calcul, sons, vidos, graphiques
Lien Hypertexte
chemin complet (local ou internet)

Les masques de saisie


77

Les masques de saisie


78

Les masques de saisie


79

Symbole

Signification

Chiffre de 0 9 obligatoire

Chiffre ou espace facultatif

Chiffre ou espace ou + ou -

Lettre de A Z obligatoire

Lettre de A Z non obligatoire

Lettre ou chiffre obligatoire

Lettre ou chiffre non obligatoire

&

Caractre quelconque obligatoire

Caractre quelconque non obligatoire

<

Passe tout en minuscules (bas de casse)

>

Passe tout en majuscules (haut de casse)

Saisie partir de la droite

Les masques de saisie


masque

sens

exemples

00 00 00 00 00

Numro de tlphone

06 12 34 56 78

00 999

Deux chiffres obligatoires

>CCCCCCCCCCCCCCC
CCCCC
>C<CCCCCCCCCCCCC
CCCCCC

Nom de maximum 20 caractres,


converti en capitales

ALI SAID ou BORD

Prnom de maximum 20
caractres, 1re lettre capitale,
lettres suivantes bas de casse

Ali ou Said

0 00 00 00 0000

Code sur prcisment 11 chiffres

1 53 06 07 0557

00/00/0099

Date avec anne possible sur 2


ou 4 chiffres

07/06/1953 ou 22/02/53

(000) 000-0000

Tlphone avec indice rgional


obligatoire

75 123 ou 59

(207)555-0199 ou
(165)345-2025

Les masques de saisie


masque

sens

exemples

(999) 000-0000!

Tlphone avec indice rgional


facultatif remplissage par la
droite

(207)555-0199 ou ()3452025

(000) AAA-AAAA

Tlphone amricain (derniers


chiffres peuvent tre des lettres)

#999

Nombre positif ou ngatif, compos de quatre


caractres ou moins, sans sparateur de
milliers ni sparateur dcimal.

>L????L?000L0

Combinaison de lettres obligatoires (L), lettres


facultatives (?) et nombres obligatoires (0). Le
signe > oblige les utilisateurs entrer
toutes les lettres en capitales.

(000) 000-0000

Tlphone avec indice rgional


obligatoire

(206) 555-TELE
2345 ou -20
GREENGR339M3 ou
MAY R462B7

(207)555-0199 ou
(165)345-2025

Les listes droulantes


82

Monsieur, M., Mr, Dr, Me, Madame, Mme, Mlle,

Les listes droulantes


83

Dans la table, crer le champ Titre


Cliquer sur Assistant Liste de choix
Slectionner "Je taperai
les valeurs souhaites"

Dresser la liste dans


Contenu

GVdK = CUY

Relation entre tables


84

Les filtres
85

Les filtres permettent de limiter simplement, de faon temporaire,


les enregistrements affichs dans une table.

On peut filtrer selon deux mthodes :


- le filtre sur un seul critre :
ex : les tudiants qui habitent Knitra;
- le filtre sur plusieurs critres :
ex : les tudiants qui habitent Knitra ou ceux qui
sappellent Mohamed .

Normalisation: Inconvnients
86

Les inconvnients de la normalisation sont :


des

temps d'accs potentiellement plus longs si les


requtes sont trop complexes (lectures plus lente)
une plus grande fragilit des donnes tant donn la
non redondance (lecture impossible)
un manque de flexibilit au niveau de l'utilisation de
l'espace disque

Algbre relationnelle
87

Dfinition:
Collection doprations formelles qui agissent sur des
relations et produisent une relation en rsultat.
Dans la plupart des systmes relationnels, la rponse une
requte sobtient par lutilisation dun ou plusieurs
oprateurs relationnels.

Deux types doprateurs:

Oprateurs unaires :

Slection, Projection, Complment

Oprateurs binaires :

Union, Intersection, Diffrence, Produits, Jointures,

Algbre relationnelle
88

Motivation : Formuler des requtes pour interroger des donnes


Quest-ce quune requte ?

Soit Filtrer :

une expression dans une algbre dite algbre relationnelle, i.e., des
oprations sur des tables
Slection (filtre / critres)
Projection (choix de colonnes)
Diffrence (suppression de lignes)

Soit Combiner :

Produit cartsien (toutes les possibilits)


Jointure (complment d'information)
Union (union d'ensembles de lignes)

Oprateurs relationnels unaires


89

Projection

Seule une partie des attributs est considre


Slection

Seule une partie des tuples est considre


Complment

(not R)

Tous les tuples possibles nexistant pas dans


une relation sont construits

Projection
90

La projection dune relation R sur un ensemble


dattributs (A1,, Ak) se note : R
A1,...,Ak

Slection
91

La slection sur une relation R selon une condition C


se note: C (R)

Slection
92

Oprateurs de comparaison :
, <, >,, , BETWEEN (entre), IN (dans),
LIKE(comme)

=,

Combinaison de plusieurs conditions relies par des


oprateurs logiques :
and,

or, not

Valeurs NULL

Oprateurs relationnels binaires


93

Union
La fusion de deux relations est considre

Diffrence
Les tuples dune relation qui nexistent pas dans une seconde relation sont considrs

Produit cartsien
Toutes les combinaisons entre tuples de 2 relations sont considres

Intersection (note R R' )


Seuls les tuples prsents dans 2 relations sont considrs

Thta-produit (not R C R' )


Produit cartsien suivi dune slection (Appel galement jointure)

Union
94

Lunion de deux relations R et R se note : R R'

Diffrence
95

La diffrence de deux relations R et R se note : R R'

Produit cartsien
96

Le produit cartsien de deux relations R et R se note :

R R'

jointures
97

Jointure naturelle
Thta-produit dont la condition est une galit de valeurs entre des
attributs de deux relations

Jointure extrieure
Jointure naturelle laquelle on ajoute les tuples de chaque relation
nayant pas trouv de correspondance dans lautre

Semi-jointure
Jointure naturelle laquelle on ajoute les tuples de la premire
relation nayant pas trouv de correspondance dans lautre

La jointure naturelle est loprateur le plus utilis avec les


slections et projections, car le plus intressant

Jointure naturelle
98

La jointure naturelle de deux relations R et R selon une


condition C se note :

R C R'

Combinaison doprateurs
99

La puissance de l'algbre relationnelle s'exprime


dans la combinaison doprateurs permettant
d'exprimer des requtes prcises.
Ex: on chercher limmatriculation des vhicules possds par la personne
dont le nom est Ali

(
immatriculation

(vehicule nom"Ali " ( proprietaire)))

proprietairenumero

Exercice Algbre relationnelle


100

Nom_imb

Table Immeuble
Adresse
Nb
tage

Ann
e

Nomgrant

Table Personne
Nom
Ag Profession
e
Alami

54

Architecte

Atif

39

Mdecin

Barhou
m

58

Avocat

Dahbi

65

Retrait

Nom_imb

No_app

Nom_occ

Anne_h

Annakhil

22 Rue Azrou,
Rabat

10

2009

Alami

Firdaous

15 bd des Far, Fs

2000

Dahbi

Nom_imb

No_app

Superficie

Etag
e

Annakhil

150

Annakhil

100

Annakhil

Alami

2009

Annakhil

10

90

Annakhil

Dahbi

2009

Firdaous

120

Firdaous

Atif

2001

Firdaous

10

100

Firdaous

10

Barhoum

2005

Firdaous

11

80

Table Appartement

Table Occupant

Exercice
101

Soit la base de donnes simplifie. Exprimer la


signification et le rsultat des requtes suivantes:
1- La requte: Personne

2- nom-Imb(Immeuble);

3- nom-Imb, No_app(superficie>100(Appartement));

4- nom-occ(Nom_imb= Firdaous ET Anne>2001)(Occupant);

5- nom-Imb, No_app(No_app=Etage (Appartement));

6-nomgrant, Superficie

7-nom-occ, Anne,Superficie ( Appartement


Nom_ imb Nom_ imb No _ app No _ appOccupant )

n o m,Age

(Im meuble

Nom_ imb Nom_ imb

Appartement )

Exercice
102

Ecrire en algbre relationnelle les requtes:

1- Nom des immeubles ayant strictement plus de 10 tages.

2. Nom des personnes ayant emmnag avant 1994. 3. Qui habite le Annakhil?

4. Nom des Architectes de plus de 25 ans.

5. Nom des immeubles ayant un appartement de plus de 150 m2.

6. Qui gre lappartement o habite Atif?

7. Dans quel immeuble habite un retrait?

8. Qui habite un appartement de moins de 70 m2?

9. Nom des personnes qui habitent au dernier tage de leur immeuble.

10. Profession du grant du Firdaous?

11. Age et profession des occupants de limmeuble gr par Alami?

12. Qui habite, dans un immeuble de plus de 10 tages, un appartement de plus de


100 m2?

103

CHAPITRE 3 :
INTRODUCTION SQL

Sommaire du chapitre 3
104

Prsentation

du langage SQL;
Types de donnes;
Requtes daction;
Requtes de slection;
Requtes de contrle.

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Prsentation du langage SQL


105

Le sigle SQL signifie "Structured Query Language", soit en franais


"Langage de requtes structur".

Il a t dvelopp par IBM au cours des annes 70 et son


nom tait SEQUEL, abrviation de Structured English
QUEry Language

SQL : langage proche de lutilisateur et de sa faon de poser les requtes


(formulation proche du langage naturel)

SQL : langage assertionnel (non procdural), facile apprendre pour


rdiger les requtes, les lire et les comprendre.
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Prsentation du langage SQL


106

SQL a t normalis par l'ANSI (American National Standards


Institute) et par l'ISO (International Organization for
Standardization).

Cette normalisation a donn naissance une 1re version


(SQL1) en 1987 puis une 2me version (SQL2) en 1992

Une troisime norme (SQL3) est sortie en 2003 par l'ANSI et l'ISO.

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Prsentation du langage SQL


107

Malgr la normalisation ISO, il existe plusieurs variantes de SQL

sur le march car chaque diteur de SGBDR tente dtendre le


standard pour accrotre lattrait commercial de son produit

Chaque requte SQL doit obligatoirement se terminer par un


Point Virgule (SGBD ACCESS)

On distingue 3 types de requtes: Actions (Cration et m..j),


Slections (Interrogation) et Contrle (dfinir des permissions
pour les utilisateurs).
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Prsentation du langage SQL


108

Utilisation de SQL :
En

mode interactif : lutilisateur crit textuellement une


commande SQL et rcupre le rsultat immdiatement.
En mode intgr : une commande SQL est mlange avec
les instructions dun programme en langage de haut niveau
tel que C, C++, Visual basic, Pascal...

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Types de donnes
109

INTEGER ou INT : entiers signs.


TEXT(p) ou CHAR(p) : chane de caractres de longueur fixe de p caractres.
VARCHAR (p): chane de caractres de longueur variable de p caractres
maximum.
DATE, TIME, DATETIME: dates et/ou heures.

LOGICAL : valeur logique oui ou non .


DECIMAL(p, q) : nombres dcimaux de p chiffres dont q aprs le point dcimal
(par dfaut, q = 0).
FLOAT : nombre rel en virgule flottante(il y a aussi Single pour simple et
Double pour rel double).
CURRENCY, MONEY : Montaire.

COUNTER : Compteur (NumroAuto).

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Types de donnes
110

Quelques proprits des attributs en SQL :


PRIMARY KEY : cl primaire.
FOREIGN KEY : cl trangre.
NULL / NOT NULL : valeurs non obligatoires/obligatoires.
DEFAULT = Valeur : pour dfinir une valeur par dfaut (ne
fonctionne pas sous Access).
CHECK (Condition): pour contrler la validit des valeurs (ne
fonctionne pas sous Access).
UNIQUE : permet de vrifier que la valeur saisie pour un champ
n'existe pas dj dans la table.
CONSTRAINT : permet de donner un nom une contrainte ce qui
permet de la manipuler (Exemple effacement).
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Conventions
111

Les conventions relatives aux noms des tables et des champs varient
quelque peu d'un SGBD l'autre:

Le nombre de caractres ne doit pas tre trop grand (64 dans Access,
18 30 dans d'autres SGBD) ;

Seuls les lettres, les chiffres et le caractre de soulignement sont


autoriss.

Access admet les caractres accentus. Il admet aussi l'espace, mais le


nom du champ doit tre crit entre crochets ;

Certains SGBD requirent que le nom d'un champ commence par une
lettre, mais ce n'est pas le cas d'Access ;

Les termes faisant partie du vocabulaire du langage SQL sont interdits


("date par exemple). Ce sont les mots rservs.
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Requtes daction
112

Requtes dactions: Sont des requtes qui permettent de


crer des tables, dajouter, de supprimer des
enregistrements dune table, dajouter une colonne
Cration dune table : Cette opration donne comme
rsultat une table vide ne contenant aucun enregistrement.
Il

faut prciser :

Le

nom de la table;
La description de ses colonnes : nom, type de donnes et contraintes.
Linstruction

CREATE TABLE permet de crer une


nouvelle table.
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Cration de table
113

Syntaxe SQL pour crer une nouvelle table avec une


cl primaire :
CREATE TABLE Nom_table (champ1 type [CONSTRAINT
nom_contrainte] PRIMARY KEY, champ2 type [NOT NULL],
, champN type [NOT NULL]);
Syntaxe SQL pour crer une nouvelle table avec une cl
primaire compose :

CREATE TABLE Nom_table (champ1 type [NOT NULL],

champ2 type [NOT NULL], , champN type, [CONSTRAINT


nom_contrainte] PRIMARY KEY (champ1, champ2,) );
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Cration de table: Exemples


114

CREATE TABLE Client (email VARCHAR (50) NOT NULL, nom


VARCHAR (20) NOT NULL, prenom VARCHAR (20), motDePasse
VARCHAR (60) NOT NULL, anneeNaiss DECIMAL (4))
CREATE TABLE Cinma (nom VARCHAR (50) NOT NULL, adresse
VARCHAR (50) DEFAULT Inconnue)
CREATE TABLE ETUDIANT(ID INTEGER CONSTRAINT
Contrainte_ID PRIMARY KEY, NOM TEXT(15), PRENOM
TEXT(15), AGE INTEGER CONSTRAINT Contrainte_AGE
CHECK(age< 35), BOURSIER LOGICAL);

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Cration de table: Exemples


115

Donnez une requte SQL permettant de crer la table


EMPLOYES ( Nemploy: entier, Nom: texte(25), Prnom:
texte(20), Fonction: texte(15), Adresse: texte(50), Codeville:
entier long)

CREATE TABLE EMPLOYES ( Nemploy INTEGER


CONSTRAINT nom_index PRIMARY KEY, Nom TEXT(25),
Prnom TEXT(20), Fonction TEXT(15), Adresse TEXT(50),
Codeville LONG ) ;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Cration dune table


116

Crez une requte SQL permettant de crer la table


DETAILS ( Ncommande: entier, Rf: texte(30), Pu:
montaire non nul, Quantit: entier non nul, Remise: rel
simple );

CREATE TABLE DETAILS ( Ncommande Integer, Rf


Char(30), Pu Currency NOT NULL, Quantit Integer NOT
NULL, Remise Single, CONSTRAINT nom_index PRIMARY
KEY ( Ncommande, Rf ) ) ;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Cration dune table: Cl trangre


117

Crez une requte SQL permettant de crer la table


Participe( Numadh: entier, Numact: entier, AnneeParticipe:
entier);

Numadh est la cl primaire de la table Adherent et Numact


est la cl primaire de la table Activite.

CREATE TABLE Participe( Numadh integer, Numact


integer, anneeParticipe integer, Primary key (Numadh,
Numact, AnneeParticipe),

Foreign key (Numadh) references Adherent(Numadh),

Foreign Key (Numact) references Activite(Numact));


ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dans une table


118

Linstruction ALTER TABLE permet


dajouter ou de supprimer un seul champ
une table.
Elle permet aussi la cration et la suppression
des liens entre les tables dune base de
donnes.

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dans une table


119

Modification de la structure dune table :


Il

y a trois types dactions concernant la modification de


structure dune table :
Ajouter

une ou plusieurs colonnes.


Supprimer une ou plusieurs colonnes.
Modifier les proprits dune ou de plusieurs colonnes.
Les

commandes SQL relatives ces actions :

ADD
DROP
MODIFY

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dans une table


120

Modification de la structure dune table :


Pour

modifier la structure dune table, on prcise tout


dabord le nom de celle-ci en crivant la commande
suivante :
ALTER

TABLE Nom_table

En

suite, on spcifie la nature de laction de modification


(ajout, suppression ou modification).
Pour cela, il faut utiliser lune des trois commandes : ADD,
DROP ou MODIFY.

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dans une table


121

Exemples dajout :
Ajouter une colonne AGE (entier) dans la table CLIENT :
ALTER TABLE CLIENT
ADD AGE INTEGER;
Ou
ALTER TABLE CLIENT
ADD Column AGE INTEGER;
Ajouter une colonne DATECOMPTE (date) dans la table
COMPTE :
ALTER TABLE COMPTE
ADD DATECOMPTE DATE;
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dans une table


122

Exemples de suppression :
Supprimer la colonne ADRAGENCE de la table AGENCE :
ALTER TABLE CLIENT
DROP ADRAGENCE;

Supprimer la colonne DATECOMPTE de la table COMPTE :


ALTER TABLE COMPTE
DROP DATECOMPTE;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dans une table


123

Exemples de modification de proprits :


Modifier

le type de la colonne ADRAGENCE pour quil


soit un CHAR(100) au lieu de CHAR(40) :
ALTER TABLE AGENCE
MODIFY ADRAGENCE CHAR(100);

Modifier

la colonne AGE de la table CLIENT pour


quelle soit obligatoire :
ALTER TABLE CLEINT
MODIFY AGE NOT NULL;
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dans une table


124

Crez une requte SQL permettant de crer la table


VILLES ( Codeville: NumroAuto, Ville: texte(20))

CREATE TABLE VILLES ( Codeville Counter


CONSTRAINT nom_index PRIMARY KEY, Ville
Text(20) ) ;

Modifiez la table EMPLOYES en dclarant le champ


"CodeVille" comme cl trangre, puis crez un lien
nomm lien_ville sur le champ CodeVille, en prcisant
que le ct 1 du lien est le champ CodeVille de la table
VILLES
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dans une table


125

ALTER TABLE EMPLOYES ADD


CONSTRAINT Lien_ville FOREIGN KEY
(CodeVille) REFERENCES VILLES (CodeVille);

Supprimer le lien nomm lien_ville existant entre la


table EMPLOYES et la table VILLES selon le
champ Codeville

ALTER TABLE EMPLOYES DROP CONSTRAINT Lien_ville;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Suppression dune table


126

Suppression dune table :


La

syntaxe SQL pour supprimer une table est trs simple :

DROP

TABLE Nom_table

Exemples

DROP

TABLE CLIENT
DROP TABLE AGENCE
DROP TABLE COMPTE

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Suppression dune table


127

La clause CASCADE CONSTRAINS pour supprimer


toutes les contraintes dintgrits rfrentielles qui
rfrent la relation supprime.
Exemple :
DROP TABLE COMPTE CASCADE CONSTRAINS ;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Insertion denregistrements
128

Insertion denregistrements dans une table :


La

commande qui permet dinsrer une ligne dans une


table est la suivante :

INSERT INTO Nom_table [(champ1, champ2, )]


VALUES (valeur1, valeur2, ) ;
Dans

la clause INTO, on spcifie le nom de la table


ainsi que les noms des colonnes.
Si lon veut ajouter une ligne contenant les valeurs pour
tous les champs, dans ce cas on peut omettre les noms de
colonnes.
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Insertion denregistrements
129

Exemple:

Crez une requte permettant dajouter lenregistrement suivant dans la


table EMPLOYES: (100, BEN AZOUZ, Aziz, Ingnieur, 90050)

La table EMPLOYES ( Nemploy , Nom, Prnom, Fonction, Adresse,


Codeville)

INSERT INTO EMPLOYES (Nemploy, Nom, Prnom, Fonction, Codeville)

VALUES (100, "BEN AZOUZ", "Aziz", "Ingnieur", 90050) ;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dun enregistrement


130

Linstruction

UPDATE permet la mise jour dune table;

On

modifie la valeur dun champ dun enregistrement qui


vrifie une condition prcise (critre pour accder la ligne qui
sera le sujet de la modification);

Syntaxe

:
UPDATE table SET nouvelles valeurs WHERE critres

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dun enregistrement


131

Les champs mettre jour doivent tre crits dans la


clause SET, lun aprs lautre (avec leurs valeurs) et
spars par des virgules.
Les champs non spcifis aprs la clause SET ne seront
pas modifis.
Si la clause WHERE est absente, tous les
enregistrements de la table seront affectes.

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Modification dun enregistrement


132

Exemples :

Donner une requte SQL pour modifier ladresse de l'employ numro 10


par la nouvelle adresse sera "10 Avenue Mohamed VI, Rabat".

UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI,


Rabat" WHERE Nemploy = 10 ;

Donner une requte SQL pour augmenter de 5% le salaire de tous les


acteurs : ACTEURS (N_act, Nom, Prnom, Nationalit, Salaire, Age,
Films)

UPDATE ACTEURS SET Salaire = Salaire * 1.05 ;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Suppression denregistrements
133

Linstruction DELETE permet deffacer des


enregistrements dune table.
La syntaxe de la commande est :
DELETE * FROM Nom_table WHERE Condition;

Pour supprimer tous les enregistrements dune table, il


suffit de ne pas indiquer la clause WHERE.

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Suppression denregistrement
134

Exemples :
Effacez

tous les enregistrements de la table ACTEURS;


DELETE * FROM ACTEURS ;

Ou
DELETE

N_act FROM ACTEURS ;


Effacez tous les acteurs de nationalit marocaine;
DELETE * FROM ACTEURS WHERE
Nationalit= "marocaine";

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


135

Une requte de type SELECTION permet d'interroger une base de donnes en


composant les projections, les restrictions, les jointures.
Le rsultat dune telle requte est renvoy sous forme dune table forme dun ou
plusieurs attributs.
Sa syntaxe est :

SELECT [Prdicat]

{* / table.* /[table.attribut1 As alias1], [table.attribut2 As alias2], }

FROM Liste de table

[WHERE Critre de slection]

[GROUP BY Liste dattributs]

[HAVING Critre de slection]

[ORDER BY Critre dordre]


ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


136

Interprtation:
Projection : SELECT FROM
Restriction ou Jointure : WHERE
Tri : ORDER BY ASC / DESC
[ ] signale une clause optionnelle, c..d on peut utiliser la requte SELECT sans
cette clause
Prdicat: Lun des prdicats suivants: ALL, DISTINCT, DISTINCTROW, TOP ou
PERCENT.

Les prdicats permettent de limiter le nombre denregistrements


renvoys. ALL est choisi par dfaut

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


137

* : Indique que tous les champs des tables spcifies


seront slectionns

Table: Nom des tables spares par des virgules.

attribut1, attribut2: Noms des champs extraire.

alias1, alias2: Utiliss pour renommer un attribut.

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


138

Exemples
Soit la table ACTEURS :
ACTEURS (N_act, Nom, Prnom, Nationalit, Salaire, Age, Films)
Donner une requte SQL pour afficher tous les champs et tous les enregistrements
de la table ACTEURS
SELECT * FROM ACTEURS;

Requte SQL pour afficher uniquement le Nom, Prnom et le salaire de chaque


Acteur
SELECT Nom, Prnom, Salaire FROM ACTEURS;
Afficher les diffrentes nationalits sans doublons mme si plusieurs acteurs
ont la mme nationalit
SELECT DISTINCT Nationalit FROM ACTEURS;
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


139

Requte SQL afficher les 5 premiers acteurs de la table ACTEURS


SELECT TOP 5 * FROM ACTEURS;
Requte SQL afficher 30% des acteurs de la table ACTEURS

SELECT TOP 30 PERCENT * FROM ACTEURS;

Avec linstruction SELECT, il est possible dutiliser les fonctions


suivantes pour effectuer des calculs:
SUM ()

renvoie la somme dun champ

AVG ()

renvoie la moyenne dun champ

MAX ()

renvoie la valeur maximale dun champ

MIN ()

renvoie la valeur minimale dun champ

COUNT (*)

renvoie le nombre denregistrements de la table


ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


140

Afficher le nombre totale denregistrements de la table ACTEURS


SELECT COUNT(*) FROM ACTEURS;
Afficher le nombre totale denregistrements de la table ACTEURS et nommer

le champ retourn Nombre total


SELECT COUNT(*) As [Nombre Total] FROM ACTEURS;
Afficher le nombre denregistrements de la table ACTEURS qui ont une entre dans
le champ Nom. Nommer le champ retourn Nombre dentre
SELECT COUNT(Nom) As [Nombre dentre] FROM ACTEURS;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


141

Afficher le total des salaires de la table ACTEURS et nommer le champ


retourn Total des salaires
SELECT SUM(Salaire) As [Total des salaires] FROM ACTEURS;

Afficher la moyenne des salaires de la table ACTEURS et nommer


le champ retourn Moyenne des salaires

SELECT AVG(Salaire) As [Moyenne des salaires] FROM ACTEURS;


Afficher le salaire le plus lev de la table ACTEURS et nommer le champ retourn
Salaire maximal
SELECT MAX(Salaire) As [Salaire maximal] FROM ACTEURS;
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


142

Les lments de la clause WHERE


Ils permettent de dfinir la condition dans cette clause. La clause peut
tre accompagne des oprateurs logiques AND, OR ou NOT
Comparaison une valeur (=, <, >, >=, <=, <>)
Comparaison une fourchette de valeurs (BETWEEN AND)
Comparaison une liste de valeur ( IN (. , . ,...) )
Comparaison un filtre (LIKE)
Test "tous" ou "au moins" (ALL, ANY/SOME)
Test existentiel (EXISTS)
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


143

Les oprateurs de comparaison :


On

peut utiliser les oprateurs suivants dans les


conditions dune requte :
=

: gal
<> : diffrent
< : infrieur strict
> : suprieur strict
<= : infrieur ou gal
>= : suprieur ou gal
Comment

crire les valeurs constantes :

Numriques

: 125, -654, -7.54, etc.


Chanes de caractres et dates : entre ' .

Les requtes de slection


144

Les oprateurs logiques :


Ils

permettent de construire des conditions plus


complexes.
Les oprateurs logiques de SQL sont :
AND

(ET) : conjonction.
OR (OU) : disjonction
NOT (NON) : ngation
L'oprateur

AND runit deux ou plusieurs conditions et


slectionne un enregistrement seulement si cet
enregistrement satisfait toutes les conditions listes.
L'oprateur OR runit deux conditions, mais slectionne
un enregistrement si une des conditions listes est
satisfaite.

Les requtes de slection


145

Afficher tous les noms dacteurs dont lge est suprieur ou gal 25
SELECT Nom FROM ACTEURS WHERE Age >=25;

Afficher tous les noms dacteurs dont la nationalit est amricaine et lge est
suprieur 25
SELECT Nom FROM ACTEURS WHERE (Nationalit="amricaine") AND (Age > 25);

Afficher tous les noms dacteurs dont la nationalit est amricaine ou lge est
suprieur 25
SELECT Nom FROM ACTEURS WHERE (Nationalit="amricaine") OR (Age >25);

Afficher les acteurs dont lge est entre 35 et 50


SELECT * FROM ACTEURS WHERE Age BETWEEN 35 AND 50;
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


146

Afficher tous les acteurs dont la nationalit est amricaine, marocaine ou gyptienne
SELECT * FROM ACTEURS WHERE Nationalit IN ("Amricaine", "Egyptienne",
"marocaine");

Afficher tous les noms dacteurs qui commencent par "D"


SELECT Nom FROM ACTEURS WHERE Nom LIKE "D*";

Afficher tous les noms dacteur ne commenant pas par D et ayant 4 lettres
SELECT Nom FROM ACTEURS WHERE Nom NOT LIKE "D*" AND Nom
LIKE "????";

Afficher le nom dacteur le plus g


SELECT Nom FROM ACTEURS WHERE Age >= ALL (SELECT Age FROM
ACTEURS );
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


147

Afficher le nom dacteur le plus jeune


SELECT Nom FROM ACTEURS WHERE Age <= ALL (SELECT Age FROM ACTEURS);

Exemple 2
Soit les tables PRODUITS, COMMANDES, DETAILS et EMPLOYES cres sous
ACCESS:
PRODUITS (Rf , Nompr, Nfournisseur, Pu)
COMMANDES(Ncommande, Codecli, Nemploy, Date commande)
DETAILS(Ncommande, Rf , Quantit, Remise)

EMPLOYES(Nemploy, Nom, Prnom, Fonction, Adresse, Ville)


ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


148

Les jointures
Jointure interne: utilise INNER JOIN. Ne sont incluses dans le rsultat
final que les lignes qui se correspondent dans les deux tables.
la jointure externe gauche, dans laquelle INNER JOIN est remplac
par LEFT JOIN. Toutes les lignes de la premire table sont incluses dans
le rsultat de la requte, mme s'il n'existe pas de ligne correspondante
dans la seconde table ;
la jointure externe droite, dans laquelle INNER JOIN est remplac par
RIGHT JOIN. Toutes les lignes de la seconde table sont incluses dans le
rsultat de la requte, mme s'il n'existe pas de ligne correspondante
dans la premire table.
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


149

Les lments de la clause FROM


Afficher tous les produits (Rf, Nompr) qui ont t vendus

SELECT PRODUITS.Rf, Nompr FROM PRODUITS INNER JOIN DETAILS


ON PRODUITS.Rf = DETAILS.Rf ;

(Ou bien )

SELECT PRODUITS.Rf, Nompr FROM PRODUITS, DETAILS


WHERE PRODUITS.Rf = DETAILS.Rf ;
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


150

Afficher tous les produits (Rf, Nompr) qui ont t vendus par ordre dcroissant
selon le champ Rf
SELECT PRODUITS. Rf, Nompr
FROM PRODUITS , DETAILS

WHERE PRODUITS. Rf = DETAILS . Rf


ORDER BY PRODUITS.Rf DESC;

Par dfaut, le rsultat dune requte slection est tri selon lordre

croissant du premier attribut qui figure dans la clause SELECT


ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


151

En utilisant la table dtails, afficher pour chaque commande le total de quantits des
produits vendus
SELECT Ncommande, SUM(Quantit) AS [Totale quantits vendues]
FROM DETAILS
GROUP BY Ncommande ;
Afficher pour chaque commande le total de quantits des produits vendus et tel que ce
total est > 60
SELECT Ncommande, SUM(Quantit) AS [Totale quantits vendues]
FROM DETAILS
GROUP BY Ncommande

HAVING SUM(Quantit) > 60 ;


ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


152

Afficher les commandes qui contiennent plus que 3 produits (>=3)


SELECT Ncommande, COUNT(Rf) AS [Nombre de produits]
FROM DETAILS
GROUP BY Ncommande
HAVING COUNT(Rf) >=3 ;

Afficher pour chaque commande le total de quantits des produits vendus avec une
remise de 6% et tel que ce totale est > 60
SELECT Ncommande, SUM(Quantit) AS [Totale quantits vendues]
FROM DETAILS
WHERE Remise=0.06
GROUP BY Ncommande
HAVING SUM(Quantit) > 60 ;
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Les requtes de slection


153

Afficher les employs qui ont vendu plus de 100 commandes


SELECT Nemploy, COUNT(Ncommande) AS [Nombre de commandes vendues]
FROM COMMANDES
GROUP BY Nemploy
HAVING COUNT(Ncommande) > 100 ;

Afficher les employs de la ville dAsilah qui ont vendu plus de 100 commandes
SELECT EMPLOYES.Nemploy, COUNT(*) AS [Nombre de commandes vendues]
FROM COMMANDES, EMPLOYES
WHERE EMPLOYES.Nemploy=COMMANDES.Nemploy AND Ville ="Asilah"
GROUP BY EMPLOYES.Nemploy

HAVING COUNT(*) > 100 ;


ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Exercice Algbre relationnelle


154

Nom_imb

Adresse

Nb tage

Anne

#Nomgrant

Nom

Age

Profession

Annakhil

22 Rue Azrou, Rabat

10

2009

Alami

Alami

54

Architecte

Firdaous

15 bd des Far, Fs

2000

Dahbi

Atif

39

Mdecin

Barhoum

58

Avocat

Dahbi

65

Retrait

Table Immeuble

Table Personne
#Nom_imb

No_app

Superficie

Etage

Annakhil

60

#Nom_imb

#No_app

#Nom_occ

Anne_h

Annakhil

100

Annakhil

Alami

2009

Annakhil

10

90

Firdaous

120

Annakhil

Dahbi

2009

Firdaous

10

100

Firdaous

Atif

2001

Firdaous

11

80

Firdaous

10

Barhoum

2005

Table Appartement
ENCG Knitra**Gestion des bases de donnes

Table Occupant
18-dc.-15

Exercice
155

Ecrire en langage SQL les requtes:

1. Afficher les noms des immeubles;

Select Nom_imb from immeuble;

2. Nom des immeubles ayant strictement plus de 10 tages.

Select Nom-imb from immeuble where nb_tage>10;

3. Nom des personnes ayant emmnag avant 1994.

Select Nom_occ from Occupant where Anne_h<1994;

4. Qui habite Annakhil?

Select Nom_occ from Occupant Where Nom_imb= Annakhil;

5. Nom des Architectes de plus de 25 ans.

Select Nom, age From Personne Where Profession=Architecte And Age>25;

6. Nom des immeubles ayant un appartement de plus de 150 m2.

Select distinct Nom_imb from Appartement where Superficie>150;

ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Exercice
156

7. Qui gre lappartement o habite Atif?

Select Nomgrant from Immeuble Inner Join Occupant On Immeuble.Nom_imb=Occupant.Nom_imb


where nom_occ=Atif;

8. Dans quel immeuble habite un retrait?

Select Nom_imb from Personne, Occupant where Personne.Nom=Occupant.nom_occ and


profession=Retrait;

9. Qui habite un appartement de moins de 70 m2?

Select Nom_occ from Appartement, Occupant where Appartement.Nom_imb=Occupant.Nom_imb and


Appartement.No_app=Occupant.No_app and superficie<70;

10. Noms des personnes qui habitent au dernier tage de leur immeuble

Select Nom_occ from occupant, appartement , immeuble where


occupant.Nom_imb=Appartement.Nom_imb AND Occupant.No_app=Appartement.No_app and AND
Immeuble.Nom_imb=Appartement.Nom_Imb AND Etage=Nb_etage ;

11. Profession du grant du Firdaous?

Select Profession from Personne INNER JOIN Immeuble ON Nomgrant=Nom WHERE


Nom_imb=firdaouss;
ENCG Knitra**Gestion des bases de donnes

18-dc.-15

Exercice
157

12. Age et profession des occupants de limmeuble gr par Alami?

SELECT Age, Profession FROM Personne, Occupant, Immeuble WHERE


Personne.Nom=Occupant.Nom_occ and Occupant.Nom_imb=Immeuble.nom_imb and
Nomgrant=Alami;

13. Qui habite dans un immeuble de plus de 10 tages et un appartement de plus de 100 m 2?

SELECT Nom_occ from Occupant, Immeuble, Appartement WHERE


Occupant.Nom_imb=Appartement.Nom_imb AND Occupant.No_app=Appartement.No_app AND
Immeuble.Nom_imb=Appartement.Nom_imb AND Nb_tage>10 AND Superficie=100;

14. Afficher la superficie totale de chaque Immeuble;

SELECT SUM(Superfice) FROM Appartement GROUP BY Nom_imb;

15. Afficher le nombre dappartement par tage pour chaque immeuble;

SELECT Nom_imb, Etage, COUNT(*) AS [nombre dappartement] FROM Appartement GROUP BY


Nom_imb, Etage;

16. Le prix de location par mois et par mtre carr est de 40DH. Afficher la recette par mois;

Select SUM(Superficie*40) from Appartement, Occupant Where Appartement.Nom_imb=


Occupant.Nom_imb And Appartement.No_app=Occupant.No_app;
ENCG Knitra**Gestion des bases de donnes

18/12/2015

Vous aimerez peut-être aussi