SGBD - Oracle
SGBD - Oracle
SGBD - Oracle
Cours BD
LF2 info
Plan
• Chapitre I :Rappel
– Définition d’une BD
– Définition d’un SGBD
– Présentation du SGBD Oracle
• Chapitre II : Langage de base d’Oracle
– Langage de définition de données : LDD
– Langage de manipulation de données : LMD
– Langage de contrôle de données : LCD
• Chapitre III : Langage procédural : PL/SQL
– Introduction à PL/SQL
– Les structures de contrôle
– Interaction avec Oracle
Base de Données
• Définition de Base de Données
– Une Base de Données (BD)
Est un ensemble de données structurées modélisant
un univers précis et accessible à plusieurs
utilisateurs en même temps.
• Objectifs de Base de Données
– Élimination de la redondance des données.
– Indépendance entre les programmes et les
données : on peut isoler le niveau utilisation
(application) de l'organisation physique de données.
– Intégration de données : intégration de toutes les
données de l'entreprise dans un réservoir unique de
données.
Définitions de Système de Gestion
de Base de Données
• Un Système de Gestion de Base de Données
(SGBD)
– Est un ensemble de programmes qui permettent à
l'utilisateur d’une Base de Données
• de la créer (LDD : Langage de Définition de Données),
• de la manipuler (LMD : Langage de Manipulation de données)
• et de la contrôler (LCD : Langage de Contrôle de Données).
PL/SQL
SQL
Dictionnaire
Noyau
de données
Le modèle relationnel
• Introduction
Il consiste à percevoir l'ensemble de données comme des tableaux où
chaque table représente une relation, au sens mathématique
d'ensemble. L'ensemble des valeurs des tableaux représente le contenu
de la base de données. Ce contenu peut être modifié en ajoutant des
lignes, en supprimant des lignes ou en modifiant le contenu des lignes.
• Définitions
– Modèle : une représentation du monde réel. Cette représentation doit être
simple et fiable.
– Domaine : un ensemble de valeurs caractérisées par un nom.
Ex. : Domaine (couleurs) = {bleu, rouge, blanc, …}
: Domaine (noms) = {ali, salah, …}
– Relation : est un ensemble d'enregistrements.
– Enregistrement = n-uplet = tuple : une séquence ordonnées
d'informations.
Le modèle relationnel
– Degré d’une relation : c’est le nombre de colonne (domaines)
dans une relation
Ex. Degré de PRODUIT=3
Domaine
Le modèle relationnel
• Caractéristiques des relations
– Attribut : nom d'une colonne d'une relation.
Ex.
NUM_PDT
DES_PDT attributs de la relation PRODUIT.
COUL_PDT
– Schéma de relation : nom de la relation suivi de la liste des attributs et
de la définition de leurs domaines
Ex. : PRODUIT (NUM_PDT, DES_PDT, COUL_PDT)
– Clé primaire : un attribut (ou plusieurs) permettant d'identifier d'une
façon unique un tuple d'une relation. Cet attribut doit avoir toutes ses
valeurs différentes dans la relation R.
Ex. : PRODUIT (NUM_PDT, DES_PDT, COUL_PDT)
ETUDIANT (NUM_ET, NOM_ET, DATNAIS_ET, ADR_ET)
Le modèle relationnel
– Clé étrangère : soit la relation R1 (A, B, …, S, …).
On dit que S est une clé étrangère de R1 s'il y a une relation R2 ayant pour
clé primaire S.
Ex. : PRODUIT (NUM_PDT, DES_PDT, COUL_PDT, #NUM_MAG)
MAGASIN (NUM_MAG, ADR_MAG, TEL_MAG)
=> si on connaît la clé primaire d'un produit, on dispose des informations
concernant ce produit ainsi que celles du magasin où il est stocké.
– Contraintes d'intégrité
Une Contrainte d'Intégrité (CI) est une règle qui doit être vérifiée au
moment de la création et de la manipulation de données afin que le résultat
soit considéré correct et cohérent. A tout instant de l'existence d'une BD, on
doit pouvoir ajouter, modifier ou supprimer une contrainte d'intégrité et le
SGBD doit être capable de vérifier que la base est toujours cohérente vis à
vis du changement apporté à son environnement; dans le cas contraire, il
doit rejeter notre intervention.
Le modèle relationnel
• Il existe plusieurs types de contraintes d'intégrité :
– Unicité de la clé d'une relation
– CI individuelles :
Ex. : 200 SALAIRE 10000
QTE_STK QTE_SEUIL
– CI intra-relation (dans la relation) : il s'agit des contraintes entre
les champs d'une même relation.
Ex. : SALAIRE 2 * Moyenne (SALAIRE).
– CI inter-relations (entre les relations) : on les trouve
généralement dans les clés étrangères.
Ex. : QTE_STK QTE_CDE
– Les contraintes dynamiques : elles concernent le passage de la
base de données d'un état à un autre.
Ex. : si on met à jour la table EMPLOYE (SALAIRE),
• Il faut que Nouveau_SALAIRE Ancien_SALAIRE.
Chapitre II :
Langage de base d’Oracle
Syntaxe :
CREATE TABLE nom_table
(col1 type [(taille)] [default ValeurParDefaut] [null / not null] [contrainte de
colonne] ,
col2 type [(taille)] [default ValeurParDefaut] [null / not null] [contrainte de
colonne],
coln type [(taille)] [default ValeurParDefaut] [null / not null] [contrainte de
colonne]
[contrainte de tables]);
• Définition des colonnes :
• La taille indique la valeur maximale de la longueur du champ.
• Les types de données possibles sont :
– NUMBER : stocke les nombres en général entiers positifs et négatifs.
– NUMBER(n) ou NUMBER(n,m)
• n : varie de 1 à 38 et indique le nombre maximum des chiffres à stocker. C'est la
précision.
• m : indique le nombre de chiffres situés à droite de la virgule si m est positive et à
gauche si m est négative. Ex. 3,345 ou -123,456
– DECIMAL : stocke des nombres à fraction décimale fixe et permet au
système d'être compatible avec d'autres BD relationnelles (surtout
SQL/DS et DB2).
– FLOAT : stocke des nombres en virgule flottante.
• CHAR : stocke des chaînes comportant au maximum 255 caractères
dans une colonne de longueur fixe : CHAR(n). Si on ne spécifie pas
la longueur : CHAR, une colonne de ce type ne stocke qu'un seul
caractère.
• VARCHAR / VARCHAR2 : le deuxième type remplace le premier.
Il stocke jusqu'à 4000 caractères dans une seule colonne pour des
chaînes de longueur variable.
• LONG : donnée de type caractère variable allant jusqu'à 2 G.
Mais on ne peut pas employer de fonctions intégrées ni d'opérateurs
avec ce type (pour chercher ou modifier le contenu d'une colonne de
ce type). On peut stocker et récupérer ces données mais pas les
manipuler. En plus ce type de données ne peut être utilisé qu'une
seule fois dans une table avec la version 7 d'Oracle.
• DATE : permet de stocker des informations concernant les dates et
les heures.
Exemple : Créer la table Produit ayant comme
schéma :
Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix)
Avec
Numprod : de type numérique de taille 6,
Desprod : de type caractère variable de taille 15,
Couleur : de type caractère sur une position,
Poids : de type numérique sur huit positions dont trois chiffre après la
virgule,
Qte_stk : de type numérique sur sept positions dont trois chiffres après
la virgule,
Qte_seuil : de type numérique sur sept positions dont trois chiffres
après la virgule,
Prix : de type numérique sur dix positions dont sept chiffres avant la
virgule.
Solution
CREATE TABLE Produit
(Numprod number(6) not null,
Desprod varchar(15),
Couleur char,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3));
Définition des contraintes
• Une contrainte d'intégrité est une règle qui définit la cohérence d'une
donnée ou d'un ensemble de données de la base de données.
• Les contraintes définies par SQL sont :
• Non nullité des valeurs d'un attribut : L'utilisateur est obligé de
saisir la valeur de l'attribut. La commande est : NOT NULL
• Unicité de la valeur d'un attribut ou d'un groupe d'attributs : la
valeur doit être unique. La commande est : UNIQUE
• Exemple
• On suppose que deux produits différents ne peuvent pas avoir la
même désignation. La commande de création da la table produit
devient :
Exemple
CREATE TABLE Produit
(Numprod number(6) not null,
Desprod varchar(15) unique,
Couleur char,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3));
Définition des contraintes
• Clé primaire (un attribut ou un groupe) : indique que
l'attribut est une clé primaire. Elle peut être définie comme
contrainte de table ou comme contrainte de colonne.
• Clé primaire comme contrainte de table selon la syntaxe :
• CONSTRAINT nom_contrainte PRIMARY KEY(att1,
att2,…, attn) ;
Remarque
Dans le cas de clé primaire multiple, la clé primaire doit être créée comme contrainte
de table.
Définition des contraintes
• Clé étrangère (intégrité référentielle) : lorsque la clé primaire
figure dans une autre table en tant qu'un attribut non clé. La clé
étrangère peut être définie comme contrainte de table ou comme
contrainte de colonne.
• Clé étrangère comme contrainte de table selon la syntaxe :
CONSTRAINT nom_contrainte FOREIGN KEY(nom_att)
references nom_table(nom_att);
• Clé étrangère comme contrainte de colonne : en ajoutant devant
la colonne clé étrangère references nom_table(nom_att),
• Remarque :
Il est impossible de créer une clé étrangère si la clé primaire
associée n'existe pas.
Définition des contraintes
• Types de CI Oracle :
– NULL / NOT NULL : niveau colonne
– 1. UNIQUE (colonne1 [, colonne2] …)
– 2. PRIMARY KEY (colonne1 [, colonne2] …)
– 3. FOREIGN KEY (colonne1 [, colonne2] …)
REFERENCES nomTablePere (colonne1 [, colonne2]
…) [ON DELETE {CASCADE | SET NULL }]
– 4. CHECK {condition}
• Les 4 dernières CI sont définissables au niveau
colonne ou au niveau table.
Exemple
• Si on considère le schéma suivant :
MAGASIN(NumMag, Adresse, Surface)
PRODUIT(NumProd, DesProd, Couleur, Poids, Qte_Stk,
#CodMag)
• La commande pour la création de la table Magasin étant :
Create Table Magasin
(NumMag number(6) primary Key,
Adresse varchar(30),
Surface number(7,3));
• La commande pour la création de la table Produit peut être
écrite de deux façons:
Solution 1: clé étrangère comme contrainte de table
• Remarque :
Pour modifier le nom d'une colonne :
RENAME COLUMN nom_table.ancien_nom TO nom_table.nouveau_nom
;
• Exemple :
Supposons qu'on veut changer le type_clt de char(3) en char(5) :
ALTER TABLE CLIENT
MODIFY type_clt char(5) default ‘Monas’;
3ème forme : Suppression de colonnes
existantes
• Syntaxe :
ALTER TABLE nom_table
DROP ( col1 , col2 ,…, coln ) ;
• Exemple :
Supposons qu'on veut supprimer le champ ville de la table Magasin :
ALTER TABLE Magasin
DROP ville ;
4ème forme : Ajout d'une contrainte
• Syntaxe :
ALTER TABLE nom_table
ADD Constraint Def_de_contrainte ;
• Exemple :
Ajouter à la relation Magasin la contrainte suivante :
la surface doit être comprise entre 10 et 100 m2
ALTER TABLE Magasin
ADD Constraint ck1_magasin check(surface between
10 and 100) ;
5ème forme : Suppression de contraintes
existantes