jdbc - iro.umontreal.ca · i f t 1 1 7 6 u-a s p e c t s a v a n c é s e n j a v a- d a n s t u n...
TRANSCRIPT
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
1/35
JD
BC
(1ere partie) B
ibliographies: Pour la première partie de ce cours, une revue littéraire a été réalisée à partir des
documents m
entionnés ci-dessous. Com
me la prem
ière partie n'est qu'un bref aperçu sur les Bases de
données et SQL
, je n’ai extrait donc que quelques transparents par ci par là. De ce fait, je vous
encourage à jeter un coup d'œil sur chacun des docum
ents pour avoir une vue plus profonde sur la question. L
e document cdb.pdf devra passer en prem
ier car c'est des notes de cours avec des explications détaillées. Site w
eb officiel de SUN
sur les JDB
C: http://java.sun.com
/products/jdbc L
es Bdds &
SQL
http://cortes.cnam
.fr:8080/BD
A/D
OC
/cbd.pdf http://deptinfo.unice.fr/~grin/m
essupports/trsgbd.pdf P
lusieurs transparents ont été extraits de ce lien: http://cortes.cnam
.fr:8080/BD
A/S
LID
ES/
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
2/35
Définitions
"Une
base de
données est
un ensem
ble structuré
de données
enregistrées dans un ordinateur et accessibles de façon sélective par plusieurs utilisateurs." "U
ne base de données =
- un (gros) ensem
ble d'informations
- stockées sur disque:
o) persistance
o) espace de stockage"
mém
oire centrale
entrées/sorties
espace de stockage
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
3/35
Cette définition suppose que nous pouvons organiser cette base en
un (ou plusieurs) fichier(s) stockés sur mém
oire.
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
4/35
Cette approche pose certains problèm
es: 1. "L
ourdeur d'accès aux données. En pratique, pour chaque accès,
mêm
e le plus simple, il faudrait écrire un program
me."
2. "Manque
de sécurité.
Si tout
programm
eur peut
accéder directem
ent aux fichiers, il est impossible de garantir la sécurité
et l'intégrité des données." 3. "Pas de contrôle de concurrence. D
ans un environnement où
plusieurs utilisateurs
accèdent aux
mêm
es fichiers,
des problèm
es de concurrence d'accès se posent." Solution =
> SG
BD
!
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
5/35
Système
de G
estion de
Base
de D
onnées (SG
BD
) (D
atabase M
anagement System
: DB
MS)
"Un logiciel qui perm
et d'interagir avec une base de données s'appelle un systèm
e de gestion de base de données"
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
6/35
Les fonctionnalités d'un S
GB
D sont
- "Décrire les données qui seront stockées"
- "Manipuler
ces données
(ajouter, m
odifier, supprim
er des
informations)"
- "Consulter
les données
et traiter
les inform
ations obtenues
(sélectionner, trier, calculer, agréger,...)" - "D
éfinir des contraintes d'intégrité sur les données (contraintes de dom
aines, d'existence,... )" - "D
éfinir des protections d'accès (mots de passe, autorisations,...)"
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
7/35
- "Résoudre
les problèm
es d'accès
multiples
aux données
(blocages, interblocages)" - "Prévoir
des procédures
de reprise
en cas
d'incident (sauvegardes, journaux,...)"
"En
résumé,
un SG
BD
est
destiné à
gérer un
gros volum
e d'inform
ations, persistantes
(années) et
fiables (protection
sur pannes), partageables entre plusieurs utilisateurs et/ou program
mes
et manipulées indépendam
ment de leur représentation physique."
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
8/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
9/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
10/35
en
ti
té
s
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
11/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
12/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
13/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
14/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
15/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
16/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
17/35
Le m
odèle relationnel
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
18/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
19/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
20/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
21/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
22/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
23/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
24/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
25/35
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
26/35
Le langage SQ
L
"SQL
(Structured Query L
angage ou bien Langage de requête
structuré) est un langage déclaratif, permet d'interroger une base de
données sans se soucier de:
la représentation
interne (physique)
des données,
de leur
localisation, des
chemins
d'accès, ou
des algorithm
es nécessaires."
"SQL
s'adresse à une large comm
unauté d'utilisateurs potentiels (pas seulem
ent des informaticiens) et constitue un des atouts les
plus spectaculaires
(et le
plus connu)
des SG
BD
R
(R
pour R
elationnelle)."
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
27/35
"SQL
peut être utilisé: - m
anière interactive, - en association avec des interfaces graphiques, - ou, très généralem
ent, des langages de programm
ation." "SQ
L ne perm
et pas de faire de la programm
ation au sens courant du term
e (faire une boucle par exemple) et doit donc être associé
avec un langage comm
e le C, le C
OB
OL
ou JAV
A pour réaliser
des traitements com
plexes accédant à une base de données."
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
28/35
Requêtes sim
ples SQL
Nom
Station capacité
lieu région
tarif V
enusa 350
Guadeloupe
Antilles
1200 F
arniente 200
Seychelles
Océan Indien
1500 S
antalba 150
Martinique
Antilles
2000 P
assac 400
Alpes
Europe
1000 L
a table Station
Nom
Station L
ibellé Prix
Venusa
Voile
150 V
enusa P
longée 120
Farniente
Plongée
130 P
assac S
ki 200
Passac
Piscine
20 S
antalba K
ayac 50
La table A
ctivité
Les stations
et leurs activités
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
29/35
SEL
EC
T N
omStation F
RO
M Station W
HE
RE
region = A
ntilles C
e premier exem
ple montre la structure de base d'une requête
SQL
, avec les trois clauses SEL
EC
T, FR
OM
et WH
ER
E.
FRO
M indique la (ou les) tables dans lesquelles on trouve les
attributs utiles à la requête. Un attribut peut être utile de deux
manières (non exclusives) :
(1) on souhaite afficher son contenu, (2) on souhaite qu'il ait une valeur particulière (une constante
ou la valeur d'un autre attribut). Il est obligatoire avec SE
LE
CT
.
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
30/35
SEL
EC
T indique la liste des attributs constituant le résultat.
WH
ER
E indique les conditions que doivent satisfaire les n-uplets
de la base pour faire partie du résultat. Pour afficher l'intégralité d'une table, et avoir ainsi toutes les lignes (on om
et la clause WH
ER
E), et toutes les colonnes, on peut au
choix lister tous les attributs ou utiliser le caractère * qui a la m
ême signification.
SEL
EC
T * FR
OM
Nom
Table
SEL
EC
T * F
RO
M Station
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
31/35
* remplace tous les attributs (cham
ps) de la table Station. de ce fait la table station est reproduite. SE
LE
CT
Nom
Station, capacité FR
OM
Station
On récupère les deux colonnes de la table Station.
SEL
EC
T N
omStation F
RO
M Station W
HE
RE
region = A
ntilles
WH
ER
E critère
N
omStation
Venusa
Santalba
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
32/35
SEL
EC
T libelle, prix / 6.56, C
ours de l'euro = , 6.56
FR
OM
Activite
WH
ER
E nom
Station = Santalba
libelle
prix / 6.56 C
ours de l'euro =
6.56 K
ayac 7.62
Cours de l'euro =
6.56
SEL
EC
T libelle F
RO
M A
ctivite donnera autant de lignes dans le résultat que dans la table A
ctivite.
libelle V
oile P
longee P
longee S
ki P
iscine K
ayac
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
33/35
Tri du résultat
Nous utilisons la clause O
RD
ER
BY
pour trier les résultats d'une requête. C
ette clause doit être suivie de la liste des attributs servant de critère au tri. E
xemple :
SEL
EC
T * F
RO
M Station O
RD
ER
BY
tarif, nomStation
"Trie, en ordre ascendant, les stations par leur tarif, puis, pour un
mêm
e tarif, présente les stations selon l'ordre lexicographique. Pour trier en ordre descendant, on ajoute le m
ot-clé DE
SC après la
liste des attributs." W
HE
RE
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
34/35
"Dans la clause W
HE
RE
, on spécifie une condition booléenne portant sur les attributs des relations du FR
OM
. On utilise pour
cela de manière standard le A
ND
, le OR
, le NO
T et les parenthèses
pour changer
l'ordre de
priorité des
opérateurs booléens.
Par exem
ple : SE
LE
CT
nomStation, libelle
FR
OM
Activite
WH
ER
E nom
Station = Santalba A
ND
(prix > 50 A
ND
prix < 120)
Les opérateurs de com
paraison: ≤ ≥ < == > <> (!=
)
- IFT1176 - A
spects avancés en Java -
dans un désordre total: M.N
. Lokbani, P. R
igaux, H. C
hastel, R. G
rin …
v1.01 JD
BC
– 1ère partie -
35/35
Pour obtenir
une recherche
par intervalle,
on peut
également
utiliser le
mot-clé
BE
TW
EE
N.
La
requête précédente
est équivalente à : SE
LE
CT
nomStation, libelle
FR
OM
Activite
WH
ER
E nom
Station = Santalba A
ND
prix BE
TW
EE
N 50 A
ND
120