Vous êtes sur la page 1sur 85

Cours dInformatique

Bases de donnes
1 anne

Antoine Cornujols
www.lri.fr/~antoine
antoine.cornuejols@agroparistech.fr

http://www.lri.fr/~antoine/Courses/AGRO/TC/Cours-1A-BD-(v3)x2.pdf

Partie 1 - Place de linformatique


Partie 2 - Les bases de donnes
Partie 3 - Bases sur les BD
Partie 4 - Conception des BD

Partie 5 - Manipulation : SQL


Partie 6 - PHP / MySQL

1. Linformatique, cest quoi finalement ?

Informatique - Bases de donnes ! A. Cornujols 2011

2 /170

1. Linformatique

Que serait le monde sans linformatique ?

Informatique - Bases de donnes ! A. Cornujols 2011

/170

/170

1. Linformatique
Transports
Avions
Voitures (des ordinateurs sur roues)

Communications
Rseaux (communications par paquets)
Satellites

Modes de pense
Calculs complexes / Simulations
Connaissances toujours porte de clics
Modification de la mmoire et de la cognition
Informatique - Bases de donnes ! A. Cornujols 2011

1. Linformatique

1- Science du calcul et de son automatisation


Machine
Algorithmes

2- Science du codage de linformation


Numrisation
Indpendance du support matriel

Informatique - Bases de donnes ! A. Cornujols 2011

/170

/170

1. Questions qui occupent les informaticiens


Comment organiser un calcul
2
!

xi yj

i,j=1
2
!

xi yj = x1 y1 + x1 y2 + x2 y1 + x2 y2

i,j=1

4 produits + 3 sommes
2
!

xi yj = (x1 + x2 ) (y1 + y2 )

i,j=1

2 sommes + 1 produit
Informatique - Bases de donnes ! A. Cornujols 2011

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

/170

/170

1. Questions qui occupent les informaticiens


Tris nafs

Slection : chercher
llment le + petit et
lchanger avec le 1er
lment du tableau, puis
rpter sur le tableau - le 1er
lment

Tri par insertion


Tri par slection
Complexit en O(n2)

Insertion : comme on
range des cartes

n = 106 => O(1012) oprations

Tris rflchis
Quicksort : on prend un
pivot et on range tous les
lments < avant et >=
aprs et on ritre sur les
sous-tableaux

Tri par fusion


Tri rapide (quicksort)
Complexit en O(n log(n))
n = 106 => O(2 x 106) oprations !!

Informatique - Bases de donnes ! A. Cornujols 2011

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

/170

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

10 /148

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

11 /148

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

12 /170

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

13 /148

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

14 /148

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

15 /148

1. Questions qui occupent les informaticiens


Comment organiser un calcul : le tri

Informatique - Bases de donnes ! A. Cornujols 2011

16 /148

1. Questions qui occupent les informaticiens


Comment organiser un calcul : appariemment de graphe

Informatique - Bases de donnes ! A. Cornujols 2011

17 /170

1. Questions qui occupent les informaticiens


Comment organiser un calcul : intelligence artificielle

Informatique - Bases de donnes ! A. Cornujols 2011

18 /170

1. Questions qui occupent les informaticiens


Comment organiser un calcul : Lennemi absolu

Informatique - Bases de donnes ! A. Cornujols 2011

19 /170

1. Questions qui occupent les informaticiens


Lennemi absolu : le bug
Plantage des ordinateurs, distributeurs bancaires, systmes de rservation,
sites Web, etc.
Blocages de tlphones ou dappareils photos
Crash du tlphone interurbain amricain
une ligne mal place sur un million

Explosion dAriane 501 (1996) et perte de satellites


Dbordement arithmtique dans un calcul inutile

Bug subtil dans la division flottante du Pentium


Cot : 470 millions de dollars pour Intel
Informatique - Bases de donnes ! A. Cornujols 2011

20 /170

1. Questions qui occupent les informaticiens


Comment coder / reprsenter de linformation

Informatique - Bases de donnes ! A. Cornujols 2011

21 /170

1. Changement de paradigme
Carte analogique vs. carte numrique sur tablette graphique

Informatique - Bases de donnes ! A. Cornujols 2011

22 /170

1. Changement de paradigme
La photo numrique

Informatique - Bases de donnes ! A. Cornujols 2011

23 /170

1. Changement de paradigme
La photo numrique
Support numrique
Copies multiples
Affichage sur plusieurs dispositifs

Effets spciaux : calculs

Les appareils venir vont tre trs peu chers et trs bons ...
... grce linformatique

Informatique - Bases de donnes ! A. Cornujols 2011

24 /170

1. Changement de paradigme
La photo numrique

Informatique - Bases de donnes ! A. Cornujols 2011

25 /170

1. Linformatique comme outil de pense en biologie

La gntique comme un langage : codage / dcodage


Les algorithmes de squencement (shotgun) ont permis le dchiffrement
du gnome

Les rseaux boolens permettent de modliser la dynamique des


rseaux biologiques

Le calcul des processus permet de modliser linteraction entre


molcules

Le calcul sur graphe permet de modliser la :


diffusion dun virus
la comptition entre espces
Les systmes multi-agents permettent de modliser les :
insectes sociaux
bancs de poissons
La rcursion permet de modliser la croissance des plantes
...
Informatique - Bases de donnes ! A. Cornujols 2011

26 /170

1. Linformatique ... et vous


Outils de travail
La bureautique
Le travail collaboratif et Internet

Simulation
Comprhension / prdiction de systmes complexes
Ralit virtuelle / augmente

Fouille de donnes
Rgularits, tendances, prdictions, ...

Programmation - Bases de Donnes


Quest-ce qui est possible ?
Interaction avec des informaticiens
Ralisations de petits systmes
Informatique - Bases de donnes ! A. Cornujols 2011

27 /170

1. Linformatique ... et vous ?


Outils de travail

1A Bureautique
2A (ATHENS) Publier
sur Internet

La bureautique
Le travail collaboratif et Internet
Simulation

2A (ATHENS)
Informatique et
Comprhension / prdiction de systmes complexes
Sciences de la Vie
Ralit virtuelle / augmente
1A Module Intgratif

Fouille de donnes
Rgularits, tendances, prdictions, ...

3A DA IODAA

Programmation - Bases de Donnes

1A TC SI
1A C et tldtection
2A Java

Informatique - Bases de donnes ! A. Cornujols 2011

28 /170

1. Linformatique

Reprsenter le monde

Calculer / infrer / raisonner

1- Savoir reprsenter

Structures de donnes

Reprsentation des connaissances

2- Tous les calculs ne sont pas possibles

Notion de complexit

Distribution / Paralllisation / Cloud computing

3- Il nest pas facile de programmer de manire fiable

Mthodes de production de logiciel

Vrification / Certification

Informatique - Bases de donnes ! A. Cornujols 2011

29 /170

1. Linformatique

Linformatique est une science (comme les mathmatiques ou la physique)

Ensemble organis de concepts et doutils

Pour :

aider comprendre le monde

crer des artefacts

Informatique - Bases de donnes ! A. Cornujols 2011

30 /170

1. Quest-ce que linformatique

Science du traitement automatis de linformation

Science : un ct thorique (mathmatique) + un ct exprimental


(e.g. simulations (jeux), rseaux par paquets, multi-tches, ...)
Traitement automatis : algorithmes (plus exigeant que les maths)
Information : tout ce qui est numrisable
(e.g. texte, images, musique, signal, ADN, ...)

Informatique - Bases de donnes ! A. Cornujols 2011

31 /170

1. Quest-ce que linformatique

Linformatique concerne les abstractions ...

Choisir les bonnes abstractions


Utiliser plusieurs niveaux dabstraction simultanment
Dfinir les relations entre ces niveaux dabstraction

Comme les maths

Informatique - Bases de donnes ! A. Cornujols 2011

32 /170

1. Quest-ce que linformatique

Linformatique concerne les abstractions ...


... en faisant attention :
Lefficacit
Rapidit
Taille mmoire

Cot calcul

Fonctionnement correct
Est-ce que cela fait ce que lon veut ?
Est-ce que le programme donne une rponse ?
-ilit
Simplicit et lgance
Utilisabilit

Comme les sciences


de lingnieur

Modifiabilit
Maintenabilit
Cot
...

Informatique - Bases de donnes ! A. Cornujols 2011

33 /170

1. Linformatique et VOUS

En quoi cela vous concerne ?

1- Acteur direct / en interaction directe avec linformatique

Programmation de simulation

Utilisation de BD, de SIG

Traitement dimages, tldtection

Bio-informatique

E.g. AA :
- Croire que cest magique
- Ne pas demander assez

2- En interaction avec des acteurs directs

Que puis-je attendre de loutil informatique ?

Quest-ce qui est possible / difficile / impossible

