Académique Documents
Professionnel Documents
Culture Documents
Edition EYROLLES
CVD-2020
-----
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
1
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
REMERCIEMENT
2
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
INTRODUCTION
Le document «LES BASES DE DONNEES ET LE SQL » détaille toutes les
pratiques culturales liées à la gestion des Bases de données. Il propose
essentiellement des substances actives soutenues et de résidus nécessaires
permettant au jeune étudiant de mieux appréhender les enseignements des
Bases de données Relationnelles. Ce support de cours très accessible permet de
se familiariser avec les schémas relationnels, leur élaboration et leur
normalisation et permet de bien comprendre le langage SQL, y compris dans
ses extensions récentes. Il regroupe les instructions SQL basiques qui
permettent de mettre en place une
base de données sur un serveur Oracle, de la remplir et de l’interroger. Ce
document, volontairement succinct, peut servir d’aide mémoire des
commandes SQL essentielles, et évitant ainsi la (re)-lecture du manuel
utilisateur ou de tout autre ouvrage volumineux sur Oracle ou sur les Bases de
données en général.
Cependant les remarques et les corrections d'erreurs peuvent être envoyées par courrier
électronique à l'adresse essonoza@gmail.com ou polozue@yahoo.fr , en précisant le
sujet «LES BASES DE DONNEES ET LE SQL » et la version du document.
3
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
LES OBJECTIFS
Tout au long de ce document, les différents concepts sont appuyés par des
exemples illustratifs, notamment à la fin de chaque partie, un exercice de
synthèse est proposé et corrigé.
4
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
HISTORIQUE
Jusqu’aux années 60 les données sont gérées dans des fichiers. Les données
des fichiers sont alors décrites dans les programmes informatiques, et la
multiplication des fichiers entraînait la redondance de données, ce qui rendait
difficile les mises à jour. On introduit l'idée d'intégration et de partage des
données. Il fallait alors combler les lacunes des systèmes de fichiers et faciliter
la gestion qualitative et quantitative des données informatiques. Il a donc fallu
envisager un système compréhensible et utilisable par les êtres humains : Le
système devait alors proposer un langage. C’est en 1970 que Ted Codd, un
Chercheur d’IBM eu l’idée d’adapter la logique Mathématique du 1er Ordre
développée à la fin du 19e siècle pour définir le modèle relationnel comme un
modèle de gestion de données. Dans le modèle relationnel, les données sont
organisées en tableaux à deux dimensions que nous appellerons des relations.
Le Modèle Relationnel des bases de données de Codd, est celui qui a connu le
plus grand essor depuis ces dernières années, et qui reste encore aujourd'hui la
plus utilisé de tous. Pour implémenter les Bases de données relationnelles on a
mis en place des Systèmes de gestion des Bases de Données Relationnelles
(SGBDR). Et le langage SQL est le langage commun à tous les SGBDR, ce qui
permet de concevoir des bases de données relativement indépendamment des
systèmes utilisés. Ainsi les données de la base de données sont décrites hors
des programmes dans la base elle-même.
5
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Le modèle hiérarchique
Le Modèle hiérarchique donnait naissance aux bases de données
hiérarchiques. Il s’agissait mettre en place une arborescence de données où
l’accès à un enregistrement de niveau inférieur n’est pas possible sans passer
par le niveau supérieur. Promus par IBM et toujours utilisés dans
le domaine bancaire, les SGBD hiérarchiques souffrent toutefois de nombreux
inconvénients.
La figure suivante illustre un modèle hiérarchique de données dans lequel des
établissements d’enseignement peuvent embaucher plusieurs enseignants. Un
enseignant peut intervenir pour le compte de différents établissements.
000000
6
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Ce modèle quant à lui montre des lacunes lors de l’accès aux données de la
base.
- Extraire la liste de tous les enseignants implique le parcours de tous les
établissements.
- L’insertion peut se révéler problématique : l’ajout d’un enseignant sans
l’établissement n’est pas possible, à moins d’ajouter un établissement fictif.
Le modèle Réseau
Un peu plus tard, Bachman, pionnier dans le domaine de l’informatique,
s’intéresse pour une fois aux bases de données en inventant le modèle réseau
qui vient complètement écarter le modèle hiérarchique des données.
Les bases de données réseaux étaient nées avec le modèle CODASYL, première
norme décidée sans IBM. Bien que résolvant quelques limitations du modèle
hiérarchique et annonçant des performances en lecture-écriture honorables, le
modèle réseau n’était qu’une usine de pointeurs. Pour preuve, plus personne
n’utilise de tels SGBD où la dépendance entre les données stockées et les
méthodes d’accès existe toujours, et l’évolution d’une base de données est très
coûteuse en termes de recompilation de pointeurs.
000000
7
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Le modèle Relationnel
Après la publication en 1970 de l’article de référence posant les bases du
modèle relationnel par E.Ted Codd, D’un seul coup, toutes les limitations des
précédents modèles sont résolues. Le but initial de ce modèle était d’améliorer
l’indépendance entre les données et les traitements (programmes
informatiques). Basé sur la théorie des ensembles (algèbre relationnelle) on
réussi à résoudre de nombreux problèmes et parvenir à créer d’autres
fonctionnalités liées à la Normalisation (dépendances fonctionnelles) et
Cohérence des données (non-redondance et intégrité référentielle). Langage
SQL (déclaratif et normalisé) est créé à cet effet. Les liens entre les
enregistrements de la base de données sont réalisés non pas à l’aide de
pointeurs physiques, mais à l’aide des valeurs des clés étrangères et des clés
primaires.
Etablissement
ID_Et Nom_Etablissement
Enseignants Rémunération
01 M.NDONG 01 01 500.000F
02 M.MBA 02 01 400.000F
03. M.OYIBA 03. 02 200.000F
04. M.OSSA 02. 02 300.000F
05. M.MOUSSAVOU 04. 03 350.000F
02 03 250.000F
05 03 600.000F
8
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
La force du modèle relationnel de données réside dans le fait qu’il repose sur
des principes simples et permet de modéliser des données complexes. Le
modèle relationnel est à l’origine du succès que connaissent aujourd’hui les
grands éditeurs de SGBD, à savoir Oracle, IBM, Microsoft et Sybase dans
différents domaines :
- OLTP (OnLine Transaction Processing) où les mises à jour des données sont
fréquentes, les accès concurrents et les transactions nécessaires.
Le modèle NoSQL
Depuis quelques années, le volume de données à traiter sur le Web a mis à
rude épreuve les SGBD relationnels, qui ont été jugés non adaptés à de
nombreuses montées en charge. Les grands acteurs du Big Data, comme
Google, Amazon, LinkedIn ou Facebook, ont été amenés à créer leurs propres
systèmes de stockage et de traitement de l’information (BigTable, Dynamo,
Cassandra). Des implémentations d’architectures open source comme Hadoop
et des SGBD comme HBase, Redis, Riak, MongoDB ou encore CouchDB ont
permis de démocratiser ce nouveau domaine de l’informatique répartie.
On distingue plusieurs modèles de données parmi les SGBD NoSQL du
moment : clé-valeurs, orienté colonnes, documents et graphes. Plus le
modèle est complexe, moins le système est apte à évoluer rapidement en raison
de la montée en charge.
9
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
25845579 I.A.I
IGL
25844571
25844996 INPTIC
Nom : M.MBA Adresse : BP123 Age : 37 ans Tel : 077.25.24.11 Etab : IAI Salaire : 400.000F
25845552
Etab : IGL Salaire : 300.000F
Le modèle orienté documents est toujours basé sur une association clé-valeur
dans laquelle la valeur est un document (JSON généralement, ou XML). Les
implémentations les plus populaires sont CouchDB (Apache), RavenDB, Riak
et MongoDB.
10
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Le modèle de données orienté graphes se base sur les nœuds et les arcs
orientés et éventuellement valués. Ce modèle est très bien adapté au traitement
des données des réseaux sociaux où on recherche les relations entre individus
de proche en proche. Les principales solutions du marché sont Neo4j (Java) et
FlockDB (Twitter).
Id : 2541 Id : 25845552
Salaire : 400.000F Nom : M.MBA
Adresse: BP123
Age : 37 ans
Id : 25845579 Tel : 077.25.24.11
Nom_Et : IAI
Adresse: BP3002
Ville : Libreville
Id : 2554
Salaire : 300.000F
Id : 2567
Salaire : 250.000F
Id : 25844571
Nom_Et : IGL Id : 25844996
Adresse: BP587 Nom_Et : INPTIC
Ville : Libreville Adresse: BP2630
Ville : Libreville
11
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
SERVEUR Client
12
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
architecture locale
Bases de données
+
application cliente
architecture client/serveur
On a un programme client (un exécutable) sur le poste client, dit alors ‘client
lourd’. Le PC communique avec le serveur de données sur un serveur distant,
via le réseau, et la couche Oracle Net pour les utilisateurs oracle.
Communication
SERVEUR de Base de
données
Application Cliente
architecture 3 tiers
Ici pas de programme client. Un navigateur suffit sur le poste de travail (on
parle alors de ‘client léger’). Il dialogue avec le serveur de données distant via
http.
13
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Exemple : Oracle, Mysql, Access, PostGré, Sybase, SQL Server, Cassandra, etc.
disponibilité
fiabilité
Des mécanismes de sauvegarde variés (physique, logique, off-line, on-
line, totale, partielle, incrémentale), ainsi que des mécanismes de
journalisation, et de reprise permettent de restaurer une information
sans pratiquement aucune perte, dans tous les cas de problème matériel
ou logiciel.
confidentialité
Tout n’est pas accessible à tout le monde! Se connecter à la base de
données, donne un certain nombre de droits et de ressources en fonction
d’un profil défini et maintenu par un administrateur. La granularité
d’accès peut aller jusqu’à la vision unique d’un champ d’un
enregistrement d’une table particulière. Encore une fois on ne manipule
plus des fichiers…
cohérence
Que les données soient réparties ou non –dans ce dernier cas les
mécanismes mis en jeux seront plus complexes– elles doivent être
cohérentes. Cela sous entend, d’une part que les accès concurrents
d’utilisateurs, notamment lors de mises à jour, ne doivent pas
compromettre l’intégrité des données et d’autre part que ces dernières
14
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
III. Le SQL
SQL signifie Structured Query Language, c'est-à-dire Langage
d'interrogation structuré. En fait SQL est un langage complet de gestion
de bases de données, en particulier relationnelles. Il a été conçu par IBM
dans les années 70. Il est devenu le langage
standard des systèmes de gestion de bases de données (SGBD)
relationnelles (SGBDR).
SQL ne permet pas de faire de la programmation au sens courant du
terme et doit donc être associé avec un langage comme le C, le COBOL
ou JAVA pour réaliser des traitements complexes accédant à une base de
données.
15
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Le SQL est composé de quatre sous ensembles : LDD, LCD, LMD, LCT
Le Langage de Définition de Données (LDD, ou en anglais DDL,
Data Definition Language) pour créer et supprimer des objets dans la
base de données (tables, contraintes d'intégrité, vues, etc.).
Exemple de commandes : CREATE, DROP, ALTER
Le Langage de Manipulation de Données (LMD, ou en anglais
DML, Data Manipulation Language) pour la recherche, l'insertion, la
mise à jour et la suppression de données. Le LMD est basé sur les
opérateurs relationnels, auxquels sont ajoutés des fonctions de calcul
d'agrégats et des instructions pour réaliser les opérations d'insertion,
mise à jour et suppression.
Exemple de commandes : INSERT, UPDATE, DELETE, SELECT
Le Langage de Contrôle de Données (LCD, ou en anglais DCL, Data
Control Language) pour gérer les droits sur les objets de la base
(création des utilisateurs et affectation de leurs droits).
Exemple de commandes : GRANT, REVOKE
Le Langage de Contrôle de Transaction (LCT, ou en anglais TCL,
Transaction Control Language) pour la gestion des transactions
(validation ou annulation de modifications de données dans la BD)
Exemple de commandes : COMMIT, ROLLBACK
16
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Développeur ou Programmeur
17
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Administrateur application
Utilisateur final hiérarchiquement privilégié l’application elle même, via un
accès privilégié de l’application.
18
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Domaine d’étude
Analyse et Représentation
Position du problème
MODEL
CONCEPTUEL
BDD Implémentation
Solution A() ; B() ; X() ;Y() ; Z() ;
MODEL
LOGIQUE
19
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Entité : Une entité est un objet, une chose concrète ou abstraite qui
peut être reconnue distinctement Ex : Jean-Claude, Momo, Ma Voiture,
Son 4x4, Libreville, classe de 6ème, etc.
Entité type : Une entité type est la représentation commune que l’on
adopte pour des entités qui possèdent les mêmes caractéristiques Ex :
Personne, Voiture, Région, classe, établissement, etc.
Une entité est une occurrence d’une entité type (ou instance)
Etudiant est de degré 3 c’est le nombre de propriété qu’il possède (N°ELV, Nom et Age)
Chaque ligne du tableau est une occurrence de la relation. (Il en a 5)
Le nombre d’occurrences de la relation dans la base est appelé cardinalité
Etudiant est donc de cardinalité 5.
20
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
ENTREPRISE
FOURNISSEUR
Livraison Matricule
ID_Four Nom
NOM Date Adresse
Adresse Quantité Tel
Montant
Ici, la valeur de la propriété « Montant » de la
livraison dépend de « quantité » et « prix-
unitaire »
PRODUIT
Car : Montant = Qté×Prix-unitaire
N°Prod
On dit que Montant est une propriété
Libellé
calculée
Prix_unitaire
Type d’association
PERSONNE
Se Marier
N°Pers Une personne ne peut se marier
NOM qu’avec une autre personne
Adresse
21
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Fils
Père
(1, 1) (1, n)
Et sont des cardinalités respectives des entités
Etudiant et Classe. Les règles de gestion sont telles que :
La cardinalité (1, 1) signifie qu’un étudiant ne peut apprendre que dans une et
une seule salle de classe à la fois. Et (1, n) signifie qu’une salle de classe peut
recevoir un ou plusieurs étudiants.
Association de type fonctionnel :
La cardinalité (0, 1) signifie qu’un employé ne peut avoir zéro ou une seule
voiture de service à la fois. Et (1, 1) signifie qu’une voiture de service ne peut
être affectée qu’à un et un seul employé à la fois.
Association de type Maillé (N :M)
22
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
1. Chaque Entité-type est une relation R. Une relation étant définie comme
un sous-ensemble du produit cartésien de plusieurs domaines
R ⊂ D1 × D2 × ... × Dn
D1, D2, ... , Dn sont les domaines de R, n est le degré ou l’arité de R. (plus haut)
Ex : ETUDIANT (N°Etud, Nom, Date_naiss) ;
R = Etudiant ; D1=Domaine (N°Etud) : Numérique; D2=Domaine(Nom) : Texte ;
D3=Domaine(Date_naiss) : Date
Numérique, Texte et Date étant tous les domaines de ETUDIANT
2. Les associations de type Maillé (N :M) deviennes elles aussi des relations
sa clé primaire est le produit cartésien des clés primaires de toutes les
entités qui interviennent dans l’association.
3. La clé primaire d’une relation est soulignée.
4. La clé étrangère est précédée du signe #
5. Dans une association réflexive, on ajoute à la relation une clé étrangère
de la même nature que la clé primaire.
PERSONNE (1, 1)
Se Marier
N°Pers
NOM
Adresse (1, 1)
23
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
24
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
2- Les données doivent être accessibles de façon logique par les tables, les clés
primaires et les colonnes.
4- Les méta-données doivent être stockées dans la base au même titre que les
données normales.
5- Un langage unique doit permettre de définir les données, les vues sur ces
données, les contraintes d'intégrité, les autorisations d'accès, les transactions,
et enfin, la manipulation des données.
6- Les vues doivent refléter les mises à jour de leurs tables de base, et vice-
versa.
7- Chaque action suivante doit pouvoir être réalisée par une et une seule action
: retrouver, insérer, mettre à jour et supprimer une donnée.
10- Les contraintes d'intégrité doivent être disponibles, et stockées dans les
meta-données et non pas dans un quelconque programme d'application.
11- Le langage de manipulation des données (LMD) ne doit pas se soucier d'où
ni de comment les données sont stockées et/ou distribuées.
12- Le traitement d'une ligne doit respecter les mêmes règles et contraintes
d'intégrité que les opérations portant sur des ensembles.
25
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
X. Dépendances fonctionnelles
Une propriété (ou un groupe de propriétés) Y dépend fonctionnellement d’une
autre propriété (ou groupe de propriétés) X si Etant donné une valeur de X, il
lui correspond une valeur unique de Y. On note X → Y (X détermine Y) Cette
relation est transitive : si X → Y et Y → Z alors X → Z Cependant, on ne
représente que les DF élémentaires.
Père Fils
Ex : ID_CL ------> N°ETU, le fils dépend du père D’où,
26
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
27
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
28
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Solution MCD
(1, 6) (1, 1) (1, n) (1, 1)
COMMUNE ARRONDISSEMENT
QUARTIER
Se Divise N°QUART
Code_COM Code_ARR Se
NOM_COM NOM_ARR NOM_QUART
compose
(1, n)
PRODUIT
Habite
N°PROD
Libelle_PROD CLIENT
Prix_Unitaire N°Client
NOM_CL
PRENOM_CL
(0, n) TEL_CL (1, 1)
(1, n)
COMMANDE (1, n)
Ligne_Commande N°CMD
Date_CMD Fait
Quantité Montant_CMD (1, 1)
Montant_Produit
-
29
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
30
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
I. Définition
L'algèbre relationnelle associée au modèle relationnel est le fondement
théorique du langage standard SQL, qui est utilisé pour manipuler les données
stockées dans une Base de Données. C’est un langage opérationnel, une
requête s’écrit donc comme une succession d’opérations effectuées sur des
relations.
31
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
COMMANDE
N°CMD N°Client Date_CMD Montant
001 005 11/03/2015 35000
002 008 18/06/2017 55000
- La Projection ()
Définition formelle
X(r)={t(X) / t r}, où r une relation de schéma R et X un ensemble
d’attributs tels que XR.
32
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
COMMANDE
N°CMD Montant
001 35000
002 55000
003 15000
004 75000
005 48000
- Le Produit cartésien
Définition formelle
33
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
R S
A B C B F
a1 b1 c1 b4 f1
a2 b2 c2 b5 f2
b6 f3
Le Produit cartésien RxS donne ce qui suit :
A R.B C S.B F
a1 b1 c1 b4 f1
a1 b1 c1 b5 f2
a1 b1 c1 b6 f3
a2 b2 c2 b4 f1
a2 b2 c2 b5 f2
a2 b2 c2 b6 f3
- La Jointure
Jointure naturelle : R1 R2
Soient R et S deux relations ayant X attributs communs. La jointure de R et de
S se définie comme suite :
34
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
R S
A B C B F
a1 b1 c1 b4 f1
a2 b2 c2 b2 f2
b2 f3
Le Produit cartésien RxS donne ce qui suit :
A R.B C S.B F
a1 b1 c1 b4 f1
a1 b1 c1 b2 f2
a1 b1 c1 b2 f3
a2 b2 c2 b4 f1
a2 b2 c2 b2 f2
a2 b2 c2 b2 f3
A R.B C F
a2 b2 c2 f2
a2 b2 c2 f3
Jointure avec condition ou Thêta jointure : R S,
R S
A B C D E
3 5 3 1 2
2 6 7 4 1
9 1
On veut le résultat de la jointure avec = S.D > R.C
A B C D E
3 5 3 4 1
3 5 3 9 1
2 6 7 9 1
35
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
EXEMPLES
R1 R2
A B A B
a1 b1 a1 b1
a2 b2 a2 b3
a3 b3 a3 b4
A B A B A B
a1 b1 a1 b1 a2 b2
a2 b2 a3 b3
Les n-uplets à la fois a3 b3
dans R1 et dans R2 a2 b3
a3 b4 Les n-uplets de R1
qui ne sont pas dans
Les n-uplets de R1 R2
union ceux de R2
r s = { t / t r ou ts } ;
rs = { t / t r et ts} ;
r \s = { t / t r et t s}
36
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Contre exemple
R1 S
A B A B
a1 b1 a1 b2
A (r s) =
37
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Contre exemple
R1 S
A B A B
a1 b1 a1 b2
A (r - s)={a1} ;
Démonstration
38
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
- Le renommage α
C’est une opération unaire, le renommage d’une table R permet d’obtenir une table R’
dont les tuples sont ceux de R et dont le schéma est celui de R dans lequel un attribut
a été renommé :
R’ = α [nom_attribut : nouveau_nom] R
- La jointure Externe
la jointure externe de 2 tables R et S est une table T obtenue par jointure de R et S et
ajout des tuples de R et de S ne participant pas à la jointure avec des valeurs nulles
pour les attributs de l’autre table :
T= R S (EXT-JOINT):
R S
A B C A D
3 5 3 3 2
2 6 7 3 1
9 4
A B C D
3 5 3 2
3 5 3 1
2 6 7 ----
9 ----- ----- 4
39
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
- La Division (R1\R2)
le quotient de la division d'une table D (a1, a2…ap, ap+1…an) par la sous table
d (ap …an) est la table Q (a1, a2…ap) dont les tuples sont ceux qui concaténés à
tout tuple de d donnent un tuple de D : Q = (D ÷ d), DIVISION (D, d)
Intérêts de la division :
• elle permet de rechercher dans une table les sous-tables qui sont complétées
par tous ceux d’une autre table
• elle permet ainsi de répondre à des requêtes de la forme « quel que soit x,
trouver y »
Exemple :
R
S
A B C D
A
a1 b1 c1 d1
a1
a2 b2 c2 d2
a3
a3 b3 c3 d3
a4
a4 b4 c4 d4
R\S
B C D
b1 c1 d1
b3 c3 d3
b4 c4 d4
Les tuples de la table R\S, concaténés à chacun des tuples de la table
S donnent un tuple de la table R.
40
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
41
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Correction
3. σNumAu= 121(Livre);
Les livres de l’auteur de nom ‘MOUSSAVOU’
42
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
I. Définition
SQL (pour Structured Query Language = langage de requêtes structuré)
est un langage déclaratif destiné à la manipulation de bases de données au sein
des SGBD et plus particulièrement les SGBDR. SQL un langage standardisé,
implémenté par tous les, qui permet, indépendamment de la plate-forme
technologique et de façon déclarative, de définir le modèle de données, de le
contrôler et enfin de le manipuler.
Les SQLs
Le langage SQL a bénéficié de plusieurs normalisations.
● SQL1 (1986) : première norme
● SQL2 (1992) : SQL1 + de nouvelles instructions (par exemple : JOIN)
● SQL3 (1999) : SQL2 + approche orienté objet
● SQL2003 : SQL3 + quelques modifications mineures (ex: SQL/XML)
● SQL:2008 et SQL:2011 : quelques modifications
43
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
2. Selon le SQL3
On dénombre 7 classes d'instructions :
44
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
1. Opérateurs arithmétiques
2. Opérateurs de comparaison
3. Opérateurs logiques
45
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Opérateur Signification
EXISTS Vrai si une sous-requête envoie des lignes (n’a pas un résultat
vide)
46
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Opérateur Signification
47
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
CREATE
Dans certains SGBD, si une base de données porte déjà ce nom, la requête
retournera une erreur comme MySQL . Pour éviter d’avoir cette erreur, il
convient d’utiliser la requête suivante:
48
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
– CHECK (exp) : spécifie que les valeurs de cette colonne doivent vérifier la
condition entre parenthèses
49
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
● Supposons que la table T a une clé étrangère portant sur la table T' :
– CASCADE : mise à jour et suppression de T' répercutés sur T
– SET NULL : donne la valeur NULL aux éléments des colonnes de T
correspondant à celles de t' ayant été touchées.
50
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
DATE
Contraintes d'intégrité
NOT NULL valeur null impossible
UNIQUE unicité d'un attribut
PRIMARY KEY clé primaire
FOREIGN KEY clé étrangère
CHECK plage ou liste de valeurs
Exemple
CREATE TABLE Client
( Id_Cli VARCHAR (4) PRIMARY KEY,
nom VARCHAR(20),
ville VARCHAR(30) CHECK (ville IN ('Nice', 'Paris', 'Rome'))) ;
51
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Création d’index
La commande CREATE INDEX permet de créer des index multi-colonne
Syntaxe :
CREATE [UNIQUE] INDEX Nom_index ON Nom_table (colonne
[ASC|DESC], ...)
L'option UNIQUE permet d'assurer l'unicité d'une clé
Ex.: CREATE UNIQUE INDEX index1 ON Client(Nom) ;
Les index permettent d'accélérer les recherches. Le système détermine sa
stratégie d'accès en fonction des index existants. Les index sont
automatiquement mis à jour.
Il est indispensable de créer les index appropriés pour accélérer le traitement
des requêtes.
Il ne faut cependant pas créer des index sur n'importe quel colonne ou groupe
de colonnes, car les mises à jour seraient ralenties inutilement par la
maintenance de ces index.
Création d’une vue
La vue est importante dans une base de données parce qu'elle sert
d'intermédiaire entre celle-ci et l'utilisateur. Il s'agit d'une table virtuelle. Il
faut bien comprendre qu'il s'agit juste d'une représentation des données pour
une exploitation visuelle. Autrement dit, les données ne sont pas dans une
table de la base de données.
Les données présentes dans une vue sont alors définies par une clause SELECT
après avoir créé la vue à l'aide de la clause CREATE VIEW. Comme toujours, il
ne faut pas oublier de mettre le VIEW après CREATE pour préciser qu'il s'agit
bien d'une VIEW.
52
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
ALTER
DROP
Pour supprimer une colonne dans une table voici la requête SQL :
username[/password].
Nom d'utilisateur et mot de passe avec lequel vous voulez vous connecter
à la base de données Oracle.
SQLPLUS MBA/Moimeme
@connect_identifier.
Identifiant de connexion Oracle Net. Il s’agit du descripteur de
connexion qui indique la base Oracle à laquelle vous voulez vous
connecter. Ce descripteur est présent dans votre fichier TNSNAMES.
ORA situé dans %ORACLE_HOME%\NETWORK\ADMIN.
SQLPLUS MBA/Moimeme@test
AS{SYSOPER|SYSDBA}.
La clause AS permet des connexions privilégiées pour les utilisateurs qui
ont les privilèges SYSOPER ou SYSDBA.
SQLPLUS SYS/monpasse AS SYSDBA
/NOLOG.
La clause /NOLOG permet d'ouvrir SQLPLUS sans établir de connexion
à une base de données. Vous devez utilisez la commande CONNECT
pour ouvrir une session sur la base de données Oracle.
SET ORACLE_SID=DBAPROD
SQLPLUS /NOLOG
54
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Syntax
55
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Example
RETURN
Ne confondez pas l'instruction RETURN avec la clause RETURN dans une
spécification de fonction, qui spécifie le type de données de la valeur de retour.
Dans les fonctions, une instruction RETURN doit contenir une expression, qui
est évaluée lorsque l'instruction RETURN est exécutée. La valeur résultante est
affectée à l'identificateur de fonction. Dans les fonctions, il doit y avoir au
moins un chemin d'exécution qui mène à une instruction RETURN. Sinon, PL
/ SQL lève une exception au moment de l'exécution.
L'instruction RETURN peut être utilisée dans un bloc anonyme pour quitter le
bloc (et tous les blocs englobants), mais l'instruction RETURN ne peut pas
contenir d'expression.
DECLARE
FUNCTION num_rows (table_name VARCHAR2) RETURN
user_tables.num_rows%TYPE
IS
howmany user_tables.num_rows%TYPE;
56
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
BEGIN
EXECUTE IMMEDIATE 'SELECT num_rows FROM user_tables ' ||
'WHERE table_name = ''' || UPPER(table_name) || ''''
INTO howmany;
-- A function can compute a value, then return that value.
RETURN howmany;
END num_rows;
SYNTAX
EXTRACT (
{ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND }
| { TIMEZONE_HOUR | TIMEZONE_MINUTE }
| { TIMEZONE_REGION | TIMEZONE_ABBR }
FROM { date_value | interval_value } );
GET DIAGNOSTICS
57
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
58
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
INSERT INTO Client (Id_Cli, nom, ville) VALUES ('c100', 'MBA', 'LBV');
Il est possible d’ajouter plusieurs lignes à un tableau avec une seule requête.
Pour ce faire, il convient d’utiliser la syntaxe suivante :
DELETE
La commande DELETE en SQL permet de supprimer des lignes dans une
table. En utilisant cette commande associée à WHERE il est possible de
sélectionner les lignes concernées qui seront supprimées. Avant d’essayer de
59
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
(Elle supprime les clients OYANE et MOUSSAVOU qui ont un âge supérieur à 30)
UPDATE
La commande UPDATE permet d’effectuer des modifications sur des lignes
existantes. Donc elle modifie les données d’une table contrairement à la
commande ALTER qui modifie la structure de la table. Très souvent la
commande UPDATE est utilisée avec WHERE pour spécifier sur quelles
lignes doivent porter la ou les modifications.
60
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
UPDATE Client
SET Age = 50,
ville = ‘FOUGAMOU'
WHERE id_Cli = ‘002’ ;
Il est possible d’effectuer une modification sur toutes les lignes en omettant
d’utiliser une clause conditionnelle. Il est par exemple possible de mettre la
valeur “FRANCEVILLE” dans la colonne “ville” pour toutes les lignes de la
table, grâce à la requête SQL ci-dessous.
UPDATE Client
SET ville = ‘FRANCEVILLE';
SELECT
SELECT * FROM Client; Affiche toutes les lignes de la table client
61
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Ville
OYEM
FRANCEVILLE
OYEM
BITAM
Ville
OYEM
FRANCEVILLE
BITAM
La projection
La projection, c'est l'affaire du mot clé SELECT. C'est lui qui sera chargé de
sélectionner les colonnes que vous souhaitez afficher.
Nom Ville
62
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
NDONG OYEM
MOUELE FRANCEVILLE
OYANE OYEM
MOUSSAVOU FRANCEVILLE
La restriction ou Sélection
Le produit cartésien
Pour effectuer le produit cartésien entre deux tables, il faut simplement spécifier
ces deux tables derrière la clause FROM. Rien de plus simple !
R S
A B C B F
a1 b1 c1 b4 f1
a2 b2 c2 b5 f2
b6 f3
SELECT * FROM R, S;
A R.B C S.B F
a1 b1 c1 b4 f1
a1 b1 c1 b2 f2
63
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
a1 b1 c1 b2 f3
a2 b2 c2 b4 f1
a2 b2 c2 b2 f2
a2 b2 c2 b2 f3
Les opérateurs AS et ||
-- Version MySQL :
Il y a également des fonctions utilisant des dates, ou des fonctions binaires (qui
renvoient Vrai ou Faux). Voici un exemple.
64
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
R1 R2
A B A B
a1 b1 a1 b1
a2 b2 a2 b3
a3 b3 a3 b4
SELECT A, B FROM R1 A B
UNION a1 b1
SELECT A, B FROM R2; a2 b2
a3 b3
a2 b3
a3 b4
Différence
La liste des clients de la table R1 qui ne sont pas des clients de R2 est donnée
par :
A B
SELECT A, B FROM R1
a2 b2
EXCEPT
a3 b3
SELECT A, B FROM R2;
Intersection
A B
65
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
SELECT A, B FROM R1
INTERSECT
SELECT A, B FROM R2;
Par exemple, on veut savoir si une ligne d'une première table est présente dans
une seconde table. On doit donc comparer la valeur de chacun de ses attributs
un à un. S'il y a beaucoup d'attributs, ceci n'est pas optimal. En fait il y a plus
simple, mais à une condition : que les deux tables soient extraites d'une table
originelle contenant au moins une clé candidate. Dans notre exemple on
supposera que R1 et R2 ont pour clé primaire la colonne A.
Intersection Difference
SELECT A, B SELECT A, B
FROM R1 FROM R1
WHERE A IN ( WHERE A NOT IN (
SELECT A FROM R2) ; SELECT A FROM R2);
Lister les produits dont le prix est compris entre 5000F et 12000F
Lister les produits de marque IBM dont le prix est inférieur à 12000F
SELECT * FROM produit P WHERE P.marque = 'IBM' AND P.prix < 12000
66
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Notre objectif : "coller" les tables Etudiant et Classe pour obtenir une table
dans laquelle les lignes contiennent les informations sur les étudiants, avec
pour chacun d'entre eux leur classe respective. En SQL, il y a deux manières
principales d'écrire des jointures :
Vous vous souvenez qu'une jointure était en fait l'enchaînement d'un produit
cartésien et d'une restriction. On commence donc par effectuer le produit
cartésien des deux tables...
FROM Etudiant E
67
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Si votre clé étrangère contient 2 attributs (ou plus), alors il faut utiliser AND.
Prenons l'exemple d'une table t1 ayant une clé étrangère de 2 attributs
: fk1 et fk2. Cette clé étrangère référence la table t2, dont la clé primaire est elle
aussi composée de 2 attributs : pk1 et pk2 :
-- Première méthode :
-- Seconde méthode :
68
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
NB: Etudiant et Classe peuvent être inversées le résultat ne change pas dans
les deux méthodes de jointures.
Cette fois, on souhaite afficher dans une même table l’Etudiant, sa classe et
l’établissement d’origine.
69
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Nombre_Clients
3
70
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
GROUP BY et ORDER BY
Quelle est la différence entre GROUP BY et ORDER BY ? – Les clauses
GROUP BY et ORDER BY les deux sont utilisées pour organiser les
données. La différence clé entre la clause Group By et Order By est que la
clause Group By est utilisée lorsque nous souhaitons appliquer la fonction
d’agrégation sur plusieurs tuples et que la clause Order By est utilisée lorsque
nous voulons trier les données obtenues par une requête.
Voici un exemple qui trierait le résultat par ordre croissant selon le NOM du
client:
71
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
+----+----------+-----+-----------+----------+
| ID | NOM | AGE | ADRESSE | SALAIRE |
+----+----------+-----+-----------+----------+
| 3 | Alex | 31 | Niort | 9000.00 |
| 6 | Ali | 13 | Casablanca| 3000.00 |
| 5 | Bob | 25 | Lile | 2500.00 |
| 7 | Emily | 26 | Lyon | 4500.00 |
| 8 | Thomas | 29 | Chingaho | 7500.00 |
72
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
+----+----------+-----+-----------+----------+
Une clause GROUP BY fonctionne sur les lignes renvoyées par une requête en
récapitulant des lignes identiques dans un groupe unique/distinct et renvoie
une seule ligne avec le résumé pour chaque groupe, en utilisant la fonction
d’agrégation appropriée dans SELECT, comme COUNT (), SUM. (), MIN
(), MAX (), AVG (), etc.
Cela produirait le résultat suivant: (somme des salaires qui ont des noms
identiques et trie la colonne NOM après avoir supprimé les noms identiques)
+---------+-------------+
| NOM | SUM(SALAIRE)|
+---------+-------------+
| Alex | 270000.00 |
| Ali | 3000.00 |
| Bob | 5000.00 |
| Emily | 4500.00 |
| Thomas | 7500.00 |
+---------+-------------+
La différence clé entre la clé primaire et la clé unique est que la clé
primaire n’accepte pas les valeurs NULL alors que les valeurs NULL sont
autorisées dans les contraintes de clé uniques.
73
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Table de comparaison
Clé primaire Clé unique
Valeur NULL La clé primaire n’acceptera pas La clé unique acceptera une valeur
acceptée les valeurs NULL. NULL.
Nombre de
clés pouvant
Une seule clé primaire Peut avoir plusieurs clés uniques
être définies
dans la table
74
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
IMMEDIATE
Spécifiez IMMEDIATE pour que les contraintes spécifiées soient vérifiées
immédiatement lors de l'exécution de chaque instruction DML contrainte.
Oracle Database vérifie d'abord toutes les contraintes qui ont été différées plus
tôt dans la transaction, puis continue immédiatement de vérifier les
contraintes de toute autre instruction dans cette transaction, tant que toutes
les contraintes vérifiées sont cohérentes et qu'aucune autre instruction SET
CONSTRAINTS n'est émise. Si une contrainte échoue à la vérification, une
erreur est signalée. À ce stade, une instruction COMMIT entraîne l'annulation
de l'ensemble de la transaction.
DEFERRED
Notion de Transaction :
Pour commencer cette partie, nous allons voir ce que sont les transactions, à
quoi elles servent exactement, et comment les utiliser avec ORACLE ou
MySQL.
75
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Les transactions ont été implémentées assez tard dans MySQL, et qui plus est,
elles ne sont pas utilisables pour tous les types de tables. C'est d'ailleurs un des
principaux arguments des détracteurs de MySQL.
Deux jours plus tard, M. Durant reçoit un coup de fil de M. NDONG, très
énervé, qui lui demande pourquoi le paiement convenu n'a toujours pas été
fait. Intrigué, M. Durant va vérifier son compte, et constate qu'il a bien été
débité de 300.000 FCFA.
76
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
La banque de M. Durant n'utilisait pas les transactions. Si cela avait été le cas,
la seconde requête du traitement n'ayant jamais été exécutée, la première
requête n'aurait jamais été validée.
Voici un schéma qui devrait vous éclairer sur le principe des transactions.
Début Transaction
Requête
NON OK ?
OUI
Dernière NON
requête ?
OUI
Annulation Validation
des Requêtes des Requêtes
Fin Transaction
Lorsque l'on valide les requêtes d'une transaction, on dit aussi que l'on
commite les changements. À l'inverse, l'annulation des requêtes s'appelle un
rollback.
77
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Vous l'aurez compris, par défaut, MySQL ne travaille pas avec les transactions.
Chaque requête effectuée est directement commitée (validée). On ne peut pas
revenir en arrière. On peut donc considérer que chaque requête constitue une
transaction qui est automatiquement commitée. Par défaut, MySQL est donc
en mode "autocommit".
Une fois que vous n'êtes plus en autocommit, chaque modification de donnée
devra être commitée pour prendre effet. Tant que vos modifications ne sont
pas validées, vous pouvez à tout moment les annuler (faire un rollback).
Si ce n'est pas déjà fait, changez le mode par défaut de MySQL grâce à la
commande que nous venons de voir.
UPDATE Espece
SET prix = 2000
WHERE espece_id = 5;
-- Les rats bruns coûtent maintenant 2000 FCFA au lieu de 1000FCFA
78
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Les changements faits sont bien visibles. Les rats bruns valent maintenant
2000 FCFA, et nos trois nouvelles bestioles ont bien été insérées. Cependant,
un simple rollback va annuler ces changements.
ROLLBACK;
Nos rats coûtent à nouveau 1000 FCFA, et Baba, Bibo et Buba ont disparu.
Reconnectez-vous et vérifiez vos données : les rats valent 1000 FCFA, et Baba,
Bibo et Buba n'existent pas. Les changements n'ont pas été commités, c'est
comme s'il ne s'était rien passé !
79
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
COMMIT;
ROLLBACK;
80
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
START TRANSACTION;
Une fois la transaction ouverte, les requêtes devront être validées pour prendre
effet. Attention au fait qu'un COMMIT ou un ROLLBACK met fin
automatiquement à la transaction, donc les commandes suivantes seront à
81
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
-- Nouvelle transaction
START TRANSACTION;
-- Suppression de Buba
DELETE FROM Animal
WHERE espece_id = 5
AND nom = 'Buba';
Si vous avez bien suivi, vous devriez savoir les changements qui ont été faits.
82
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Jalon de transaction
Lorsque l'on travaille dans une transaction et que l'on constate que certaines
requêtes posent problème, on n'a pas toujours envie de faire un rollback depuis
le début de la transaction, annulant toutes les requêtes alors qu'une partie
aurait pu être validée. Il n'est pas possible de démarrer une
transaction à l'intérieur d'une transaction. Par contre, on peut poser
des jalons de transaction. Il s'agit de points de repère qui permettent
d'annuler toutes les requêtes exécutées depuis ce jalon, et non toutes les
requêtes de la transaction.
Syntaxe
START TRANSACTION;
SAVEPOINT jalon1;
83
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
COMMIT;
Vous savez déjà que, pour terminer une transaction, il faut utiliser les
commandes COMMIT ou ROLLBACK, selon que l'on veut valider les requêtes
ou les annuler.
Ça, c'est la manière classique et recommandée. Mais il faut savoir qu'un certain
nombre d'autres commandes auront aussi pour effet de clôturer une
transaction. Et pas seulement de la clôturer, mais également de valider
toutes les requêtes qui ont été faites dans cette transaction, exactement
comme si vous utilisiez COMMIT.
Par ailleurs, ces commandes ne peuvent pas être annulées par un ROLLBACK.
Commandes DDL
Toutes les commandes qui créent, modifient, suppriment des objets dans la
base de données valident implicitement les transactions.
Ces commandes forment ce que l'on appelle les requêtes DDL, pour Data
Definition Langage.
84
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Utilisateurs
Transactions et verrous
Je vous ai signalé qu'il n'était pas possible d'imbriquer des transactions, donc
d'avoir une transaction à l'intérieur d'une transaction. En fait, la
commande START TRANSACTION provoque également une validation
implicite si elle est exécutée à l'intérieur d'une transaction.
Le fait d'activer le mode autocommit (s'il n'était pas déjà activé) a le même
effet.
Chargement de données
ACID
Quels sont les critères qu'un système utilisant les transactions doit respecter
pour être fiable ?
A pour Atomicité
85
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
C pour cohérence
Les données doivent rester cohérentes dans tous les cas : que la
transaction se termine sans encombre, qu'une erreur survienne, ou que la
transaction soit interrompue. Un virement dont seule l'étape de débit du
donneur d'ordre est exécutée produit des données incohérentes (la disparition
de 300.000 FCFA jamais arrivés chez le bénéficiaire). Avec une transaction,
cette incohérence n'apparaît jamais. Tant que la totalité des étapes n'a pas été
réalisée avec succès, les données restent dans leur état initial.
Oui, les changements de données ne sont validés qu'une fois que toutes les
étapes ont été exécutées. De l'extérieur de la transaction, le moment entre les
deux étapes d'un virement n'est jamais visible.
I pour Isolation
Chaque transaction doit être isolée, donc ne pas interagir avec une autre
transaction.
Test
Dans votre client MySQL, exécutez les requêtes suivantes (ne commitez pas)
pour modifier le pere_id du rat Bibo :
86
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Le résultat n'est pas du tout le même dans les deux sessions. En effet, dans la
première, on a la confirmation que la requête UPDATE a été effectuée :
Et le SELECT renvoie bien les données modifiées (pere_id n'est plus NULL
pour Bibo) :
87
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Par contre, dans la deuxième session, on a d'abord fait un SELECT, et Bibo n'a
toujours pas de père (puisque cela n'a pas été commité dans la première
session). Donc on s'attendrait à ce que la requête UPDATE laisse pere_id
à NULL et modifie commentaires.
Qui plus est, le SELECT a été exécuté (vous devrez peut-être appuyer sur
Entrée pour que ce soit envoyé au serveur) et les modifications ayant été faites
par la session 1 ont été prises en compte : commentaires vaut 'Agressif' et
pere_id vaut 73 !
88
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Il n'y a plus qu'à commiter les changements faits par la deuxième session, et
c'est terminé ! Si vous ne commitez pas, commentaires restera NULL. Par
contre, pere_id vaudra toujours 73, puisque ce changement-là a été commité
par la première session.
Conclusion
La deuxième session n'a pas interagi avec les changements faits par la
première session, chaque transaction est bien isolée.
D pour Durabilité
Oui, une fois les changements commités, ils sont stockés définitivement
(jusqu'à modification par une nouvelle transaction).
89
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Après avoir créé notre base de données : elevage. Vous avez peut-être créé
également d'autres bases de données pour vos tests et projets personnels.
Mais ce ne sont pas les seules bases de données existant sur votre serveur
MySQL. Connectez-vous avec l'utilisateur "root" (sinon certaines bases de
données vous seront cachées) et exécutez la requête suivante :
SHOW DATABASES;
90
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Par exemple sur MySQL, tout au début de ce cours, vous avez créé un
utilisateur, puis lui avez donné des privilèges avec la commande suivante :
Cette requête a donné tous les droits sur la base de données elevage à
l'utilisateur 'student'@'localhost'.
Modifications
91
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
-- Création
-- Suppression
Sous ORACLE :
Pour pouvoir accéder aux données, on doit se connecter via un compte
utilisateur qui aura certains privilèges et une certaine visibilité de la base
de données.
Il existe 2 utilisateurs par défaut sur toute base Oracle :
L’utilisateur SYS, propriétaire des tables et des vues du dictionnaire
L’utilisateur SYSTEM, qui a simplement le droit de consultation de ces
objets.
Ces 2 utilisateurs ont par défaut le rôle DBA, ce qui veut dire qu'ils ont
accès à tous les objets de tous les autres utilisateurs de la base, et qu'ils
ont le droit d'exécuter certaines commandes d'exploitation et
d'administration. Un DBA peut créer des utilisateurs en utilisant la
requête CREATE USER. Lorsqu’un utilisateur est créé, il ne possède
aucun privilège. Le DBA doit lui donner des privilèges souhaités. A
chaque création d’un utilisateur correspond la création d’un schéma de
même nom Un compte utilisateur = Un schéma de BDD
C'est un ensemble de d'objets : tables, vues, index,...L'utilisateur crée,
modifie,... ses objets
Par Oracle
Par le SE2.
92
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Exemples:
CREATE USER Toto
IDENTIFIED [BY xyz /EXTERNALLY]
DEFAULT TABLESPACE data01
TEMPORARY TABLESPACE temp
QUOTA 15m ON data01 [UNLIMITED]
PROFILE Profil1
PASSWORD EXPIRE
ACCOUNT UNLOK [LOCK];
Modification
Avec ordre ALTER USER
Suppression de quota
ALTER USER Toto QUOTA 0 ON data01;
Quota illimité
ALTER USER Toto QUOTA UNLIMITED ON data01;
Suppression
Syntaxe : DROP USER utilisateur [CASCADE]
Option CASCADE : supprime tous les objets du schéma puis
supprime l'utilisateur
93
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Sont utilisés sur les gros systèmes pour contrôler l’utilisation des
ressources d’un groupe d’utilisateur par rapport à un autre
94
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Modification/suppression
Modification
ordre ALTER PROFILE
Exemple :
Suppression
ordre DROP PROFILE [CASCADE]
option CASCADE : assure que tous les utilisateurs ayant ce profil
seront mis à jour!
95
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Exemples :
select distinct profile from dba_profiles;
select * from dba_profiles where profile='DEFAULT';
SYSTEME
- permet aux utilisateurs d'effectuer des opérations touchant la structure
de la base (create tablespace, create database, alter system , create table,
create user, alter profile …)
- Il existe a peu prés 127 privilèges système qui sont classés par catégories
OBJET
- Un privilège objet permet d’exécuter une action particulière sur une
table, vue, fonction, séquence, procédure, package d’un schéma.
- Par exemple y accéder, la mettre a jour ou même y insérer des
information (select, update, insert, references, execute…)
Ordre GRANT permet d'ajouter un privilège à un utilisateur
Exemple :
GRANT create index, create table TO Toto;
Exemple :
REVOKE create table FROM Toto;
96
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Avec l'option
Privilèges Objets
Exemples:
GRANT execute ON dbms_pipe TO Toto;
GRANT select, update (nom, sal) ON emp TO Bob WITH GRANT OPTION;
REVOKE execute ON dbms_pipe FROM scott;
Exercice de synthèse:
Soit le schéma relationnel de la base de données suivante:
Voiture (numserie, couleur, prix, cout, marque, modele, nomp, prenomp)
Arrivee (numserie, date, magasin)
Client (nom, prenom, adresse)
97
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
(a) Donner la liste des voitures (numero) vendues après le 15 avril 2007.
SELECT Voiture.numserie
FROM Voiture, Vente
WHERE Voiture.numserie = Vente.numserie AND date > ’2007-04-15;
SELECT Voiture.numserie
FROM Voiture, Vente
WHERE Voiture.numserie = Vente.numserie
AND prixachat-cout >= ALL (SELECT prixachat-cout FROM Voiture,
Vente WHERE Voiture.numserie = Vente.numserie) ;
98
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Cette partie est une suite logique de la partie III que nous venons de voir. Car
nous avons largement abordé une partie de l’administration Oracle tout au
long de la partie précédente notamment dans la gestion des utilisateurs.
99
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Il est possible de mettre en place des réseaux grille nationaux, voire mondiaux.
Ainsi chaque nouveau système peut être rapidement mis à disposition à partir
du pool de composants.
100
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Facturation Comptabilité
HP-UNIX LINUX
Informatique en Grille
101
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Oracle Streams : Transfère des données entre les nœuds de la grille tout en
assurant la synchronisation des copies. Représente la meilleure méthode de
réplication.
Outils de développement
Oracle offre l’accès à un choix d’outils et processus de développement, avec de
nouvelles fonctionnalités comme Client Side Caching, Binary XML, un
nouveau compilateur Java, l’intégration native avec Microsoft Visual Studio
2005 pour les applications « .NET », Oracle Application Express pour les
outils de migration, ou encore SQL Developer pour coder rapidement les
routines SQL et PL/SQL.
102
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
3. Notion de schéma
Le terme SCHÉMA désigne l’ensemble des objets qui appartiennent à un
utilisateur, ces objets sont préfixés par le nom de l’utilisateur qui les a créés. Il
s’agit d’une notion logique désignant la totalité des objets créés par un
utilisateur.
C’est ainsi que la base Oracle peut faire la différence entre la table AVION
appartenant à l’utilisateur ESSONO (ESSONO.AVION) et la table avion
appartenant à l’utilisateur MBA (MBA.AVION). Chacun des utilisateurs
propriétaire des objets à tous les droits sur ces objets !
Tables et index
Directory
Vues, séquences et synonymes
Programmes PL/SQL (procédures, fonctions, packages, triggers)
4. Le dictionnaire de données
C’est un ensemble de tables et de vues qui donne des informations sur le
contenu d’une base de données. Il contient :
Il est créé lors de la création de la base de données, et mis à jour par Oracle
lorsque des ordres DDL (Data Définition Langage) sont exécutés, par exemple
103
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
V$INSTANCE
V$DATABASE
V$SGA
V$DATABASE
V$PARAMETER
104
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
7. Outils d’administration
Trois outils sont présents pour administrer une base de données Oracle
SQL*Plus (sqlplus), interface d’accès à la base de données en mode
commande. L’interface graphique de SQL*Plus n’est plus disponible sous la
version 11g d’Oracle.
8. L’outil SQL*Plus
Outil ligne de commande nommé SQLPLUS.
• sans connexion
C:\> SQLPLUS /NOLOG
• avec connexion
C:\> SQLPLUS system/ESSONO@ESSONO
• avec connexion et lancement d’un script sur la ligne de commande
C:\> SQLPLUS system/ESSONO@ESSONO @info.sql
• sous dos ---------------
set ORACLE_SID= ESSONO
• connection sans fichier de mots de passe
SQL> connect /as sysdba
ConnectÚ.
SQL> show user
105
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
106
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
9. L’outil iSQL*Plus
107
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
ORACLE_HOME\sqlplus\admin\iplusdba.pw
Désactiver l’authentification du serveur HTTP pour ce type de connexion
(directive <Location /isqlplusdba> dans le fichier de configuration
isqlplus.conf) Lors d’une connexion SYSDBA ou SYSOPER, l’URL est modifiée
en : http://serveur[:port]/isqlplusdba
108
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
109
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
110
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
111
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
I. Téléchargement
Rendez-vous à l’adresse suivante : https://www.oracle.com
Si vous disposez déjà d’un compte Oracle, il suffit de vous connecter sur le
compte personnel en entrant vos paramètres de connexion.
112
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Et si vous vous connectez pour la première fois sur le site, il vous faudra créer
un compte personnel Oracle
113
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
II. Installation
Décompresser le fichier téléchargé
114
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
115
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
116
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
117
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
118
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Architecture d’ORACLE
L’architecture d’oracle est constituée d’une instance et d’une base de données
appelée Database.
119
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
120
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Redo Log Buffer : Le Redo Log Buffer stocke les informations sur les
modifications apportées à la base, avant leur écriture dans un fichier de
Redo Log. L’écriture dans le Redo Log Buffer est séquentielle (les
modifications de plusieurs transactions se mélangent) et circulaire
(quand le buffer est plein, il repart au début … après avoir été écrit sur
disque dans les fichiers de Redo Log). Dimensionné par le paramètre
LOG_BUFFER.
121
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Ils réalisent des opérations et les actions sur l’instance et sur la base de
données. Comme l’écriture des fichiers de données, la récupération de la base
de données et la résolution des erreurs. Certains processus aussi aident à
augmenter la performance globale du système. Les principaux processus sont :
122
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
123
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
124
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Les fichiers de données sont découpés en blocs d’une taille définie à la création
de la base (2ko, 4ko, 8ko, …..). la taille du bloc oracle est définie par le
paramètre DB_BLOC_SIZE.
L’espace occupé par un objet dans un tablespace est désigné par le terme
générique de segment. Un segment appartient à un tablespace et est constitué
d’extents. Un extent est un ensemble de blocs contigus dans un fichier de
données.
SYSTEM est l’utilisateur que l’on préfèrera pour créer les objets de schéma tels
que les users, les tables, les index, …. (SYSTEM est un utilisateur qui a des
privilèges DBA).
CONNECT utilisateur/mot_de_passe@service_OracleNet
SQLPLUS /nolog
SQL> Connect ESSONO/monpass@bora
Connecté.
SQL> Connect SYSTEM/manager@bora
Connecté.
125
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Sous DOS
C:\>set oracle_sid=ESSONO
C:\>sqlplus /nolog
SQL > CONNECT /AS SYSDBA
Sous UNIX
Export ORACLE_SID=ESSONO
Echo ORACLE_SID
TAHITI
SQLPLUS /nolog
SQL> Connect /as sysdba
Connecté.
126
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
SQLPLUS /nolog
SQL> Connect SYS/secret@bora as SYSDBA
Connecté.
Set ORACLE_SID=orcl
Sqlplus /NOLOG
Connect as sysdba
Sous Unix
export ORACLE_SID=orcl
echo ORACLE_SID
orcl
Sqlplus /NOLOG
Connect as sysdba
127
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
OPEN :
- Les utilisateurs peuvent se connecter
- Création de tablespaces, de tables et d’index. Tous les fichiers de la base sont
ouverts
MOUNT :
- Administrer et modifier la structure de la base (ajout de fichiers)
- sauvegarde et restaurations. Fichiers de contrôle ouverts
NOMOUNT :
- Création de la base de données
- re-créer le fichier de contrôle
Pour rendre une base de données accessible à tous les utilisateurs, il faut
démarrer une instance et ouvrir la base avec cette instance. Il y a trois étapes
dans le processus de démarrage :
Démarrage de l’instance
Montage de la base
Ouverture de la base
128
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
SQL> startup
Instance ORACLE lancée
Redo Buffers
Base de données montée. 667648 bytes
Base de données ouverte.
SQL>
Fermeture de la base
Démontage de la base
Arrêt de l’instance
129
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Tapez la commande Startup avec les options souhaitées, puis démarrer une
instance sans associer de base (en vue d’en créer une nouvelle ou de recréer le
fichier de contrôle).
Redo Buffers
Database mounted. 524288 bytes
Database opened.
130
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
NOMOUNT----- MOUNT
MOUNT--------OPEN
131
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
NORMAL : Oracle attend que tous les utilisateurs soient déconnectés (pas de
nouvelle connexion autorisée) puis ferme proprement la base.
IMMEDIATE : Oracle déconnecte tous les utilisateurs (en effectuant un
ROLLBACK des éventuelles transactions en cours) puis ferme proprement la
base.
132
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Lorsque vous avez placé l’instance en mode restricted session vous pouvez
effectuer des tâches d’administration en étant seul connecté.
Pour ouvrir la base en mode RESTRICT il faut avoir les privilèges system :
CREATE SESSION et RESTRICTED SESSION.
STARTUP RESTRICT ;
INSTANCE_NAME LOGINS
ESSONO RESTRICTED
133
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Oracle laisse les sessions actives (reqêtes en cours) se terminer avant de passer
l’instance dans l’Etat QUIESCE (ce qui peut être long). Pendant de ce temps,
aucune session inactive ne peut devenir active (pas de nouvelle requête
autorisée). Pendant que l’instance est en état QUIESCE, les demandes de
connexion ou les nouvelles requêtes sont mises en attente sans message (la
session paraît alors bloquée).La colonne ACTIVE_STATE de la vue
V$INSTANCE donne l’état de la base de données :
ERREUR Ó la ligne 1 :
ORA-25507: le gestionnaire de ressources n'a pas été continuellement actif
134
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Gestion de l’instance
Au démarrage l’instance lit un fichier de paramètres binaire qui contient les
paramètres d’initialisation. Ce fichier est géré par le DBA. Il s’agit d’une sorte
de référentiel centralisé des paramètres d’initialisation de l’instance au
démarrage de la base de données.
135
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Dans ce dernier cas il faut arrêter puis redémarrer pour que la modification
soit prise en compte par l’instance.
-- se connecter as sysdba
SQL> connect /@ESSONO as sysdba
Connecté.
-- créer le fichier de paramètres SPFILE
SQL> create spfile from pfile='d:\tahiti\pfile\inittahiti.ora';
Fichier créé.
(*_SHARDE_POOL_SIZE)
C’est cette syntaxe qui est utilisée lors de l’export d’un fichier SPFILE.
136
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
INITorcl.ORA
orcl.__db_cache_size=96468992
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__oracle_base='C:\app\oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=146800640
orcl.__sga_target=281018368
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=163577856
orcl.__streams_pool_size=4194304
*.audit_file_dest='C:\app\oracle\admin\orcl\adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='C:\app\oracle\oradata\orcl\control01.ctl',
'C:\app\oracle\flash_recovery_area\orcl\control02.ctl'
*.db_block_size=8192
*.db_domain='26.1.15'
*.db_name='orcl'
*.db_recovery_file_dest='C:\app\oracle\flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='C:\app\oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.local_listener='LISTENER_ORCL'
*.memory_target=425721856
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
137
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
138
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
• SHOW parameter SGA : affiche tous les paramètres contenant le mot SGA
139
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
l’outil ORADIM (qui gère les services rattachés aux instance des bases oracle)
Démarrer l’instance en état NOMOUNT
Créer la base en utilisant l’outil DBCA ou en exécutant les scripts de création
de la base de données
générés par l’outil DBCA
Remplir la base de données
- Création des structures de stockage adaptées
- Création du compte Oracle qui va contenir les objets de l’application
- Création des objets de l’application dans ce compte Oracle
- Création des utilisateurs finaux de l’application
- Sauvegarde de la base de données
A partir de la version 10g, il faut utiliser DBCA pour créer une Base de
données.
ACCEPT sysPassword CHAR PROMPT 'Enter new password for SYS: ' HIDE
ACCEPT systemPassword CHAR PROMPT 'Enter new password for SYSTEM: ' HIDE
ACCEPT sysmanPassword CHAR PROMPT 'Enter new password for SYSMAN: ' HIDE
ACCEPT dbsnmpPassword CHAR PROMPT 'Enter new password for DBSNMP: ' HIDE
host C:\app\oracle\product\11.2.0\dbhome_1\bin\orapwd.exe
file=C:\app\oracle\product\11.2.0\dbhome_1\database\PWDtahiti.ora force=y
OLD_UMASK=`umask`
umask 0027
mkdir C:\app\oracle\admin\tahiti\dpdump
mkdir C:\app\oracle\admin\tahiti\pfile
mkdir C:\app\oracle\cfgtoollogs\dbca\tahiti
mkdir C:\app\oracle\flash_recovery_area
mkdir C:\app\oracle\flash_recovery_area\tahiti
mkdir C:\app\oracle\oradata\tahiti
mkdir C:\app\oracle\product\11.2.0\dbhome_1\database
umask ${OLD_UMASK}
set ORACLE_SID=tahiti
set PATH=%ORACLE_HOME%\bin;%PATH%
C:\app\oracle\product\11.2.0\dbhome_1\bin\oradim.exe -new -sid TAHITI -startmode
manual -spfile
C:\app\oracle\product\11.2.0\dbhome_1\bin\oradim.exe -edit -sid TAHITI -startmode auto
-srvcstart system
C:\app\oracle\product\11.2.0\dbhome_1\bin\sqlplus /nolog
@C:\app\oracle\admin\tahiti\scripts\tahiti.sql
140
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Creation de la base
141
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
L’outil DBCA
142
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
PROCESSES
Permet de limiter le nombre de processus simultanés sur le serveur.
143
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
144
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
145
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
REMOTE_LOGIN_PASSWORDFILE
A positionner selon la stratégie adoptée pour l’identification SYSDBA
NONE = pas de fichier de mots de passe – identification par l’OS
EXCLUSIVE = utilisation d’un fichier de mots de passe dédié à une base
SHARED = utilisation d’un fichier de mots de passe partagé entre plusieurs
bases
REMOTE_LOGIN_PASSWORDFILE = NONE
OPEN_CURSOR
Nombre maximum de curseurs ouverts en simultané. Compter 1 pour chaque
session ouverte en
simultanée et un pour chaque utilisateur interne à Oracle comme SYSMAN ou
DBSNMP. .
Ouvrir un grand nombre de curseurs évite une erreur de dépassement et n’a
aucune incidence sur la
base.
OPEN_CURSOR = 500
CURSOR_SHARING = EXACT
Description : ce paramètre contrôle les instructions SQL qui peuvent partager
le même curseur.
Plage de valeurs :
FORCE : oblige les instructions ne différant que par certains littéraux à
partager un curseur, à
moins que les littéraux ne modifient le sens de l'instruction.
EXACT : seules les instructions SQL identiques partagent un curseur.
Valeur par défaut : EXACT
STATISTICS_LEVEL
Niveau de collecte des statistiques sur la base de données et le système utilisés.
Valeurs possibles : BASIC, TYPICAL (par défaut), ALL
BASIC désactive la gestion automatique des statistiques
TYPICAL permet de bénéficier des fonctionnalités de la gestion automatique
de la version 10g
ALL collecte d’avantage de statistiques mais a un impact sur les performances
NLS_LANGUAGE
Langage par défaut de l’instance, utilisé pour les messages, la date et l’heure.
La valeur par défaut est
dérivée du paramètre NLS_LANG.
NLS_LANGUAGE = french
NLS_TERRITORY
Territoire par défaut de l’instance, utilisé pour la numérotation des jours et des
semaines. Détermine
146
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Sous Unix
Dans le fichier /etc/ORATAB, mettre une entrée pour chaque instance
<ORACLE_SID>:<ORACLE_HOME>:{Y|N}
ESSONO:/u01/app/oracle/product/10.1.0.3.:Y
Sous Windows
147
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Côté serveur :
148
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
C:\>LSNRCTL
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-AO•T -
2006 02: 26:41
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Bienvenue à LSNRCTL, tapez "aide" pour plus d'informations.
LSNRCTL>
LISTENER.ORA
149
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
150
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Les bases pour lesquelles le Listener écoute sont définies par l’identifiant de
l’instance (<SID>), le nom global de la base de données et le répertoire
d’Oracle (Oracle_Home). Le Listener peut écouter pour plusieurs bases de
données et éventuellement pour des versions d’Oracle différentes. Pour que
des postes distants puissent se connecter à la base il faut que le Listener soit
lancé. Le listener est utilisé à la première connexion d’un utilisateur. Après
la connexion, un arrêt et un redémarrage du Listener ne déconnecte pas les
utilisateurs déjà connectés. Lors d’une modification du Listener il faut
arrêter puis redémarrer celui-ci afin qu’elles soient prises en compte.
Côté client :
La configuration côté client se fait en modifiant le fichier Tnsname.ora, et en
lui ajoutant l’accès à la nouvelle instance.
151
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
EZCONNECT
En version Oracle 10g, vous pouvez vous connecter sans
Tnsname.ora grâce à EZCONNECT. Il suffit de configurer le
fichier SQLNET.Ora.
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\sqlnet.ora
connect USER/MotPasse@//[host]:[port]/[service_name]
Sqlplus /nolog
--connexion traditionnelle via le tnsnames
SQL> connect system/ESSONO@ESSONO
Connecté.
SQL>
C:\Documents and Settings\ATTOUCHE Clotilde>hostname TELLORA01
--dans SQLPLUS
--connexion via ezconnect
SQL> connect system/tahiti@//tellora01:1521/tahiti
Connecté.
152
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
Exemples
Le tsname.ora
scoora_tcp_WG73=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=scoora)
(PORT=1521))
(CONNECT_DATA=(SID=WG73)))
scoora_spx_WG73=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=SPX)
(SERVICE=scoora))
(CONNECT_DATA=(SID=WG73)))
153
LES BASES DE DONNEES ET LE SQL Par ESSONO ZUE Arnauld
hp_ora_tcp_INSTANCE_ORA=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
154