Académique Documents
Professionnel Documents
Culture Documents
Rvision des
bases de
donnes en vue
de
l'implmentation
STPHANE CROZAT
23 septembre 2014
Table des
matires
Introduction
I - Pratique : Mdiathque
II - Application
15
A. Employs Oracle.........................................................................................15
B. Dure de tournage d'un film.........................................................................16
C. Dure de tournage d'un film RO....................................................................17
19
B. Rappels SQL...............................................................................................26
1.
2.
3.
4.
5.
6.
7.
Fichier CSV.....................................................................................................................26
Agrgats........................................................................................................................28
Cration de vues.............................................................................................................29
Transactions en SQL........................................................................................................30
Fonctions SQL connatre................................................................................................31
Fonctions de traitement des dates.....................................................................................32
Sous-requtes dans la clause FROM...................................................................................33
C. Rappels Oracle............................................................................................34
1.
2.
3.
4.
5.
6.
Accs inter-schmas........................................................................................................34
Fentrage des donnes....................................................................................................35
Dictionnaire de donnes...................................................................................................36
Excution de fichiers SQL.................................................................................................37
Excuter des requtes SQL avec SQL Developer..................................................................37
SQL*Plus.......................................................................................................................39
Stphane Crozat
Pratique : Mdiathque
Pratique : Mdiathque
3. Affichage l'cran...........................................................................................................43
4. crire du PL/SQL avec SQL Developer................................................................................43
49
53
Bibliographie
55
Webographie
57
Stphane Crozat
Stphane Crozat
Introduction
Volume de cours : 4h
Stphane Crozat
Pratique :
Mdiathque
I-
I
7
11
Vue
12
Stphane Crozat
-- CREATE TABLE
create table CLIENT (
num number,
nom varchar(20),
prenom varchar(20),
adresse varchar(128),
date_nais date,
tel varchar(20),
sexe char check (sexe in ('m','f')),
constraint PK_CLIENT primary key (num)
);
create sequence client_seq
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
create table FACTURE (
num number,
date_etabli date,
client number,
constraint PK_FACTURE primary key (num),
constraint FK_FACTURE_CLIENT foreign key (client) references
CLIENT(num)
);
create sequence facture_seq
Pratique : Mdiathque
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Stphane Crozat
Pratique : Mdiathque
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
create table PRODUIT (
num number,
designation varchar(128),
prix number,
stock number,
constraint PK_PRODUIT primary key (num)
);
create sequence produit_seq
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
create table LIGNE_FACT (
facture number,
produit number,
qte number,
constraint FK_LIGNE_FACT_FACTURE foreign key (facture) references
FACTURE(num),
constraint FK_LIGNE_FACT_PRODUIT foreign key (produit) references
PRODUIT(num),
constraint PK_LIGNE_FACT primary key (facture, produit)
);
-- INSERT INTO CLIENT
insert into CLIENT(num, nom, prenom, adresse, date_nais, tel, sexe)
values (
client_seq.NEXTVAL,
'coulomb',
'francois',
'4, rue liberte',
to_date('02121980','DDMMYYYY'),
'06456780',
'm'
);
insert into CLIENT(num, nom, prenom, adresse, date_nais, tel, sexe)
values (
client_seq.NEXTVAL,
'bernard',
'dupont',
'120, square zola',
to_date('19081972','DDMMYYYY'),
'01345678',
'm'
);
insert into CLIENT(num, nom, prenom, adresse, date_nais, tel, sexe)
values (
client_seq.NEXTVAL,
'corda',
'nathalie',
'66, bv napoleon III',
to_date('02101977','DDMMYYYY'),
'06455790',
'f'
);
Stphane Crozat
Pratique : Mdiathque
33
34
35
36
37
38
39
40
41
42
43
Stphane Crozat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-- Facture 1
insert into FACTURE(num, client, date_etabli) values(
facture_seq.NEXTVAL,
2,
to_date('20122000','DDMMYYYY')
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
1,
1
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
2,
2
);
-- Facture 2
insert into FACTURE(num, client, date_etabli) values(
facture_seq.NEXTVAL,
2,
to_date('01012001','DDMMYYYY')
Pratique : Mdiathque
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Stphane Crozat
10
Pratique : Mdiathque
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
1,
2
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
3,
1
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
2,
2
);
-- Facture 3
insert into FACTURE(num, client, date_etabli) values(
facture_seq.NEXTVAL,
2,
to_date('17112004','DDMMYYYY')
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
1,
2
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
2,
4
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
3,
1
);
-- Facture 4
insert into FACTURE(num, client, date_etabli) values(
facture_seq.NEXTVAL,
3,
to_date('14012004','DDMMYYYY')
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
2,
1
);
insert into LIGNE_FACT(facture, produit, qte) values(
facture_seq.CURRVAL,
3,
1
);
-- Facture 5
10
Stphane Crozat
10
Pratique : Mdiathque
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Indice :
Excution de fichiers SQL (cf. Excution de fichiers SQL p 26)
Stphane Crozat
11
Pratique : Mdiathque
Pratique : Mdiathque
Question 1
[Solution n2 p 49]
crivez une requte SQL LMD pour calculer pour chaque produit, le nombre
d'articles vendus, tri par ordre dcroissant.
Indice :
Utilisez la fonction SUM applique la quantit sum(t.qte), la clause GROUP BY
pour faire les calculs par produit, et la clause ORDER BY pour le tri.
Question 2
[Solution n3 p 49]
Ecrivez une requte SQL LMD pour calculer les chiffres d'affaire par client, tris par
ordre dcroissant.
Indice :
Utilisez la fonction SUM applique au produit du prix et de la quantit
(sum(t1.prix*t2.qte)), la clause GROUP BY pour faire les calculs par client, et
la clause ORDER BY pour le tri.
Question 3
[Solution n4 p 49]
Ecrivez une requte SQL LMD pour calculer le montant moyen des factures pour
chaque client, tri par ordre croissant.
Indice :
Vous pouvez utiliser les sous-requtes dans la clause FROM pour traiter la
question en deux tapes.
Question 4
[Solution n5 p 50]
crivez deux requtes SQL LMD pour obtenir la liste des produits dont le prix est
maximal et dont le prix est minimal.
Indice :
Utilisez une sous-requte d'existence de type IN.
C. Vue
Le service aprs vente est instruit se comporter pragmatiquement vis vis
des clients, selon leur catgorie :
"client ordinaire" si son chiffre d'affaire est compris entre 50 et 500 euros,
Stphane Crozat
12
12
Stphane Crozat
12
Pratique : Mdiathque
Question 1
[Solution n6 p 50]
crivez la requte SQL LMD qui permet de renvoyer la liste des clients (num, nom
et prnom) avec leur chiffre d'affaire et leur catgorie (VIP, Ordinaire ou Potentiel)
Indice :
Utiliser l'extension SQL CASE WHEN d'Oracle :
SELECT CASE WHEN ... THEN
'X' WHEN ... THEN 'Y' ELSE 'Z' END
FROM ...
Question 2
[Solution n7 p 50]
crivez la requte SQL LDD qui cre la vue "Chiffre_Affaire" permettant de
rpondre au besoin des oprateurs du service aprs vente.
Question 3
[Solution n8 p 50]
Stphane Crozat
13
II -
Application
II
Employs Oracle
15
16
17
A. Employs Oracle
[30 minutes]
Crez sous Oracle
enregistrements.
1
la table
"emp"
dcrite
Pour chacune des questions suivantes, crivez le code SQL permettant de rpondre
la question sous Oracle.
Question 1
[Solution n9 p 50]
A partir de la table "emp", afficher le nom des employs ("ename") concatn avec
leur poste ("job") en les sparant par une virgule suivi d'une espace et donner
comme titre la colonne "EMPLOYE ET FONCTION"
Question 2
[Solution n10 p 51]
Afficher le nom et la date d'embauche ("hiredate") des employs embauchs entre
le 20 fvrier 1981, et 1 mai 1981. Classez le rsultat par date d'embauche.
Indice :
Attention l'utilisation du format "YY" qui pose des problme vis vis du
passage l'an 2000, prfrer le format "YYYY".
Question 3
[Solution n11 p 51]
Afficher le nom de tous les employs, dont le nom contient deux fois la lettre "L".
Question 4
[Solution n12 p 51]
Afficher le nom, poste et salaire ("sal') de tous les personnes qui ont comme poste
'Clerk' ou 'Analyst' et dont le salaire est diffrent de $1000, $3000, ou $5000.
Stphane Crozat
15
Application
Application
Question 5
[Solution n13 p 51]
Afficher le nom de chaque employ et calculer le nombre de mois qu'il a travaill
jusqu' ce jour (aprs l'avoir arrondi celui-ci la plus proche valeur entire).
Nommer la colonne MONTHS_WORKED.
Question 6
[Solution n14 p 51]
Film (mthode)
Soit la table
relationnel :
1
Film(#isan:char(33),titre:varchar2,debut:date,fin:date)
Question 1
[Solution n16 p 52]
crire une fonction duree permettant de retourner un nombre entier de jours entre
deux dates passes en argument.
Indice :
On pourra utiliser la conversion des dates en Julian day, c'est dire le nombre
de jours depuis le 01/01/-4712.
Stphane Crozat
16
to_date('20000101','YYYYMMDD'),'99999999')
16
Stphane Crozat
16
Application
Question 2
[Solution n17 p 52]
Crer en SQL une vue vFilm affichant tous les attributs de Film, avec une colonne
supplmentaire affichant la dure.
Film (mthode)
Question
Implmentez cette table en relationnel-objet sous Oracle
Stphane Crozat
17
Rappels
thoriques
III -
III
19
Rappels SQL
26
Rappels Oracle
35
42
Rappels Oracle RO
46
Stphane Crozat
19
Rappels thoriques
Rappels thoriques
Complment
Documentation en ligne disponible la mme adresse.
Stphane Crozat
20
20
Stphane Crozat
20
Rappels thoriques
Attention
Pour rafrachir la vue de gauche (catalogue) aprs une requte LDD, il faut faire un
clic droit sur l'lment du catalogue (par exemple Tables aprs une cration de
table) puis slectionner Rgnrer.
Stphane Crozat
21
Rappels thoriques
Rappels thoriques
Remarque
Pour effacer les rsultats d'excution prcdents, cliquer sur Effacer
Stphane Crozat
22
22
Stphane Crozat
22
Rappels thoriques
Stphane Crozat
23
Rappels thoriques
Rappels thoriques
Attention
Le bouton Excuter l'instruction n'affiche pas les erreurs d'excution ou les
confirmations de cration ou insertion (requtes CREATE, INSERT, UPDATE), il est
donc rserver aux requtes SELECT valides (si le rsultat n'est pas correct,
utiliser Excuter un script).
Conseil
Dans le doute utilisez toujours F5 et jamais F9.
Stphane Crozat
24
24
Stphane Crozat
24
Rappels thoriques
Stphane Crozat
25
Rappels thoriques
Rappels thoriques
Mthode
Pour excuter un fichier SQL ou PL/SQL utiliser la commande @fichier.sql
Exemple
1
2
3
: script.sql
@file1.sql
@file2.sql
@file3.sql
B. Rappels SQL
1. Fichier CSV
Dfinition : Fichier CSV
CSV est un format informatique permettant de stocker des donnes tabulaires
Stphane Crozat
26
26
Stphane Crozat
26
Rappels thoriques
Syntaxe
1
2
3
4
[NomColonne1;NomColonne2;...;NomColonneN]
ValeurColonne1;ValeurColonne2;...;ValeurColonneN
ValeurColonne1;ValeurColonne2;...;ValeurColonneN
...
Exemple
1
2
3
4
Pierre;Dupont;20;UTC;NF17
Pierre;Dupont;20;UTC;NF26
Paul;Durand;21;UTC;NF17
Jacques;Dumoulin;21;UTC;NF29
Exemple
1
2
3
4
5
Prenom;Nom;Age;Ecole;UV
Pierre;Dupont;20;UTC;NF17
Pierre;Dupont;20;UTC;NF26
Paul;Durand;21;UTC;NF17
Jacques;Dumoulin;21;UTC;NF29
Exemple
1
: Valeur nulle
Jacques;Dumoulin;;UTC;NF29
Attention : Variations...
La syntaxe des fichiers CSV n'est pas compltement standardise, aussi des
variations peuvent exister :
Les chanes de caractres peuvent tre protges par des guillemets (les
guillemets s'expriment alors avec un double guillemet).
...
Un des problme les plus importants reste l'encodage des caractres qui n'est pas
spcifi dans le fichier et peut donc tre source de problmes, lors de changement
d'OS typiquement.
Stphane Crozat
27
Rappels thoriques
Mthode
Rappels thoriques
Les fichiers CSV sont trs utiliss en BD pour changer les donnes d'une table
(export/import).
Les SGBD contiennent gnralement des utilitaires permettant d'exporter une
table ou un rsultat de requte sous la forme d'un fichier CSV, en spcifiant un
certain nombre de paramtres (caractre de sparation de valeur, caractre de fin
de ligne, prsence ou non d'une ligne de dfinition des noms des colonnes, etc.).
De mme ils proposent des utilitaires permettant d'importer un fichier CSV dans
une table (en spcifiant les mmes paramtres), voire de crer directement une
table partir du fichier CSV (quand les noms des colonnes sont prsents).
Complment
Les fichiers largeur de colonne fixe n'utilisent pas de sparateur de colonne, mais
imposent le mme nombre de caractres pour chaque cellule. L'avantage est de
ne pas avoir spcifier le caractre de sparation, l'inconvnient est la taille de
fichier suprieure si les valeurs ne font pas toutes la mme largeur.
Complment
: XML
Les fichiers XML tendent de plus en plus remplacer les fichiers CSV car ils
permettent d'tre beaucoup plus expressifs sur le schma d'origine. Ils sont
galement plus standards (encodage spcifi, principe de sparation des donnes
par les tags, etc.). Leur seul inconvnient est d'tre plus verbeux et donc plus
volumineux.
Complment
: Tables externes
Certains SGBD, comme Oracle, permettent de crer des tables dites externes, qui
autorisent de crer un schma de table directement sur un fichier CSV,
permettant ainsi un accs SQL standard un fichier CSV, sans ncessit de
l'importer d'abord dans une table.
2. Agrgats
Dfinition : Agrgat
Un agrgat est un partitionnement horizontal d'une table en sous-tables, en
fonction des valeurs d'un ou plusieurs attributs de partitionnement, suivi de
l'application d'une fonction de calcul chaque attribut des sous-tables obtenues.
Syntaxe
1
2
3
4
5
Exemple
1
2
Stphane Crozat
28
28
Stphane Crozat
28
Rappels thoriques
3
4
5
Cette requte calcul l'ge moyen du personnel pour chaque socit comportant plus
de 10 salaris.
Remarque : Restriction
Une restriction peut tre applique avant calcul de l'agrgat, au niveau de la clause
WHERE, portant ainsi sur la relation de dpart, mais aussi aprs calcul de l'agrgat
sur les rsultats de ce dernier, au niveau de la clause HAVING.
Attention : Projection
Si dans la clause SELECT, un attribut est projet directement, sans qu'une fonction
lui soit applique, alors il faut imprativement que cet attribut apparaisse dans la
clause GROUP BY (car ce ne peut tre qu'un attribut de partitionnement).
3. Cration de vues
Dfinition : Vue
Une vue est une dfinition logique d'une relation, sans stockage de donnes,
obtenue par interrogation d'une ou plusieurs tables de la BD. Une vue peut donc
tre perue comme une fentre dynamique sur les donnes, ou encore une requte
stocke (mais dont seule la dfinition est stocke, pas le rsultat, qui reste calcul
dynamiquement).
Une vue permet d'implmenter le concept de schma externe d'un modle
conceptuel.
Synonymes : Relation drive, Table virtuelle calcule
Syntaxe
1
2
29
Rappels thoriques
Rappels thoriques
c'est le nom des colonnes telle qu'elles sont renvoyes par la question, qui sera
utilis.
Exemple
1
2
3
4
La vue Employe est ici une projection de la relation Personne sur les attributs NSS
et Nom, renomms respectivement Id et Nom.
4. Transactions en SQL
Introduction
Le langage SQL fournit trois instructions pour grer les transactions.
Cette syntaxe est optionnelle (voire inconnue de certains SGBD), une transaction
tant dbute de faon implicite ds qu'instruction est initie sur la BD.
Cette instruction SQL signale la fin d'une transaction couronne de succs. Elle
indique donc au gestionnaire de transaction que l'unit logique de travail s'est
termine dans un tat cohrent est que les donnes peuvent effectivement tre
modifies de faon durable.
Stphane Crozat
30
30
Stphane Crozat
30
Rappels thoriques
Cette instruction SQL signale la fin d'une transaction pour laquelle quelque chose
s'est mal pass. Elle indique donc au gestionnaire de transaction que l'unit logique
de travail s'est termine dans un tat potentiellement incohrent et donc que les
donnes ne doivent pas tre modifies en annulant les modifications ralises au
cours de la transaction.
Remarque : Programme
Un programme est gnralement une squence de plusieurs transactions.
Exemple
Stphane Crozat
Traitement de chane
Concat, substr, length, insrt, lpad, trim
Lower, upper, initcap
Traitement de date
months_between, add_months, next_day, last_day,
SELECT sysdate FROM dual
Oprations mathmatiques sur les dates : SELECT sysdate + 10 FROM
dual
Traitement numrique
Round, Trunc
Floor, Ceil
Mod
Conversion
Conversion implicite
Conversion explicite : TO_DATE, TO_NUMBER, TO_CHAR
Gnrales
NVL (par exemple NVL(X,0) renvoie 0 si X vaut Null)
CASE WHEN condition1 THEN valeur1 WHEN condition2 THEN valeur2
ELSE valeur3 END
Imbrication de fonctions : F3(F2(F1(col,arg1),arg2),arg3)
31
Rappels thoriques
Rappels thoriques
Mthode
Les fonctions mono-ligne sont utilises pour :
...
Exemple
: Extraction de chane
Complment
Fonctions SQL1
Exemple
1
2
3
4
5
6
7
SELECT pknum,
CASE
WHEN type='C' THEN 'Cours'
WHEN type='TD' THEN 'Travaux dirigs'
END AS type_label,
debut
FROM tCours
1
2
3
4
PKNUM
----1
2
TYPE_LABEL
--------------Cours
Travaux dirigs
DEBUT
--------01-JAN-01
02-JAN-01
1 - http://docs.oracle.com/cd/B19188_01/doc/B15917/sqfunc.htm
Stphane Crozat
32
32
Stphane Crozat
32
Rappels thoriques
Exemple
1
2
3
4
PKNUM
----1
2
Exemple
1
2
TO_CHAR(DEBUT,'FMDAY')
---------------------monday
tuesday
3
4
1
2
3
4
5
DEBUT
--------01-JAN-01
02-JAN-01
08-JAN-01
Complment
TO_CHAR(date)2 ; TO_CHAR(date)3
TO_CHAR(number)4
TO_DATE(char)5 ; TO_DATE(char)6
Formatage7
Syntaxe
1
2
3
4
5
6
7
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions180.htm
http://www.techonthenet.com/oracle/functions/to_char.php
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions181.htm
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm
http://www.techonthenet.com/oracle/functions/to_date.php
http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm
Stphane Crozat
33
Rappels thoriques
2
3
4
5
Rappels thoriques
(SELECT ...
FROM ...
WHERE ...)
WHERE ...
Mthode
Cette extension est particulirement utile pour les calculs dagrgat aprs filtrage
ou pour enchaner les calculs dagrgat (par exemple pour faire la moyenne de
comptage aprs regroupement).
Exemple
1
Exemple
semaine
1
2
3
4
C. Rappels Oracle
1. Accs inter-schmas
Un schma Oracle correspond au sein d'une base de donnes (instance Oracle) un
espace isol comportant toutes les tables appartenant d'un utilisateur du SGBD.
Ainsi chaque utilisateur possde un schma.
Stphane Crozat
34
34
Stphane Crozat
34
Rappels thoriques
Pour simplifier on pourrait plutt dire qu'une base Oracle est en fait une collection
de BD et qu'un schma est une BD.
Lorsqu'un utilisateur se connecte il se connecte gnralement dans son propre
schma. Il lui est nanmoins possible de travailler sur les tables d'autres schmas,
condition d'avoir les droits associs bien entendu.
Instance Oracle
sch1
tab2
tab1
tab3
sch2
sch3
Rownum
La restriction ROWNUM <= N dans la clause WHERE permet filtrer les N premires
lignes de la table.
Remarque
rownum est une pseudo colonne qu'il est bien entendu possible de projeter : SELECT
rownum FROM ...
Cette syntaxe permet de slectionner une fentre sur les donnes et pas seulement
les N premires lignes.
Mthode
Lorsque l'on est en prsence de gros volumes de donnes, et que l'on veut se faire
une ide du contenu de ces donnes, il n'est pas souhaitable de faire un simple
SELECT *. En il serait trop long de rapatrier les dizaines de milliers de lignes et de
Stphane Crozat
35
Rappels thoriques
Rappels thoriques
plus cela serait inutile puisque seules quelques unes seraient effectivement lues.
L'usage de rownum permet de s'intresser des fentres de donnes
reprsentatives, pour se faire une ide gnrale.
3. Dictionnaire de donnes
Rappel
Le dictionnaire des donnes contient la description des objets crs et maintenus
par le serveur Oracle.
SELECT
SELECT
SELECT
SELECT
...
*
*
*
*
FROM
FROM
FROM
FROM
user_tables;
user_sequences;
user_views;
user_procedures;
describe nom_objet
Complment
Exemple
catalogue
1
2
1
2
3
4
5
6
7
8
9
10
11
12
Stphane Crozat
36
Null
-------NOT NULL
NOT NULL
Type
-----------NUMBER(4)
NUMBER(2)
VARCHAR2(50)
NOT NULL CHAR(2)
NOT NULL VARCHAR2(20)
36
Stphane Crozat
36
Rappels thoriques
13
14
DEBUT
FIN
DATE
DATE
Mthode
Pour excuter un fichier SQL ou PL/SQL utiliser la commande @fichier.sql
Exemple
1
2
3
: script.sql
@file1.sql
@file2.sql
@file3.sql
Stphane Crozat
37
Rappels thoriques
Rappels thoriques
Remarque
Pour effacer les rsultats d'excution prcdents, cliquer sur Effacer
Stphane Crozat
38
38
Stphane Crozat
38
Rappels thoriques
Attention
Le bouton Excuter l'instruction n'affiche pas les erreurs d'excution ou les
confirmations de cration ou insertion (requtes CREATE, INSERT, UPDATE), il est
donc rserver aux requtes SELECT valides (si le rsultat n'est pas correct,
utiliser Excuter un script).
Conseil
Dans le doute utilisez toujours F5 et jamais F9.
6. SQL*Plus
Dfinition : SQL*Plus
SQL*Plus est un client Oracle basique en mode texte, qui n'est plus vraiment
utilis (on utilise Oracle SQL Developer la place).
SQL*Plus dsigne aussi un langage interne Oracle destiner grer la
prsentation des rsultats de requtes en mode texte (tats textuels).
Complment
Oracle SQL Developer utilise galement SQL*Plus mais ne supporte pas toutes les
fonctions.
http://www.oracle.com/technetwork/developer-tools/sql-developer/sql-worksheetcommands-097146.html
Stphane Crozat
39
Rappels thoriques
Mthode
Rappels thoriques
: Usages
Attention
SQL*PLus ne travaille ni sur le contenu ni sur la structure, uniquement sur la
prsentation.
a) Variables d'environnement
Syntaxe
SQL*Plus permet de fixer la valeur de variables d'environnement avec la
commande :
1
SHOW param
Exemple
1
Complment
http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12040.htm
@path/filename
SPOOL path/filename
-- requtes dont on veut rcuprer les rsultats dans le fichier
SPOOL OFF
Complment
Cration d'un fichier CSV avec SQL*Plus (cf. Cration d'un fichier CSV avec
SQL*Plus)
Stphane Crozat
40
40
Stphane Crozat
40
Rappels thoriques
Largeur de la colonne : An
Symboles montaires : $ / L
...
Exemple
1
2
3
[Declare]
Variables, curseurs, etc.
Begin
Instructions SQL et PL/SQL
[Exception]
Gestion d'erreur.
End ;
/
Attention : /
Un bloc PL/SQL est termin par un ; comme une instruction SQL.
Par ailleurs, dans les environnements d'excution Oracle (comme SQL*Plus, SQL
Developer...), il est ncessaire de sparer les blocs par un "/" (sur une nouvelle
ligne).
Une bonne habitude est donc de terminer les bloc PL/SQL par des "/".
Complment
http://stackoverflow.com/questions/3024418/two-plsql-statements-with-beginand-end-run-fine-seperately-but-not-together
Stphane Crozat
41
Rappels thoriques
Rappels thoriques
Syntaxe : Procdure
1
2
3
4
5
6
7
8
Exemple
1
2
3
4
5
6
: Procdure
Syntaxe : Fonction
1
2
3
4
5
6
7
8
9
10
FUNCTION nom_func
RETURN type_retourn
IS
...
BEGIN
...
RETURN valeur;
[EXCEPTION]
...
END ;
Exemple
1
2
3
4
5
6
7
8
: Fonction
Attention
Le type de retourn par une fonction ne doit pas spcifier de taille :
RETURN varchar
http://docs.oracle.com/cd/B13789_01/server.101/b10759/statements_5009.htm
Syntaxe : Anonyme
1
2
3
Stphane Crozat
42
[DECLARE]
...
BEGIN
42
Stphane Crozat
42
Rappels thoriques
4
5
6
7
...
[EXCEPTION]
...
END ;
Exemple
1
2
3
4
5
6
: Script anonyme
3. Affichage l'cran
Syntaxe
1
SET SERVEROUTPUT ON
1
2
3
BEGIN
DBMS_OUTPUT.PUT_LINE ('Hello World');
END;
Stphane Crozat
43
Rappels thoriques
Rappels thoriques
Stphane Crozat
44
44
Stphane Crozat
44
Rappels thoriques
E. Rappels Oracle RO
1. Dclaration des types utilisateurs en SQL3
(extension au LDD)
Syntaxe : Dclaration de type
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Stphane Crozat
45
Rappels thoriques
Rappels thoriques
Il est possible, sur une table ainsi dfinie, de spcifier les mmes contraintes que
pour une table cre avec une clause CREATE TABLE (contraintes de table). Ces
contraintes doivent tre spcifies au moment de la cration de la table, et non au
moment de la cration du type (bien que la dfinition de type permet de spcifier
certaines contraintes, comme NOT NULL).
Fondamental : OID
Les enregistrements d'une table-objet peuvent tre identifis par un OID
Fondamental : Mthodes
Des mthodes peuvent tre associes une table-objet.
Complment
: Hritage
Stphane Crozat
46
46
Stphane Crozat
46
Rappels thoriques
Exemple
1
2
3
4
5
6
7
8
9
10
Attention
L'utilisation d'un alias est obligatoire pour accder aux mthodes.
Exemple
1
2
3
4
5
6
7
8
9
10
11
4. Mthodes et SELF
SELF
Lorsque l'on crit une mthode on a gnralement besoin d'utiliser les attributs
propres (voire d'ailleurs les autres mthode), de l'objet particulier que l'on est en
train de manipuler.
On utilise pour cela la syntaxe SELF qui permet de faire rfrence l'objet en
cours.
Stphane Crozat
47
Rappels thoriques
Rappels thoriques
Syntaxe : SELF
1
2
self.nom_attribut
self.nom_mthode(...)
Exemple
1
2
3
4
5
6
7
8
9
10
Exemple
1
2
3
4
5
Stphane Crozat
48
48
Stphane Crozat
48
Solution des
exercices
> Solution n1 (exercice p. 7)
1
2
3
4
5
6
-- mediatheque.sql
@create.sql
@insert1.sql
@insert2.sql
@insert3.sql
COMMIT;
Stphane Crozat
49
1
2
3
Stphane Crozat
1
2
1
2
3
4
EMPLOYE ET FONCTION
------------------KING, PRESIDENT
BLAKE, MANAGER
50
50
Stphane Crozat
50
CLARK, MANAGER
SELECT ename
FROM emp
WHERE ename LIKE '%L%L%';
SELECT
ename||' gagne '
|| TO_CHAR(sal, 'fm$99,999.00')
|| ' par mois mail il veut '
|| TO_CHAR(sal * 3, 'fm$99,999.00')
|| '.' "SALAIRES DE REVES"
FROM emp;
Stphane Crozat
51
ROUND(MIN(sal),0) "Minimum",
ROUND(SUM(sal),0) "Sum",
ROUND(AVG(sal),0) "Average"
FROM emp;
Stphane Crozat
52
52
Stphane Crozat
52
Signification des
abrviations
-
BD
CSV
LCD
LDD
LMD
MCD
MLD
OID
OS
SGBD
SGBDR
SQL
XML
Stphane Crozat
Base de Donnes
Comma Separated Values
Langage de Contrle de Donnes
Langage de Dfinition de Donnes
Langage de Manipulation de Donnes
Modle Conceptuel de Donnes
Modle Logique de Donnes
Object Identifier
Operating Systme (Systme d'Exploitation)
Systme de Gestion de Bases de Donnes
Systme de Gestion de Bases de Donnes Relationnelles
Structured Query Language
eXtensible Markup Language
53
Bibliographie
[Abbey01] ABBEY MICHAEL, COREZ MICHAEL, ABRAMSON IAN, Oracle 9i : Notions fondamentales,
CampusPress, 2001.
Stphane Crozat
55
Webographie
Stphane Crozat
57