Comment interagir / dialoguer / orienter

Informatique - Bases de donnes ! A. Cornujols 2011

34 /170

1. Linformatique et VOUS

Classes dabstractions et de concepts

Notion de calcul : entre ; sortie ; spcification


Notion dalgorithme : organisation des calculs ; approximation ; heuristiques ; ...
Complexit : calculabilit ; performance
Structures de donnes
Raisonnement : correction ; logique ; heuristiques ; raisonnement imprcis ;
Contrle du calcul : rcursion ; itration ; non-dterminisme ; paralllisme ; distribution
Communication : information ; code ; synchrone/asynchrone ; P2P ; client-serveur ; ...
Contraintes du monde physique : tolrance aux fautes ; imprcisions ; cots ; ...

etc.

Informatique - Bases de donnes ! A. Cornujols 2011

35 /170

1. Linformatique et VOUS

Des aspects multiples :


Informatique thorique : algorithmique, automates, logique, calculabilit, complexit,
thorie des graphes, . . .
Programmation : plusieurs paradigmes (impratif, fonctionnel, logique, orient objet, ...)
Rseau : transmission de linformation (protocoles, routage, serveurs, ...)
Scurit : cryptologie, vrification de programme, ...
Architecture de systmes : code assembleur, gestion de la mmoire, ...
Intelligence artificielle : raisonnement, apprentissage, reprsentation des
connaissances, ...
Et beaucoup dautres : bases de donnes, bio-informatique, optimisation, ...

Informatique - Bases de donnes ! A. Cornujols 2011

36 /170

1. Informatique et recherche AgroParisTech

tude des changes thermiques dans lAtlantique Nord :

Le Gulf-Stream est-il moins actif ?


Grosses bases de donnes rparties ; apprentissage
artificiel ; Systmes experts, ...

tude du risque alimentaire :

partir de textes slectionn sur Internet (EU / USA)


Ontologies, traitement de la langue, ...

Analyse en imagerie mdicale :

dtection en temps rel du contour du rein


Apprentissage artificiel, analyse dimages

Informatique - Bases de donnes ! A. Cornujols 2011

37 /170

Ce cours et vous : le projet

partir dun cahier des charges :

Modliser le monde (Entits / Relations)

Traduire en donnes et relations : tables

Choisir et mettre en oeuvre un SGBD (Systme de Gestion de Bases


de Donnes)

Administrer la base de donnes

Grer les utilisateurs ; les ressources

Entretenir la base de donnes

Informatique - Bases de donnes ! A. Cornujols 2011

38 /170

Partie 1 - Place de linformatique


Partie 2 - Les bases de donnes
Partie 3 - Bases sur les BD
Partie 4 - Conception des BD

Partie 5 - Manipulation : SQL


Partie 6 - PHP / MySQL

2. Les Bases de Donnes

Informatique - Bases de donnes ! A. Cornujols 2011

39 /170

2. Quelles donnes ?

Les donnes sont omniprsentes autour de nous ...

Base de donnes sur des films (e.g. Allocin)


Base de donnes bibliothcaire (e.g. BN, Amazon, ...)
Marathon de New-York (Paris, Londres, du Mdoc, ...)
Location de voitures (e.g. Hertz, ...) / Rservation de place davion
Scurit sociale (carte Vital), Hpitaux, ...
Communications tlphoniques (oprateurs)
Second Life
Systmes dinformation gographique
...

Informatique - Bases de donnes ! A. Cornujols 2011

40 /170

2. Quelles donnes ?

Les donnes sont omniprsentes autour de nous ...

Informatique - Bases de donnes ! A. Cornujols 2011

41 /170

2. Quelles donnes ?

Les donnes sont omniprsentes autour de nous ... dans lentreprise

Les clients
Les produits
Les commandes
Les factures
...

Informatique - Bases de donnes ! A. Cornujols 2011

42 /170

2. Quelles donnes ?

Les donnes sont omniprsentes autour de nous ...

Informatique - Bases de donnes ! A. Cornujols 2011

43 /170

2. Comment les stocker ?

Comment les ranger dans un ordinateur ?

Informatique - Bases de donnes ! A. Cornujols 2011

44 /170

2. Comment les stocker ?

Comment les ranger dans un ordinateur ?

scanner les bons de commande [1/10]


copier les donnes dans un tableau Word [2/10]
copier les donnes dans une feuille Excel [4/10]
copier les donnes dans une base de donnes [10/10]

Informatique - Bases de donnes ! A. Cornujols 2011

45 /170

2. Comment structurer les donnes ?

En regardant d'un peu plus prs ...

donnes
du client

donnes
de la
commande

donnes
d'un dtail

Informatique - Bases de donnes ! A. Cornujols 2011

46 /170

2. Comment structurer les donnes ?

Reportons ces donnes dans des tableaux :


donnes de la commande
NCOM

DATECOM

donnes du client

TOTAL-COMMANDE

NCLI

NOM

ADRESSE

LOCALITE

69720

B512

GILLET

14,r. de l'Et

Toulouse

30188 2/1/2009
donnes des dtails
NPRO

LIBELLE

PRIX

QCOM

SOUS-TOTAL

CS464

CHEV. SAPIN 400x6x4

220

180

39600

PA45

POINTE ACIER 45 (2K)

105

22

2310

PA60

POINTE ACIER 60 (1K)

095

70

6650

PH222

PL. HETRE 200x20x2

230

92

21160

Observations :
1. les donnes TOTAL-COMMANDE et SOUS-TOTAL sont calcules : inutile de
les conserver, on pourra les recalculer en cas de besoin
2. il est impossible de reconstituer le bon de commande d'origine : quel est le
client de la commande, quelle est la commande d'un dtail ?
Informatique - Bases de donnes ! A. Cornujols 2011

47 /170

2. Comment structurer les donnes ?

Donnes sans redondances et avec rfrences :


donnes de la commande

donnes du client

NCOM

NCLI

DATECOM

NCLI

30188

B512

2/1/2009

B512

NOM

ADRESSE

LOCALITE

GILLET 14,r. de l'Et Toulouse

donnes des dtails


NCOM

NPRO

QCOM

LIBELLE

PRIX

30188

CS464

180

CHEV. SAPIN 400x6x4

220

30188

PA45

22

POINTE ACIER 45 (2K)

105

30188

PA60

70

POINTE ACIER 60 (1K)

095

30188

PH222

92

PL. HETRE 200x20x2

230

Observation
si plusieurs dtails mentionnent le mme produit, ses caractristiques
sont rptes autant de fois : on isole les donnes des produits dans un
tableau spcifique

Informatique - Bases de donnes ! A. Cornujols 2011

48 /170

2. Comment structurer les donnes ?

Distribution optimale des donnes des bons de commande


donnes de la commande

donnes du client

NCOM

NCLI

DATECOM

NCLI

NOM

ADRESSE

LOCALITE

30188

B512

2/1/2009

B512

GILLET

14,r. de l'Et

Toulouse

donnes des dtails

donnes des produits

NCOM

NPRO

QCOM

NPRO

LIBELLE

PRIX

30188

CS464

180

CS464

CHEV. SAPIN 400x6x4

220

30188

PA45

22

PA45

POINTE ACIER 45 (2K)

105

30188

PA60

70

PA60

POINTE ACIER 60 (1K)

95

30188

PH222

92

PH222

PL. HETRE 200x20x2

230

Informatique - Bases de donnes ! A. Cornujols 2011

49 /170

2. Comment structurer les donnes ?

Ajoutons d'autres donnes : notre premire base de donnes

Informatique - Bases de donnes ! A. Cornujols 2011

50 /170

2. Comment structurer les donnes ?

Quelques leons partielles

On a besoin de systmes spcifiques pour conserver et manipuler les


donnes

Les donnes sont reprsentes dans des tables

Les lignes sont des entits

Les colonnes sont des proprits

Le dcoupage en tables demande une analyse et une optimisation

Lanalyse doit aller au-del des besoins immdiats (abstraction)

Informatique - Bases de donnes ! A. Cornujols 2011

51 /170

2. Utiliser une base de donnes

Que peut-on faire de ces donnes ?


Avant tout, les conserver aussi longtemps que ncessaire !

Les interroger : quel est le numro, le nom et l'adresse des clients de


Toulouse ?

select NCLI, NOM, ADRESSE


from
CLIENT
where LOCALITE = 'Toulouse';
ou encore :

quelles sont les commandes des clients de Toulouse ?

fa c

ile

lus

up
select NCOM
pe ile
un iffic
d
from
COMMANDE
where NCLI in (select NCLI
from CLIENT where LOCALITE = 'Toulouse');

requtes rdiges dans le langage SQL


Informatique - Bases de donnes ! A. Cornujols 2011

52 /170

2. Utiliser une base de donnes

Que peut-on faire de ces donnes ?


