Professional Documents
Culture Documents
sous Oracle
Le SGBDR Oracle
2
Présentation des SGBDR
Bases de données
Une base de données est un ensemble de
données :
représentant une partie du monde réel
stockées en mémoire secondaire
pouvant être interrogées et mises à jour
servant de support à une ou plusieurs applications
4
Bases de données
Une collection de données est appelée base de
données si:
format connu (défini au niveau du système et non
uniquement au niveau des programmes utilisant les
données) et défini par des méta-données
(données décrivant des données)
Données stockées, recherchées, modifiées
uniquement par un type spécial de programmes
appelé système de gestion de bases de
données
Données manipulées sous le contrôle de
transactions (ensemble de règles formelles
assurant l’intégrité des données
5
Système de gestion de
bases de données (SGBD)
Un SGBD est un ensemble de logiciels-système
permettant aux utilisateurs de:
mettre en forme
sauvegarder,
mettre à jour (modifier, insérer, supprimer)
rechercher
efficacement des données spécifique dans une
très grande masse d’informations partagées
entre plusieurs utilisateurs
6
Fonctionnalités d’un SGBD (1)
Contrôler la redondance d'informations
Partage des données
Fiabilité des données
Cohérence et contraintes d’intégrité
Sûreté du fonctionnement
Notion de transaction atomique
Techniques de sauvegarde et/ou de journalisation
Procédures de reprise sur panne
7
Fonctionnalités d’un SGBD (2)
Sécurité d’accès
commandes d’autorisation
Partage et accès concurrents
techniques de verrouillage
Interrogation : langages de requêtes
déclaratifs et incomplets
→ intégration du langage de requête et d’un langage
de programmation
→ dysfonctionnements (typage et traitement
ensembliste)
8
Le SGBDR Oracle
Généralités (1/3)
10
Généralités (2/3)
Intégrité
Définition des contraintes d’intégrité du modèle relationnel
Confidentialité
Privilège
Rôle : ensemble de privilèges pouvant être attribués à un groupe
d’utilisateurs
Vue
Concurrence d’accès
Verrouillage = mode de réservation qui consiste à interdire l’accès
à une partie de données pendant que celle-ci est utilisée par une
unité de traitement
Plusieurs utilisateurs peuvent accéder aux mêmes données
simultanément
11
Généralités (3/3)
12
Architecture d’Oracle
Utilitaires PL/SQL
d’administration Outils de
SQL développement
SQL*DBA d’applications
SQL*Loader Dictionnaire SQL*Plus
Import/Export
Developer 2000
Noyau Précompilateurs
Outils décisionnels (SQL*xxx)
de données
Easy*SQL
SQL*Calc
Oracle for 1-2-3
14
Architecture d’Oracle
Noyau
Fonctions particulières
− Optimisation de l’exécution des requêtes
− Gestion des accélérateurs
− Stockage physique des données
15
Architecture d’Oracle
Dictionnaire de données
16
Architecture d’Oracle
Couche SQL
17
Architecture d’Oracle
Couche PL/SQL
18
Outils d’Oracle
Outils de développement d’applications
3 outils de développement :
− SQL*xxx : précompilateurs
19
Outils d’Oracle
Outils de développement d’applications
SQL*Plus
20
Outils d’Oracle
Outils de développement d’applications
Developer 2000
21
Outils d’Oracle
Outils de développement d’applications
Précompilateurs
Code C Librairie
Code C & SQL Précompilateur & fonctions Oracle
Compilateur C
Exécutable
22
Outils d’Oracle
Outils d’administration
3 outils d’administration :
23
Outils d’Oracle
Outils d’administration
SQL*DBA
24
Outils d’Oracle
Outils d’administration
SQL*Loader & Import/Export
25
LE LANGAGE SQL
27
Syntaxe complète de
l’interrogation
SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS <alias>]}
|*
FROM <table1 [var1], table2 [var2] …>
[WHERE < condition de sélection >]
[GROUP BY <colonne1 , colonne2…>
[HAVING <critères_regroupement>] ]
[{UNION | INTERSECT | MINUS} (SELECT …)]
[ORDER BY <colonne1 [ASC | DESC], …>]
28
Ligne SELECT
SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS <alias>]} | *
colonne :
soit nom_att (si pas d'ambiguïté sur ce nom),
soit nom_table.nom_att,
soit var_table.nom_att,
soit * (toutes les colonnes),
soit nom_tab.*
soit var_tab.*
29
Ligne SELECT
SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS
<alias>]} | *
calcul :
soit expression sur des colonnes avec des opérateurs : +, -, *, /
éventuellement avec (), ou || (concaténation de chaînes de
caractères)
soit des fonctions simples sur une valeur ou agrégats sur un
ensemble de valeurs (ex: SUM (somme), AVG (moyenne) des
valeurs d‘une colonne, COUNT (compte les n-uplets))
soit la combinaison des expressions, fonctions simples et
agrégats (ex: MIN, MAX d‘une expression sur des colonnes)
alias : si mentionné, alias est le nom de la colonne dans le
résultat de la requête.
30
Ligne FROM
FROM <table1 [var1], table2 [var2] …>
table1 :
soit un nom de table,
soit un nom de table préfixé du compte du
propriétaire
var1 : variable (alias) attribuée à table1 durant
la requête
31
Ligne WHERE (Optionnelle)
[WHERE <condition de sélection>]
32
Ligne GROUP BY (Optionnelle)
[GROUP BY <colonne1 , colonne2…>
[HAVING <critères_regroupement>] ]
colonnes : attributs de regroupement
objectif : partitioner horizontalement la relation
selon les valeurs de certaines colonnes, appliquer
ensuite une fonction agrégat (sur d'autres colonnes)
aux partitions
• Ligne HAVING (Optionnelle après regroupement)
critère_regroupement :
fonction_agrégat([DISTINCT] colonne) comparateur {valeur |sous-
requête}
33
Opérations ensemblistes
UNION : effectue l’union des n-uplets de deux relations
34
Ligne ORDER BY (optionnelle)
[ORDER BY <colonne1 [ASC | DESC], …>]
35
LE LANGAGE SQL
column est la liste des colonnes qui vont recevoir les valeurs
insérées.
VALUES est utilisé lorsqu’une ligne de données est insérée. Les
38
UPDATE
L’instruction UPDATE est utilisée pour changer des lignes existantes dans
la base de données.
La syntaxe de l’instruction UPDATE est
UPDATE schema.table SET column(s) = expr sub query WHERE condition
Avec:
schema est un paramètre optionnel pour identifier le schéma de base de
données utilisé pour la mise à jour. Par défaut, il s’agit du schéma de l’utilisateur.
table est obligatoire et est le nom de la table.
SET est un mot clé obligatoire réservé.
column est une liste de colonnes qui vont recevoir les valeurs mises à jour.
expr est la nouvelle valeur à affecter.
sub query est une instruction SELECT qui va extraire les nouvelles valeurs des
données.
WHERE est optionnel et est utilisé pour restreindre les lignes qui vont être mises
à jour.
39
Exemple UPDATE
UPDATE emp
SET last_name = ’DOE’,
first_name = ’JOHN’
WHERE dept_no = 30;
40
DELETE
L’instruction DELETE est utilisée pour retirer des
lignes de la base de données.
La syntaxe de DELETE est :
DELETE FROM schema.table WHERE condition
Avec:
SCHEMA est un paramètre optionnel pour identifier
le schéma de base de donnée utilisé pour le
DELETE. Par défaut il s’agit du schéma de
l’utilisateur.
TABLE est obligatoire et est le nom de la table.
WHERE restreint l’opération DELETE.
41
Exemple DELETE
DELETE FROM addresses
WHERE adrs_id = (SELECT e.adrs_id
FROM emp e
WHERE e.last_name = ’DOE’ AND e.first_name = ’JOHN’);
DELETE FROM emp e
WHERE e.last_name = ’DOE’ AND e.first_name = ’JOHN’
DELETE FROM dept
WHERE adrs_id is null;
Remarque : Une opération de suppression est permanente ! Une
fois faite, il est Impossible de récupérer la ou les ligne(s)
autrement que par une opération INSERT. Il n’y a pas de
commande undo.
42
LE LANGAGE SQL
44
Création de table (2)
Contrainte de colonne ::=
[CONSTRAINT contrainte]
{ [NOT] NULL | {UNIQUE | PRIMARY KEY}
REFERENCES table [(colonne)] [ON DELETE CASCADE]
|CHECK (condition)}
{ [USING INDEXUSING [PCTFREE entier] [INITTRANS entier]
[TABLESPACE tablespace]
[STORAGE clause_storage]] [EXCEPTION INTO table | DISABLE}
45
Création de table (3)
CONSTRAINT sert à attribuer un nom à la contrainte à définir qui sera
sauvegardé dans le dictionnaire de données
UNIQUE interdit d’avoir deux lignes ayant la même valeur pour cette
colonne.
PRIMARY KEY spécifie que la colonne est utilisée comme clé primaire.
Même effet que UNIQUE sauf qu’elle n’accepte pas les valeurs nulles.
46
Création de table (4)
Contrainte d’intégrité d’une table ::=
[CONSTRAINT contrainte]
{ UNIQUE | PRIMARY KEY} (colonne [,colonne]…)
| FOREIGN KEY (colonne, [colonne]…)
REFERENCES table [(colonne)] [ON DELETE CASCADE]
| CHECK (condition)}
{ [USING INDEXUSING [PCTFREE entier] [INITTRANS entier]
[TABLESPACE tablespace]
[STORAGE clause_storage]] [EXCEPTION INTO table | DISABLE}
47
Création de table (5)
1- La table Client définit une clé primaire sur la colonne idclient, une
contrainte NOT NULL sur la colonne nom et une contrainte CHECK sur
la colonne codepost.
CREATE TABLE client
(
idclient NUMBER CONSTRAINT u_id PRIMARY KEY,
nom CHAR(20) CONSTRAINT nn_nom NOT NULL,
adresse CHAR(80),
codepost NUMBER(5) CHECK (codepost BETWEEN
10000 AND 95999),
ville CHAR(20),
tel NUMBER(8)
);
48
Création de table (6)
2- La table article définit deux contraintes PRIMARY KEY et NOT NULL
resp sur les colonnes idarticle et designation. Elle affecte une valeur par
défaut égale à 0 pour la colonne qtestock.
49
Création de table (7)
2- Création d’une table ligne de commande nommée ligne_com en définissant les
contraintes d’intégrité suivante:
Une clé étrangère sur la colonne idarticle qui se réfère à idarticle de la table article.
Deux contraintes sur la colonne qtecom. La première n’autorise pas la saisie des valeurs
nulles et la seconde contrôle que la valeur saisie doit être supérieure à 0.
Une clé primaire composée des deux colonnes numcom et nuligne.
CREATE TABLE ligne_com
(
numcom NUMBER
nuligne NUMBER
idarticle NUMBER CONSTRAINT fk_ida REFERENCES
article(idarticle),
qtecom NUMBER CONSTRAINT nn_qte NOT NULL
CONSTRAINT check_qte CHECK (qtecom>0),
PRIMARY KEY (numcom, nuligne)
);
50