Vrifier une commande lors de son enregistrement : le client est-il connu ? son
adresse a-t-elle chang ? les produits commands sont-ils rpertoris ?
Produire les factures
Prparer le rapprovisionnement des produits en rupture de stock
Calculer le chiffre d'affaire mensuel
Etudier la rpartition gographique des ventes
Et mille autres applications ...

Informatique - Bases de donnes ! A. Cornujols 2011

53 /170

2. Utiliser une base de donnes

Que peut-on faire de ces donnes ?


Un dernier exemple :
calculer la rpartition du chiffre d'affaire par localit et par produit

select C.LOCALITE, P.NPRO, sum(D.QCOM*P.PRIX)


er
from
CLIENT C, COMMANDE M, DETAIL D, PRODUIT P
ay
ss dre
e
'
d
n
where C.NCLI = M.NCLI and M.NCOM = D.NCOM
tile pre nt !
inu com nsta
and
D.NPRO = P.NPRO
de ur l'i
po
group by C.LOCALITE, P.NPRO;

Cette question complexe est rsolue en une seule instruction SQL de 5 lignes !

Informatique - Bases de donnes ! A. Cornujols 2011

54 /170

2. Les SGBD

La gestion d'une base de donnes pose des problmes complexes. Cette gestion est
assure par des logiciels spcialiss : les systmes de gestion de bases de
donnes ou SGBD.

Organisation des donnes : le SGBD organise les donnes en tables permanentes


stockes sur disque; il cre les mcanismes garantissant un accs rapide aux donnes;
il informe les utilisateurs sur ces structures.

Gestion des donnes : le SGBD garantit l'volution cohrente des donnes; il vrifie
que les contraintes (unicit, rfrence entre tables, etc.) sont respectes.

Accs aux donnes : le SGBD permet l'accs aux donnes la fois par l'utilisateur
occasionnel et par les programmes de traitement de donnes.

Informatique - Bases de donnes ! A. Cornujols 2011

55 /170

2. Les SGBD

Protection contre les accidents :


le SGBD garantit l'intgrit et l'accessibilit des donnes en cas d'incident ou d'attaque.

Gestion des accs concurrents :


le SGBD permet l'accs simultan aux donnes par des centaines voire des milliers
d'utilisateurs. Il contrle rigoureusement les oprations simultanes sur les mmes
donnes.

Contrle des accs :


le SGBD garantit que seuls les utilisateurs autoriss peuvent accder aux donnes et
les modifier.

Informatique - Bases de donnes ! A. Cornujols 2011

56 /170

2. Les dfis des BDs aujourdhui et demain

Multiplicit des types de donnes.


Une base de donnes moderne peut contenir :

des donnes multimdias,

des donnes textuelles,

des donnes spatiales (donnes GPS par exemple),

des donnes historiques (plusieurs lignes par entit),

des donnes semi-structures.

Volumes et performances.

Une base de donnes peut contenir des dizaines de milliers de tables, des milliards
de lignes.

Comment garantir l'accessibilit de ces donnes, leur protection contre les


incidents, des temps d'accs satisfaisants ?
Informatique - Bases de donnes ! A. Cornujols 2011

57 /170

2. Les dfis des BDs aujourdhui et demain

Maintenance et volution.

La structure d'une base de donnes peut voluer : ajouter ou supprimer une table,
une colonne, une contrainte.

Comment prserver les donnes et les programmes utilisateurs lors de cette


volution ?

Les donnes distribues et nomades.

Une base de donnes peut tre rpartie et/ou dupliques sur plusieurs ordinateurs
rpartis gographiquement.

Certains de ceux-ci peuvent tre des appareils mobiles (embarqus, portables,


smart phones).

Comment garantir la cohrence, la protection et l'accessibilit des donnes.

Informatique - Bases de donnes ! A. Cornujols 2011

58 /170

2. Les dfis des BDs aujourdhui et demain

Les BD et le Web. De nombreuses bases de donnes sont intimement lies au Web.


En outre, le Web peut tre vu comme une gigantesque base de donnes (largement
incohrente et redondante !)
Qu'en est-il des principes rigoureux des bases de donnes dans ce contexte ?

Les donnes dcisionnelles.


Les donnes ne servent pas seulement contrler la gestion et le fonctionnement d'une
entreprise au jour le jour. Elles sont aussi souvent utilises pour soutenir des
dcisions tactiques et stratgiques.
Caractristiques : traitement de trs gros volumes de donnes complexes pour
produire une rponse courte (une heure de traitement de plusieurs traoctets pour en
extraire un seul nombre !)
Comment structurer une base de donnes dans ce sens (= entrepts de donnes) ?

II- Les bases de donnes

Informatique - Bases de donnes ! A. Cornujols 2011

Partie 1 - Place de linformatique


Partie 2 - Les bases de donnes
Partie 3 - Bases sur les BD
Partie 4 - Conception des BD

59 /170

Partie 4 - Manipulation : SQL


Partie 5 - PHP / MySQL

3- Bases ... sur les Bases de Donnes

Informatique - Bases de donnes ! A. Cornujols 2011

60 /170

3. Notions de base

Base de donnes = ensemble de tables

Chaque table a un nom unique (ex : Film)


Chaque table contient les donnes relatives des entits de mme nature.
Chaque ligne (enregistrement) dune table dcrit les donnes relatives une entit.
Chaque colonne dune table dcrit une proprit des entits (ex : Prix).
Les lignes dune table sont distinctes.
Les noms de table et de colonnes constituent le schma de la base.
Les lignes (entits) constituent le contenu de la base.

Informatique - Bases de donnes ! A. Cornujols 2011

61 /170

3. Notions de base

Tables, lignes et colonnes


schma

ligne

donnes

colonne
obligatoire

colonne
facultative

Informatique - Bases de donnes ! A. Cornujols 2011

62 /170

3. Notions de base

Le schma d'une table dfinit sa structure. Il spcifie notamment :


1. le nom de la table,
2. pour chaque colonne, son nom, son type, son caractre obligatoire,
3. l'identifiant primaire (liste de colonnes)
4. les identifiants secondaires ventuels (liste de colonnes)
5. les cls trangres ventuelles (liste de colonnes et table cible).

Le contenu d'une table est form d'un ensemble de lignes conformes au


schma.

Le contenu d'une table est sujet de frquentes modifications.


Le schma d'une table peut voluer mais moins frquemment.

Informatique - Bases de donnes ! A. Cornujols 2011

63 /170

3. Notions de base

identifiant
(cl primaire)

cl trangre
dans le schma
dans les donnes

Informatique - Bases de donnes ! A. Cornujols 2011

64 /170

3. Notions de base

Identifiants et cls trangres


Un identifiant est un groupe de colonnes d'une table T tel qu'il ne puisse,
tout moment, exister plus d'une ligne dans T qui possde des valeurs
dtermines pour ces colonnes.
La valeur de l'identifiant permet de dsigner une ligne de T.
Une cl trangre est un groupe de colonnes d'une table S tel qu'il existe,
tout moment, dans une table T, une ligne dont l'identifiant a pour valeur(s)
celle(s) de ce groupe.
La valeur de la cl trangre dans S sert rfrencer une ligne de la
table T.

Informatique - Bases de donnes ! A. Cornujols 2011

65 /170

3. Identifiants et cls trangres

Une table peut possder plusieurs identifiants. On choisit l'un d'eux, qu'on
dclare primaire (cl primaire). Les autres sont ds lors secondaires.

L'identifiant primaire est constitu de colonnes obligatoires.

Un identifiant est minimal si chacune de ses colonnes est ncessaire pour


garantir la contrainte d'unicit.

Il est possible de dclarer une table sans identifiant mais ceci n'est pas
recommand.

Informatique - Bases de donnes ! A. Cornujols 2011

66 /170

3. Identifiants et cls trangres

Une cl trangre est associe une contrainte rfrentielle.

Une cl trangre rfrence en principe l'identifiant primaire de la table


cible. Elle peut rfrencer un identifiant secondaire mais ceci n'est pas
recommand.

Une cl trangre et l'identifiant qu'elle rfrence ont la mme composition :


mme nombre de colonnes et colonnes de mmes types prises deux
deux.

Contrainte rfrentielle : il
faut que chaque cl trangre
dsigne une ligne existante de
la table cible.
Informatique - Bases de donnes ! A. Cornujols 2011

67 /170

3. Identifiants et cls trangres

Un identifiant minimal est aussi appel cl candidate (candidate key). [*]


Un identifiant primaire s'appelle aussi cl primaire (primary key).

Cl trangre = foreign key.

[*] problme : le terme cl admet plus de 20 acceptions diffrentes dans le domaine des
bases de donnes !
Informatique - Bases de donnes ! A. Cornujols 2011

68 /170

3. Notions de base - Exemple

Un schma

Informatique - Bases de donnes ! A. Cornujols 2011

69 /170

3. Notions de base - Exemple


Les donnes

Informatique - Bases de donnes ! A. Cornujols 2011

70 /170

3. Notions de base

Variantes de schma

Informatique - Bases de donnes ! A. Cornujols 2011

Partie 1 - Place de linformatique


Partie 2 - Les bases de donnes
Partie 3 - Bases sur les BD
Partie 4 - Conception des BD

Partie 5 - Manipulation : SQL


Partie 6 - PHP / MySQL

3.1 Introduction
3.2 Modle Entit-Association
3.3 Types d'entits
3.4 Attributs

71 /170

3.5 Types d'associations


3.6 Exemples de schma conceptuel
3.7 Exemple dtaill

4 - Conception dune base de donnes

Informatique - Bases de donnes ! A. Cornujols 2011

72 /170

4.1 Pourquoi est-ce difficile de concevoir une BD

Comment construire une base de donnes ?


dfinir les tables, les contraintes, les index, etc.
introduire les donnes dans ces tables (ceci est un autre problme).

Encore faut-il que le schma des tables satisfasse les besoins des utilisateurs des
donnes !

On constate rapidement que les structures d'un schma relationnel constituent un


support inadquat pour exprimer naturellement ces besoins.

L'esprit humain n'est pas conu pour rflchir en termes de tables !

Informatique - Bases de donnes ! A. Cornujols 2011

73 /170

4.1 Pourquoi est-ce difficile de concevoir une BD

Gestion des tudiants dans


un tablissement suprieur.
Informatique - Bases de donnes ! A. Cornujols 2011

74 /170

4.2 Le modle Entit-Association (E/A)

Il faut un autre langage pour exprimer naturellement les informations que doit
contenir une base de donnes :
le modle Entit-association

Le monde est peru comme form d'entits, dotes de proprits et en


associations les unes avec les autres.

Le monde = ce dont on parle = l'univers du discours = la partie du rel au sujet de


laquelle on dsire enregistrer de l'information = le domaine d'application

=> Modlisation
Informatique - Bases de donnes ! A. Cornujols 2011

75 /170

4.2 Le modle Entit-Association (E/A)

Que sont les besoins des utilisateurs ?


une base de donnes qui contienne toutes les donnes dcrivant son
domaine d'application et elles seulement;
la structure de ces donnes doit tre simple, naturelle, expressive, sans
redondance, ...

On construit une base de donnes (en fait son schma) en deux phases :
1. on identifie les concepts pertinents du domaine d'application, leurs
proprits et leurs associations
= schma conceptuel;
2. on traduit le schma conceptuel en structures de tables
= schma de la base de donnes

Informatique - Bases de donnes ! A. Cornujols 2011

76 /170

4.2 Le modle Entit-Association (E/A)

nonc

Analyse
conceptuelle

Schma
conceptuel

Production du
schma de la BD

Schma SQL

Informatique - Bases de donnes ! A. Cornujols 2011

77 /170

4.2 Le modle Entit-Association (E/A)

Le modle Entit-association propose une lecture du monde (le domaine


d'application) simple mais limite :
le monde est constitu d'objets ou entits
les entits sont classes en types d'entits
les entits d'un type ont des attributs spcifiques
les entits sont en association les unes avec les autres
les associations sont classes en types d'associations.

Informatique - Bases de donnes ! A. Cornujols 2011

78 /170

4.3 Types d'entits

dessin des types

CLIENT

CONTRAT

VEHICULE

ACCIDENT

quelques instances
=
population

Informatique - Bases de donnes ! A. Cornujols 2011

79 /170

4.4 Attributs

quelques attributs

!
NumClient = C400
Nom = FERARD
Adresse = 65, r. du Tertre

NumClient = B332
Nom = MONTI
Adresse = 112, r. Neuve

quelques
valeurs

NumClient = F010
Nom = TOUSSAINT
Adresse = 5, r. Godefroid

Informatique - Bases de donnes ! A. Cornujols 2011

80 /170

4.4 Attributs - Type et attribut obligatoire/facultatif

type d'un attribut

attribut obligatoire/facultatif

Informatique - Bases de donnes ! A. Cornujols 2011

81 /170

4.5 Types d'associations

CLIENT

CLIENT
NumClient
Nom
Adresse

CONTRAT

VEHICULE

NumCtr

NumVh
Marque
Modle

signe

couvre

Type
DateSign

Anne
Cylindre

VEHICULE

appartient

ACCIDENT
implique

CONTRAT

NumAcc
DateAcc

ACCIDENT

Montant[0-1]

dessin des types

quelques instances

Informatique - Bases de donnes ! A. Cornujols 2011

82 /170

4.5 Types d'associations - Classe fonctionnelle un--plusieurs (1:N)

DEPARTEMENT

occupe

DEPARTEMENT

EMPLOYE

EMPLOYE
e1

d1

e6

d2

e2

d4

e3
e4

d3

e7

e5

Informatique - Bases de donnes ! A. Cornujols 2011

83 /170

4.5 Types d'associations - Classe fonctionnelle un--un (1:1)

DEPARTEMENT

DEPARTEMENT

dirige

EMPLOYE

EMPLOYE
e1

d1

e6

d2
d4
d3

e2
e3
e4

e7

e5

Informatique - Bases de donnes ! A. Cornujols 2011

84 /170

4.5 Types d'associations - Classe fonctionnelle plusieurs--plusieurs (N:N)

USINE

fabrique

PRODUIT

USINE

PRODUIT
p1

u1
u4

p2

u2

p3
p4

u3

p5

Informatique - Bases de donnes ! A. Cornujols 2011

85 /170

4.5 Types d'associations - Rle obligatoire/facultatif - Cardinalit

rle

facul
tatif

Contrainte de cardinalit

o
rle

bliga

toire

Combinaisons admises

1-1

[0-1] [0-N]

0-1

[1-1] [0-N]

0-N

[0-1] [0-1]
[1-1] [0-1]

Informatique - Bases de donnes ! A. Cornujols 2011

86 /170

4.5 Types d'associations

Informatique - Bases de donnes ! A. Cornujols 2011

87 /170

4.6 Exemples - Structure administrative

Informatique - Bases de donnes ! A. Cornujols 2011

88 /170

4.6 Exemples - Gestion d'une bibliothque

Informatique - Bases de donnes ! A. Cornujols 2011

89 /170

4.6 Exemples - Voyages en train

Informatique - Bases de donnes ! A. Cornujols 2011

90 /170

Complment - Outil de dessin de schmas conceptuels

3.7 Exemple dtaill

Informatique - Bases de donnes ! A. Cornujols 2011

91 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Cahier des charges (simplifi)

Des agriculteurs possdent des parcelles

Une parcelle a un et un seul propritaire

Un agriculteur possde une ou plusieurs parcelles

Pour exploiter ces parcelles, les agriculteurs font appel un GIE. Celui-ci
fournit de la main doeuvre dappoint, la journe.

Cette main doeuvre est assure par des employs du GIE.

Chaque employ du GIE a un tarif, qui constitue son salaire journalier brut.

Informatique - Bases de donnes ! A. Cornujols 2011

92 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Cahier des charges (simplifi)

Des agriculteurs possdent des parcelles

Une parcelle a un et un seul propritaire

Un agriculteur possde une ou plusieurs parcelles

Pour exploiter ces parcelles, les agriculteurs font appel un GIE. Celui-ci
fournit de la main doeuvre dappoint, la journe.

Cette main doeuvre est assure par des employs du GIE.

Chaque employ du GIE a un tarif, qui constitue son salaire journalier


brut.

Informatique - Bases de donnes ! A. Cornujols 2011

93 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Cahier des charges (simplifi) (2)

Le GIE paie ses employs mensuellement, en fonction de leurs


interventions.

Chaque intervention concerne une parcelle, un employ et un nombre


de jours.

Le systme dinformation dsir doit pouvoir fournir :

la liste des agriculteurs

la liste des employs

la liste des interventions par employ

la liste des interventions par agriculteur

Informatique - Bases de donnes ! A. Cornujols 2011

94 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Inventaire des donnes (simplifi)

Nom

Prnom

Lieu de
rsidence

Agriculteur : Nom, prnom, lieu de

Dulhac

Anne-Marie

Arith

rsidence

Martoz

Christian

Montargy

Carrez

Franois

Arith

Ferrer

Mariette

Lenoyer

Employ GIE : Nom et prnom

Parcelle : nom, superficie, lieu et

Mernaz

Francine

Lescheraines

propritaire

Martoz

Christian

Lescheraines

Employ : numro insee et salaire


journalier

Comment identifier ?

Interventions : employ, parcelle,


date de dbut, nombre de jours

Informatique - Bases de donnes ! A. Cornujols 2011

95 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Cl primaire

IdAgri

Nom

Prnom

Lieu de
rsidence

Dulhac

Anne-Marie

Arith

Martoz

Christian

Montargy

Carrez

Franois

Arith

Ferrer

Mariette

Lenoyer

Mernaz

Francine

Lescheraines

Martoz

Christian

Lescheraines

Informatique - Bases de donnes ! A. Cornujols 2011

96 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Cl primaire : pas ncessairement une seule colonne

Ville_Dep

Ville_Arr

Distance

Aiglun

Saint-Auban

25

Aix-les-Bains

Chambery

14

Rennes

Paris

342

Rennes

Saint-Mal

75

Saint-Alban

Aiglun

23

Table des distances entre villes

Informatique - Bases de donnes ! A. Cornujols 2011

97 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Type des attributs (colonnes)

Agr-Id
Champ

Type

Agr_id

int(11)

Agr_Nom

varchar(30)

Agr_Prn

varchar(20)

Agr_Resid varchar(50)

Agr_Nom

Agr_Prn

Agr_Resid

Extra
auto_increment

Dulhac

Anne-Marie

Arith

Martoz

Christian

Montargy

Carrez

Franois

Arith

Ferrer

Mariette

Lenoyer

Mernaz

Francine

Lescheraines

Martoz

Christian

Lescheraines

Informatique - Bases de donnes ! A. Cornujols 2011

98 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Les parcelles
Par_Idf

Par_Nom

Par_Lieu

Par_Superficie

Le Pr au Vent

Arith

350

Le grand Verger

Arith

300

Plan des Bauges

Montargy

220

Les Prs Rus

Arith

750

Lafosse

Montargy

600

Comment indiquer le propritaire ?

Informatique - Bases de donnes ! A. Cornujols 2011

99 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Les parcelles et leur propritaire


Par_Idf

Par_Nom

Par_Lieu

Le Pr au Vent

Arith

350

Le grand Verger

Arith

300

Montargy

220

Plan des
Bauges
Les Prs Rus

Arith

750

Lafosse

Montargy

600

Parcelles

Une relation entre


deux tables

Par_Superficie Par_Prop

Agr_Id

Agr_Nom

Agriculteur
Agr_Prn

Agr_Resid

Dulhac

Anne-Marie

Arith

Martoz

Christian

Montargy

Carrez

Franois

Arith

Ferrer

Mariette

Lenoyer

Mernaz

Francine

Lescheraines

Martoz

Christian

Lescheraines

Informatique - Bases de donnes ! A. Cornujols 2011

100 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Les parcelles et leur propritaire


Agriculteur

Agr_id

Parcelle
Par_id

Agr_Nom

Par_Nom

Agr_Prn

Par_Lieu
Agr_Resid

Agriculteur

Cl trangre

Par_Sup
Par_Prop

Une relation 1 n
entre deux tables

Parcelles

Informatique - Bases de donnes ! A. Cornujols 2011

101 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

La table employ
Emp-nss

Emp_Nom

Emp_prn

Emp_tarif

1,75077E+12

Grandet

Marc

110

1,82023E+12

Barnier

Nicole

115

1,79011E+12

Pernet

Henri

119

Quelle cl primaire ?

Informatique - Bases de donnes ! A. Cornujols 2011

102 /170

4.7 Exemple - Conception dune BD pour un GIE agricole

Quelle relation entre les tables parcelle et employ ?

Un employ peut tre amen travailler sur plusieurs parcelles

Sur une mme parcelle peuvent travailler plusieurs employs


(simultanment ou lun aprs lautre)

Cest une relation plusieurs plusieurs : on la reprsente par une


nouvelle table

Informatique - Bases de donnes ! A. Cornujols 2011

103 /170

4.7 Exemple - Conception dune BD pour un GIE agricole


Les parcelles et les employs
Parcelle
Employ

Intervention

Agr_id

Int_Emp_nss

Agr_Nom

Int_Par_id
Int_Deb

Agr_Resid

Int_Nb_Jours

Emp_nss
1,75077E+12

Emp_Nom
Grandet

Emp_prn
Marc

Employ

Par_id
Par_Nom
Par_Lieu

Agr_Prn

Lemploy Grandet a
travaill sur la parcelle du
pr au vent, 5 jours partir
du 5 juillet 2004.

Par_Sup
Par_Prop

Intervention
Int_Emp_nss

Int_Par_i
d

Int_Deb

Int_Nb_Jours

1,75077E+12

2004-07-05

Emp_tarif
110

Parcelle
Par_Idf

Par_Nom

Le Pr au
Vent

Par_Lieu Par_Superficie Par_Prop


Arith

350

Informatique - Bases de donnes ! A. Cornujols 2011

104 /170

Partie 1 - Place de linformatique


Partie 2 - Les bases de donnes
Partie 3 - Bases sur les BD
Partie 4 - Conception des BD

Partie 5 - Manipulation : SQL


Partie 6 - PHP / MySQL

4.1 Introduction : LDD et LMD


4.2 Cration / modification de table
4.3 Extractions simples
4.4 Extractions complexes

4.5 Les fonctions agrgatives


4.6 Les sous-requtes

5 - LE LANGAGE SQL
(Structured Query Language)

Informatique - Bases de donnes ! A. Cornujols 2011

105 /170

5.1 Introduction SQL : LDD et LMD

SQL nest pas un langage de programmation complet


SQL permet :
de dfinir le schma de la base de donnes (LDD)
de charger les tables relationnelles (LMD)
de manipuler les donnes stockes (LMD)
de grer la base de donnes (LDD) : scurit, organisation
physique

Ici

: aperu de la partie LDD

Plus loin : le LMD


Informatique - Bases de donnes ! A. Cornujols 2011

106 /170

1. LE LANGAGE SQL LDD


Contenu

1.1 Introduction
1.2 Cration d'un schma
1.3 Cration d'une table
1.4 Modification d'une table
1.5 Exemple

Informatique - Bases de donnes ! A. Cornujols 2011

107 /170

5.1 Introduction

Le sous-langage LDD de SQL permet de crer des structures de


donnes et de les modifier.
Les oprations du LDD :
Cration dun schma
Cration dune table
colonnes (obligatoire)
domaine
identifiants primaire et secondaire
cl trangre
Suppression dune table
Ajout, suppression, modification dune colonne
Ajout, suppression dune contrainte
Ajout, suppression dun index
Cration dun espace de stockage
Informatique - Bases de donnes ! A. Cornujols 2011

108 /170

CREATION D'UNE TABLE


Contenu

a) Tables, colonnes et domaines


b) Les identifiants
c) Les cls trangres
d) Suppression d'une table

Informatique - Bases de donnes ! A. Cornujols 2011

109 /170

5.2 Cration d'une table - Tables, colonnes et domaines

Cration d'une table et de ses colonnes

create table CLIENT ( NCLI


NOM
ADRESSE
LOCALITE
CAT
COMPTE

char(10),
char(32),
char(60),
char(30),
char(2),
decimal(9,2) );

Informatique - Bases de donnes ! A. Cornujols 2011

110 /170

5.2 Cration d'une table - Tables, colonnes et domaines

Les types de base


numrique

exact
approch

chane de

bits

longueur fixe
longueur variable
longueur indfinie

bit
bit varying
BLOB

caractres

longueur fixe
longueur variable
longueur indfinie

char
character varying
CLOB

temps

smallint, integer, decimal, numeric


real, float, double

date
instant
instant dat
intervalle

date
time
timestamp
interval

boolen

boolean

Informatique - Bases de donnes ! A. Cornujols 2011

111 /170

5.2 Cration d'une table - Tables, colonnes et domaines

Les colonnes obligatoires


Une colonne est facultative par dfaut.
Il faut dclarer explicitement les colonnes obligatoires

create table CLIENT ( NCLI


NOM
ADRESSE
LOCALITE
CAT
COMPTE
);

char(10) not
char(32) not
char(60) not
char(30) not
char(2),
decimal(9,2)

null,
null,
null,
null,
not null

Informatique - Bases de donnes ! A. Cornujols 2011

112 /170

5.2 Cration d'une table - Tables, colonnes et domaines

Valeur par dfaut d'une colonne


Sera assigne la colonne si on ne spcifie pas de valeur
lors de la cration d'une ligne
create table CLIENT (
NCLI
NOM
ADRESSE
LOCALITE
CAT
COMPTE

char(10) not null,


char(32) not null,
char(60) not null,
char(30) not null default 'Paris',
char(2) default 'B1',
decimal(9,2) not null default 0.0
);

create domain MONTANT decimal(9,2) default 0.0;

Informatique - Bases de donnes ! A. Cornujols 2011

113 /170

5.2 Cration d'une table - Les identifiants

Les identifiants primaires (primary key)

create table CLIENT ( NCLI


char(10) not
NOM
char(32) not
ADRESSE char(60) not
LOCALITE char(30) not
CAT
char(2),
COMPTE
decimal(9,2)
primary key (NCLI) );

null,
null,
null,
null,
not null,

Informatique - Bases de donnes ! A. Cornujols 2011

114 /170

5.2 Cration d'une table - Les identifiants

Les identifiants secondaires (candidate key)

create table CLIENT ( NCLI


char(10) not
NOM
char(32) not
ADRESSE char(60) not
LOCALITE char(30) not
CAT
char(2),
COMPTE
decimal(9,2)
primary key (NCLI),
unique (NOM) );

null,
null,
null,
null,
not null,

Informatique - Bases de donnes ! A. Cornujols 2011

115 /170

5.2 Cration d'une table - Les cls trangres (foreign key)

create table COMMANDE (NCOM


char(12) not null,
NCLI
char(10) not null,
DATECOM date not null,
primary key (NCOM),
foreign key (NCLI) references CLIENT);

Si l'identifiant cible est secondaire (possible mais dconseill) :


foreign key (NOM) references CLIENT(NOM)
Informatique - Bases de donnes ! A. Cornujols 2011

116 /170

5.2 Cration d'une table - Les cls trangres


Variante : contraintes de colonne
create table CLIENT (
NCLI char(10) not null primary key,
. . .
);
create table CLIENT (
NCLI char(10) not null,
NOM char(32) not null unique,
. . .
);
create table COMMANDE (
NCOM char(12) not null,
NCLI char(10) not null references CLIENT,
. . . );
Informatique - Bases de donnes ! A. Cornujols 2011

117 /170

5.2 Cration d'une table - Suppression d'une table


Suppression d'une table
drop table COMMANDE;

Attention, opration sous haute surveillance !


la table ne doit plus tre rfrence par une cl trangre;
(E.g. la table DETAIL (ou sa cl trangre vers COMMANDE) doit
avoir t supprime)

Informatique - Bases de donnes ! A. Cornujols 2011

118 /170

MODIFICATION D'UNE TABLE


Contenu

a) Ajout, retrait et modification d'une colonne


b) Ajout et retrait d'une contrainte

Informatique - Bases de donnes ! A. Cornujols 2011

119 /170

5.3 Modification d'une table - Colonnes


Ajout, retrait et modification d'une colonne
alter table PRODUIT add column POIDS smallint;

r
ute
ajo

alter table PRODUIT drop column PRIX;


s

p
up

rim

er

alter table CLIENT modify column CAT set '00';

r
leu
va t
r
u
ie
dif fa
mo ar d
p

alter table CLIENT modify column CAT drop default;

le
va
er ut
m
ri
fa
pp d
su par

Informatique - Bases de donnes ! A. Cornujols 2011

ur

120 /170

5.3 Modification d'une table - Contraintes


Ajout et retrait d'une contrainte

alter table PROSPECT add primary key (NCLI);

alter table CLIENT add unique (NOM,ADRESSE,LOCALITE);

alter table CLIENT modify CAT not null;


alter table CLIENT modify ADRESSE null;
alter table CLIENT
add foreign key (CAT) references CATEGORIE ;

Informatique - Bases de donnes ! A. Cornujols 2011

121 /170

5.3 Exemple - Le schma

Traduire ce schma en SQL

Informatique - Bases de donnes ! A. Cornujols 2011

122 /170

5.3 Exemple - Le schma et les espaces de stockage

create schema CLICOM;


create dbspace CLI_PRO_DAT;
create dbspace COM_DAT;

Informatique - Bases de donnes ! A. Cornujols 2011

123 /170

5.3 Exemple - Les tables

create table CLIENT (

NCLI
NOM
ADRESSE
LOCALITE
CAT
COMPTE
primary key

char(10) not null,


char(32) not null,
char(60) not null,
char(30) not null,
char(2),
decimal(9,2) not null,
(NCLI) ) in CLI_PRO_DAT;

create table PRODUIT ( NPRO


LIBELLE
PRIX
QSTOCK
primary key

char(15) not null,


char(60) not null,
decimal(6) not null,
decimal(8) not null,
(NPRO) ) in CLI_PRO_DAT;

create table COMMANDE (NCOM


NCLI
DATECOM
primary key
foreign key

char(12) not null,


char(10) not null,
date not null,
(NCOM),
(NCLI) references CLIENT) in COM_DAT;

create table DETAIL (

NCOM
char(12) not null,
NPRO
char(15) not null,
QCOM
decimal(8) not null,
primary key (NCOM,NPRO),
foreign key (NCOM) references COMMANDE,
foreign key (NPRO) references PRODUIT) in COM_DAT;

Informatique - Bases de donnes ! A. Cornujols 2011

124 /170

2. LE LANGAGE SQL LMD (1)


Contenu

2.1 Introduction
2.2 Extraction simple
2.3 Conditions plus complexes
2.4 Donnes extraites et donnes drives
2.5 Les fonctions agrgatives
2.6 Les sous-requtes

Informatique - Bases de donnes ! A. Cornujols 2011

125 /170

Introduction
Le sous-langage LMD de SQL permet de consulter le contenu des
tables et de les modifier. Il comporte 4 verbes :
La requte select extrait des donnes des tables
La requte insert insre de nouvelles lignes dans une table
La requte delete supprime des lignes d'une table
La requte update modifie les valeurs de colonnes de lignes
existantes

Informatique - Bases de donnes ! A. Cornujols 2011

126 /170

5.4 Extraction simple - projection


Personnes
nom

prnom

adresse

tlphone

Martin

Pierre

7 alle des vers 258941236

Dupond

Jean

32 all Poivrot

526389152

Dupond

Marc

8 rue de loctet

123456789

On projette la table
Personnes sur les
colonnes nom et prnom.

SELECT nom, prnom


FROM Personnes
nom

prnom

Martin

Pierre

Dupond

Jean

Dupond

Marc

Informatique - Bases de donnes ! A. Cornujols 2011

127 /170

5.5 Extraction simple - slection


Personnes
nom

prnom

adresse

tlphone

Martin

Pierre

7 alle des vers 258941236

Dupond

Jean

32 all Poivrot

526389152

Dupond

Marc

8 rue de loctet

123456789

SELECT *
FROM Personnes
WHERE nom = Dupond

On ne slectionne que les


tuples dont lattribut nom
est gale Dupond.

nom

prnom

adresse

tlphone

Dupond

Jean

32 all Poivrot

526389152

Dupond

Marc

8 rue de loctet

123456789

Informatique - Bases de donnes ! A. Cornujols 2011

128 /170

5.5 Extraction simple - slection

Relation de dpart :
SELECT * FROM Gens

Gens
Nom

Prenom

Age

Dupond

Pierre

24

Martin

Marc

48

Dupont

Jean

51

Martin

Paul

36

Dupond

Lionel

68

Chirac

Jacques

70

SELECT Nom
FROM Gens
Gens

Nom
Dupond

SELECT DISTINCT Nom


FROM Gens

Martin

Dupont
Martin

Gens
Nom
Dupond

Dupond

Martin

Chirac

Dupont
Chirac
Informatique - Bases de donnes ! A. Cornujols 2011

129 /170

5.5 Extraction simple - slection

Gens
Nom
Chirac

SELECT DISTINCT Nom


FROM Gens
ORDER BY Nom ASC

Dupond
Dupont

Martin

Gens
Nom
Chirac
Dupond

Gens
Nom
Dupond

SELECT DISTINCT Nom


FROM Gens
ORDER BY Nom ASC
LIMIT 2

SELECT DISTINCT Nom


FROM Gens
WHERE Nom <> Chirac
ORDER BY Nom ASC
LIMIT 2
Informatique - Bases de donnes ! A. Cornujols 2011

130 /170

5.6 Extraction complexe - jointure


Bibliothque

Personnes
nom

Dernierlivre

7 alle des vers 258941236

Dupond

Robinson

32 all Poivrot

Jospin

Faust

Martin

Misre

nom

prnom

adresse

Martin

Pierre

Dupond

Jean

tlphone
526389152

On joint les deux tables, grce


la colonne nom.
SELECT Personnes.prnom, dernierlivre
FROM Personnes, Bibliothque
WHERE Personnes.nom = Bibliothque.nom

prnom

Dernierlivre

Jean

Robinson

Pierre

Misre

Et on combine cette jointure


une projection sur les attributs
nom et dernierlivre.
Attention lever toute ambigut sur les noms dattribut
dans le cas o deux tables
possdent des colonnes de
mme nom.

Informatique - Bases de donnes ! A. Cornujols 2011

131 /170

5.7 Conditions plus complexes - les valeurs null

select NCLI
from
CLIENT
where CAT = null;

null ne peut tre compar rien,


mme pas lui-mme !

NCLI

select NCLI
from
CLIENT
where CAT is null;
NCLI
D063
K729

select NCLI
from
CLIENT
where CAT is not null;

Informatique - Bases de donnes ! A. Cornujols 2011

132 /170

5.7 Conditions plus complexes - exemples

select nom
from
produit
where prix <= 100.5;

Liste des noms de produits dont le


prix est infrieur ou gal 100.5

select nom, prnom


from
ELEVES
where age between 12 and 16;

Liste des noms et prnoms des


lves dont lge est dans [12,16]

select modle
from
VOITURES
where couleur in (bleu, blanc, noir);

Liste des modles de voitures dont la


couleur est dans la liste : bleu, blanc,
noir.

select modle
from
VOITURES
where couleur not in (rose, violet);

Liste des modles de voitures dont la


couleur nest pas dans la liste : rose,
violet.

Informatique - Bases de donnes ! A. Cornujols 2011

133 /170

5.7 Conditions plus complexes - Les masques

select NCLI
from
CLIENT
where CAT like 'B_';

'_' = un caractre
quelconque

masques
select NPRO
from
PRODUIT
where LIBELLE like '%SAPIN%';

'%' = une chane


quelconque

Un masque dfinit une famille de chanes de caractres :


'B_'

"#

'B1'
'Bd'
'B '

'%SAPIN%'

"#

'PL. SAPIN 200x20x2'


'Boite en SAPIN'
'SAPIN VERNI'

'B_'

"#

'xB'
'B'
'B12'

'%SAPIN%'

"#

'Boite en Sapin'
'Achetez S A P I N !'

Informatique - Bases de donnes ! A. Cornujols 2011

134 /170

5.7 Conditions plus complexes - Combinaisons logiques

select NOM, ADRESSE, COMPTE


from
CLIENT
where LOCALITE = 'Toulouse' and COMPTE < 0;

select NOM, ADRESSE, COMPTE


where COMPTE > 0
and (CAT = 'C1' or LOCALITE = 'Paris')

Informatique - Bases de donnes ! A. Cornujols 2011

135 /170

5.7 Donnes extraites et donnes drives - expressions de calcul

select 'TVA de ', NPRO, ' = ',0.21*PRIX*QSTOCK


from
PRODUIT
where QSTOCK > 500;
TVA de

NPRO

TVA de
TVA de
TVA de
TVA de

CS264
PA45
PH222
PS222

=
=
=
=

0,21*PRIX*QSTOCK
67788
12789
37770.6
47397

e
select NPRO as Produit, 0.21*PRIX*QSTOCK as Valeur_TVA
st
nn
" e colo
t
i
from
PRODUIT
u de
rod
where QSTOCK > 500;
"P alias
un

Produit
CS264
PA45
PH222
PS222

Valeur_TVA
67788
12789
37770.6
47397

Informatique - Bases de donnes ! A. Cornujols 2011

136 /170

5.8 Les fonctions agrgatives (statistiques)

select 'Namur',avg(COMPTE) as Moyenne,


max(COMPTE)-min(COMPTE) as Ecart_max,
count(*) as Nombre
from

CLIENT

where

LOCALITE = 'Namur';
Namur

Moyenne Ecart_max Nombre

Namur

-2520

4580

le rsultat ne comprend
qu'une seule ligne

select sum(QSTOCK*PRIX)
from

PRODUIT

where

LIBELLE like '%SAPIN%';

Informatique - Bases de donnes ! A. Cornujols 2011

137 /170

5.8 Les fonctions agrgatives (statistiques)

select count(NCLI) as Nombre,


count(NOM) as Noms,
count(LOCALITE) as Localits,
count(CAT) as Catgories
from
CLIENT;
Nombre
16

Noms
16

select count(distinct
count(distinct
count(distinct
count(distinct
from
CLIENT;
Nombre
16

Noms
15

Localits

Catgories

16

14

Si catgories a 2
valeurs nulles de plus
que les autres attributs

NCLI) as Nombre,
NOM) as Noms,
LOCALITE) as Localits,
CAT) as Catgories
Localits

Catgories
7

Informatique - Bases de donnes ! A. Cornujols 2011

138 /170

5.9 Les sous-requtes - Principe

select *
from
PRODUIT
where NPRO in
(select NPRO
from
DETAIL
where NCOM in
(select NCOM
from
COMMANDE
where NCLI in
(select NCLI
from
CLIENT
where LOCALITE='Namur')));

les clients de Namur


les commandes des clients de Namur
les dtails des commandes des clients de Namur
les produits rfrencs par les dtails des commandes des clients de Namur

Informatique - Bases de donnes ! A. Cornujols 2011

139 /170

5.9 Les sous-requtes - Condition d'association

Une condition in (sous-requte) correspond le plus souvent


une condition d'association = qui sont associs ...

select *
from
T
where CT in (select CS
from
S
where <condition>);

"on recherche les T qui sont associs des S qui ..."

Informatique - Bases de donnes ! A. Cornujols 2011

140 /170

5.9 Les sous-requtes - Condition d'association

Insertion et mise jour

insert into CLIENT (NCLI, NOM, ADRESSE, COMPTE)


values (C402, BERNIER, 28 avenue de France, 2367);

update CLIENT
set ADRESSE = 29, avenue de la Magne,
LOCALITE = Niort
where NCLI = F011 ;

Informatique - Bases de donnes ! A. Cornujols 2011

Partie 1 - Place de linformatique


Partie 2 - Les bases de donnes
Partie 3 - Bases sur les BD
Partie 4 - Conception des BD

Partie 5 - Manipulation : SQL


Partie 6 - PHP / MySQL

141 /170

6.1 Introduction
6.2 Le langage MySQL
6.3 Administration avec phpMyAdmin
6.4 Interface avec PHP

6 - PHP / MySQL

Informatique - Bases de donnes ! A. Cornujols 2011

142 /170

6. MySQL

MySQL est un Systme de Gestion de Bases de Donnes

Se charge du stockage, de laccs, de la recherche, de la scurit ... des donnes


Utilise le langage SQL
Systme libre (disponible sous Mac OS X, Linux, Windows, ...)
Lun des plus utilis au monde (e.g. Wikipedia, Google, YouTube, ...)
Multi-utilisateur
Utilisable depuis une grande varit de langages de programmation (C, C++, Java, Python, PHP, ...)
...

Informatique - Bases de donnes ! A. Cornujols 2011

143 /170

6. Administration avec phpMyAdmin

phpMyAdmin est une application PHP dveloppe pour administrer une


base MySQL distance via un navigateur web

Application intgre EasyPHP

phpMyAdmin permet galement de visualiser les requtes SQL

Informatique - Bases de donnes ! A. Cornujols 2011

144 /170

6. Administration avec phpMyAdmin


Interface intuitive pour ladministration des bases de donnes du serveur

Outil pour :
crer de nouvelles bases
crer / modifier / supprimer des tables
afficher / ajouter / modifier / supprimer des tuples
dans des tables
effectuer des sauvegarde de la structure et/ou des
donnes
effectuer nimporte quelle requte
grer les privilges des utilisateurs

Concrtement, PhpMyAdmin est un ensemble de pages PHP. Ce n'est pas un programme,


mais des pages PHP toutes prtes dont on se sert pour gagner du temps.
Informatique - Bases de donnes ! A. Cornujols 2011

145 /170

6. Administration phpMyAdmin : Cration / slection dune base de donnes

Cration / slection dune base de donnes

Et aussi.. choix de la langue de linterface de phpMyAdmin

Informatique - Bases de donnes ! A. Cornujols 2011

146 /170

6. Administration avec phpMyAdmin : Gestion de la base de donnes

Introduction

Informatique - Bases de donnes ! A. Cornujols 2011

147 /170

6. Administration avec phpMyAdmin : Gestion de la base de donnes

Informatique - Bases de donnes ! A. Cornujols 2011

148 /170

6. Administration avec phpMyAdmin : Affichage dune table

Informatique - Bases de donnes ! A. Cornujols 2011

149 /170

6. Administration avec phpMyAdmin : Insertion / modification dune ligne

Informatique - Bases de donnes ! A. Cornujols 2011

150 /170

6. Administration avec phpMyAdmin : Gestion dune table

Informatique - Bases de donnes ! A. Cornujols 2011

151 /170

6. Administration avec phpMyAdmin : Gestion dune table

Informatique - Bases de donnes ! A. Cornujols 2011

152 /170

6. Administration avec phpMyAdmin : Affichage de la structure dune table

Affiche le schma de la table :


Structure et/ou donnes

Structure :
dfinition des proprits des attributs
cls

Sortie = requtes SQL de


cration de la table
et dinsertion des enregistrements

Le format CSV est un fichier texte dont chaque ligne reprsente un enregistrement

Informatique - Bases de donnes ! A. Cornujols 2011

153 /170

6. Administration avec phpMyAdmin : Gestion dune table

Informatique - Bases de donnes ! A. Cornujols 2011

154 /170

6. Administration avec phpMyAdmin : Insertion de donnes dans une table

Accs cet cran par le lien


Insrer des donns provenant
dun fichier texte dans la table de
la page de gestion de la table.

Permet dinsrer des


enregistrements dans une table
partir dun fichier de donnes au
format CSV.

On peut changer les valeurs par dfaut des sparateurs standards du CSV.

Informatique - Bases de donnes ! A. Cornujols 2011

155 /170

6. Administration avec phpMyAdmin : Insertion de donnes dans une table

Accs cet cran par le lien


Crer une cl sur X colonnes de
la page de gestion de la table.

Permet de crer une cl sur une


ou plusieurs colonnes.

Il faut nommer la cl, en spcifier le type, et les attributs sur lesquels elle sapplique.
On peut ajouter une autre colonne cette cl avant de valider lajout de la cl.

Informatique - Bases de donnes ! A. Cornujols 2011

156 /170

6. Conclusions

Base de donnes = ensemble de donnes structures, persistantes plac


dans des fichiers

Gestion par SGBD (Systme de Gestion de Bases de Donnes)

Stockage ; accs ; recherche ; scurit ...

Exemples : MySQL, ORACLE, PostgreSQL, ...

Langage spcialis : SQL

On choisit une application cliente permettant de dialoguer avec un serveur


MySQL : PHP ; phpMyAdmin ; ...

Informatique - Bases de donnes ! A. Cornujols 2011

Partie 1 - Place de linformatique


Partie 2 - Les bases de donnes
Partie 3 - Bases sur les BD
Partie 4 - Conception des BD

Partie 5 - Manipulation : SQL


Partie 6 - PHP / MySQL

157 /170

6.1 Introduction
6.2 Le langage MySQL
6.3 Administration avec phpMyAdmin
6.4 Interface avec PHP

Utilisation de MySQL sous PHP

Informatique - Bases de donnes ! A. Cornujols 2011

158 /170

6. MySQL et PHP

MySQL dans lenvironnement client-serveur web


MySQL est souvent utilis dans le cadre dun serveur web
avec le langage PHP

Jusquici :

Script
PHP

Page
HTML

HTTP

Client

Serveur

Informatique - Bases de donnes ! A. Cornujols 2011

159 /170

6. MySQL et PHP

MySQL dans lenvironnement client-serveur web


MySQL est souvent utilis dans le cadre dun serveur web
avec le langage PHP

Dsormais :

Base de
MySQL
donnes
Serveur

Script
PHP

HTTP

Page
HTML
Client

Informatique - Bases de donnes ! A. Cornujols 2011

160 /170

6. Interface avec PHP - connexion

Pour se connecter une base depuis un script PHP

spcifier un nom de serveur

un mot de passe

un nom de base

mysql_connect($server,$user,$password) : permet de se connecter au


serveur $server en tant quutilisateur $user avec le mot de passe
$password, retourne lidentifiant de connexion si succs, FALSE sinon.
mysql_select_db($base[,$id]) : permet de choisir la base $base, peut
prendre un identifiant $id de connexion ; retourne TRUE en cas de succs,
sinon FALSE.

Informatique - Bases de donnes ! A. Cornujols 2011

161 /170

6. Interface avec PHP - dconnexion

Pour se dconnecter dune base depuis un script PHP

mysql_close([$id]) : permet de fermer la connexion un serveur de bases


de donnes, largument optionnel $id est lidentifiant de session retourn
louverture de la connexion.

Informatique - Bases de donnes ! A. Cornujols 2011

162 /170

6. Interface avec PHP - Exemple

if( $id = mysql_connect(localhost,foobar,0478) ) {


if(mysql_select_db(gigabase) ) {
echo Succs de connexion.;
/* code du script */
} else {
die(Echec de connexion la base.);
}
mysql_close($id);
} else {
die(Echec de connexion au serveur de base de donnes.);
}

V- PHP / MySQL

Informatique - Bases de donnes ! A. Cornujols 2011

163 /170

6. Interface avec PHP - Interrogation

Pour envoyer une requte une base de donne, il existe la fonction :


mysql_query($str) qui prend pour paramtre une chane de caractres qui
contient la requte crite en SQL et retourne un identificateur de rsultat
ou FALSE si chec.
$result = mysql_query(SELECT tlphone FROM Personnes WHERE
nom=\$name\);
Recherche le tlphone dune personne portant pour nom la valeur de la chane $name.

Lidentificateur de rsultat $result permettra dautres fonctions dextraire ligne par ligne
les donnes retournes par le serveur.

Chaque appel cette fonction retournera un tuple du rsultat. Cest pourquoi cette
instruction pourra tre utilise au sein dune boucle while qui sarrtera lorsque
mysql_query() renverra FALSE.

Informatique - Bases de donnes ! A. Cornujols 2011

164 /170

6. Interface avec PHP - Extraction de donnes (par tableau)

mysql_fetch_row($result) : retourne une ligne de rsultat (un tuple) sous la forme


dun tableau. Les lments du tableau tant les valeurs des attributs de la ligne.
Retourne FALSE sil ny a plus aucune ligne.
$request = SELECT * FROM users;
if($result = mysql_query($request)) {
while($ligne = mysql_fetch_row($result)) {
$id = $ligne[0];
$name = $ligne[1];
$address = $ligne[2];
echo $id - $name, $address <br />;
}
} else {
echo Erreur de requte de base de donnes.;
}

Ici, on accde aux valeurs de la ligne par leur indice dans le tableau.
Informatique - Bases de donnes ! A. Cornujols 2011

165 /170

6. Interface avec PHP - Extraction de donnes (par association)

mysql_fetch_array($result) et mysql_fetch_assoc($result) : retournent un tableau


associatif. Les cls tant les noms des attributs et leurs valeurs associes leurs valeurs
respectives. Retourne FALSE sil ny a plus aucune ligne.
$request = SELECT * FROM users;
if($result = mysql_query($request)) {
while($ligne = mysql_fetch_array($result)) {
$id = $ligne[id];
$name = $ligne[name];
$address = $ligne[address];
echo $id - $name, $address <br />;
}
} else {
echo Erreur de requte de base de donnes.;
}

Ici, on accde aux valeurs de la ligne par lattribut dans le tableau associatif.
Informatique - Bases de donnes ! A. Cornujols 2011

166 /170

6. Interface avec PHP - Statistiques sur une requte

mysql_num_rows($result) : retourne le nombre de lignes retournes par la


dernire requte SELECT dont on connat lidentifiant de rsultat $result.

$request = SELECT name FROM users WHERE birth > \1980-05-10\;


$result = mysql_query($request) or die(Erreur de base de donnes.);
$num = mysql_num_rows();

Informatique - Bases de donnes ! A. Cornujols 2011

167 /170

6. Interface avec PHP - Fonctions sur le serveur

mysql_create_db($base [, $id]) : cration de la base $base.


mysql_db_name($result, $row [, $field]) : Lit les noms des bases de donnes. $result
est lidentifiant de rsultat issu de mysql_list_dbs(). $row est l'index dans le rsultat.
Retourne FALSE si chec.
mysql_db_query($base, $query [, $id]) : excution de la requte $query sur la base
$base. Retourne un identifiant de rsultat si succs ou FALSE si chec.
mysql_drop_db($base [, $id]) : supprime la base de donnes $base. Retourne TRUE si
succs ou FASE si chec.

$result = mysql_list_dbs();
$num = mysql_num_rows($result);
for ($i=0; $i<$num; $i++)

Affiche la liste des bases de donnes


du serveur.

echo mysql_db_name($result, $i).<br />;

Informatique - Bases de donnes ! A. Cornujols 2011

168 /170

6. Interface avec PHP - Gestion des erreurs

Il est recommand de tester systmatiquement les valeurs retournes par les fonction
de traitement sur une base de donnes afin dviter la pollution de la page web par des
Warning.
mysql_errno([$id]) : retourne le numro derreur de la dernire opration MySQL
effectue sur la connexion courante ou celle didentifiant $id.
mysql_error([$id]) : retourne le message derreur de la dernire opration MySQL
effectue sur la connexion courante ou celle didentifiant $id.

$request = DELETE FROM users WHERE name LIKE \Martin%\;


if($result = mysql_query($request)) {

} else {
echo Erreur de base de donnes n.mysql_errno().: .mysql_error();
}

Informatique - Bases de donnes ! A. Cornujols 2011

169 /170

Remerciements

Ces transparents doivent beaucoup :

Grard Berry

Hugo Etivant

Jean-Luc Hainaut (auteur dun excellent livre sur les BDs)

dont les transparents sont extraordinairement complets et bien faits.

Merci !!

Informatique - Bases de donnes ! A. Cornujols 2011

170 /170