Vous êtes sur la page 1sur 44

11

Crer d'autres objets de schma

Copyright 2007, Oracle. Tous droits rservs.

Objectifs
A la fin de ce chapitre, vous pourrez :
crer des vues simples et des vues complexes
extraire des donnes partir de vues
crer, grer et utiliser des squences
crer et grer des index
crer des synonymes privs et des synonymes publics

11 - 2

Copyright 2007, Oracle. Tous droits rservs.

Contenu du chapitre
Prsentation des vues :
Crer et modifier une vue, et en extraire des donnes
Effectuer des oprations LMD sur une vue
Supprimer une vue

Prsentation des squences :


Crer, utiliser et modifier une squence
Mettre des valeurs de squence en mmoire cache
Utiliser les pseudo-colonnes NEXTVAL et CURRVAL

Prsentation des index :


Crer et supprimer des index

Prsentation des synonymes :


Crer et supprimer des synonymes

11 - 3

Copyright 2007, Oracle. Tous droits rservs.

Objets de base de donnes

11 - 4

Objet

Description

Table

Unit lmentaire de stockage, constitue de lignes

Vue

Reprsente de faon logique des sous-ensembles


de donnes issus d'une ou de plusieurs tables

Squence

Gnre des valeurs numriques

Index

Amliore les performances de certaines


interrogations d'extraction de donnes

Synonyme

Attribue un autre nom aux objets

Copyright 2007, Oracle. Tous droits rservs.

Vue : Prsentation
Table EMPLOYEES

11 - 5

Copyright 2007, Oracle. Tous droits rservs.

Avantages des vues

Simplifier les
interrogations
complexes

Limiter l'accs
aux donnes

Assurer
l'indpendance
des donnes

11 - 6

Prsenter
diffrentes vues des
mmes donnes

Copyright 2007, Oracle. Tous droits rservs.

Vues simples et vues complexes

11 - 7

Caractristique

Vues simples

Vues complexes

Nombre de tables

Une

Une ou plusieurs

Contiennent des fonctions Non

Oui

Contiennent des groupes


de donnes

Non

Oui

Oprations LMD par


l'intermdiaire d'une vue

Oui

Pas toujours

Copyright 2007, Oracle. Tous droits rservs.

Crer une vue


Imbriquez une sous-interrogation dans l'instruction CREATE
VIEW :
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];

La sous-interrogation peut contenir une syntaxe SELECT


complexe.

11 - 8

Copyright 2007, Oracle. Tous droits rservs.

Crer une vue


Crez la vue EMPVU80, qui contient les dtails relatifs aux
employs du dpartement 80 :
CREATE VIEW empvu80
AS SELECT employee_id, last_name, salary
FROM
employees
WHERE
department_id = 80;

Dcrivez la structure de la vue l'aide de la commande


DESCRIBE de iSQL*Plus :
DESCRIBE empvu80

11 - 9

Copyright 2007, Oracle. Tous droits rservs.

Crer une vue


Crez une vue en utilisant des alias de colonne
dans la sous-interrogation :
CREATE VIEW salvu50
AS SELECT employee_id ID_NUMBER, last_name NAME,
salary*12 ANN_SALARY
FROM
employees
WHERE
department_id = 50;

Slectionnez les colonnes de cette vue l'aide des alias


fournis.

11 - 10

Copyright 2007, Oracle. Tous droits rservs.

Extraire des donnes d'une vue

SELECT *
FROM
salvu50;

11 - 11

Copyright 2007, Oracle. Tous droits rservs.

Modifier une vue


Modifiez la vue EMPVU80 l'aide d'une clause CREATE OR
REPLACE VIEW. Ajoutez un alias pour chaque nom de
colonne :
CREATE OR REPLACE VIEW empvu80
(id_number, name, sal, department_id)
AS SELECT employee_id, first_name || ' '
|| last_name, salary, department_id
FROM
employees
WHERE
department_id = 80;

Les alias de colonne de la clause CREATE OR REPLACE VIEW


sont lists dans le mme ordre que les colonnes
de la sous-interrogation.

11 - 12

Copyright 2007, Oracle. Tous droits rservs.

Crer une vue complexe


Crez une vue complexe contenant des fonctions de groupe
pour afficher des valeurs provenant de deux tables :
CREATE OR REPLACE VIEW dept_sum_vu
(name, minsal, maxsal, avgsal)
AS SELECT
d.department_name, MIN(e.salary),
MAX(e.salary),AVG(e.salary)
FROM
employees e JOIN departments d
ON
(e.department_id = d.department_id)
GROUP BY d.department_name;

11 - 13

Copyright 2007, Oracle. Tous droits rservs.

Rgles relatives l'excution


d'oprations LMD sur une vue
Vous pouvez gnralement excuter
des oprations LMD sur des vues simples.
Vous ne pouvez pas supprimer une ligne si la vue contient
l'un des lments suivants :

11 - 14

des fonctions de groupe


une clause GROUP BY
le mot-cl DISTINCT
le mot-cl ROWNUM de pseudo-colonne

Copyright 2007, Oracle. Tous droits rservs.

Rgles relatives l'excution


d'oprations LMD sur une vue
Vous ne pouvez pas modifier les donnes
d'une vue si celle-ci contient l'un des lments suivants :
des fonctions de groupe
une clause GROUP BY
le mot-cl DISTINCT
le mot-cl ROWNUM de pseudo-colonne
des colonnes dfinies par des expressions

11 - 15

Copyright 2007, Oracle. Tous droits rservs.

Rgles relatives l'excution


d'oprations LMD sur une vue
Vous ne pouvez pas ajouter de donnes par l'intermdiaire
d'une vue si celle-ci inclut l'un des lments suivants :
des fonctions de groupe
une clause GROUP BY
le mot-cl DISTINCT
le mot-cl ROWNUM de pseudo-colonne
des colonnes dfinies par des expressions
des colonnes NOT NULL dans les tables de base qui ne sont
pas slectionnes par la vue

11 - 16

Copyright 2007, Oracle. Tous droits rservs.

Utiliser la clause WITH CHECK OPTION


La clause WITH CHECK OPTION permet de garantir
que les oprations LMD effectues sur la vue concernent
uniquement les lignes slectionnes par celle-ci :
CREATE OR REPLACE VIEW empvu20
AS SELECT
*
FROM
employees
WHERE
department_id = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck ;

Toute tentative d'insertion (INSERT) d'une ligne dont la valeur


department_id est diffrente de 20 ou de mise jour
(UPDATE) de l'ID de dpartement d'une ligne dans la vue
choue car il s'agit d'une violation de la contrainte WITH
CHECK OPTION.
11 - 17

Copyright 2007, Oracle. Tous droits rservs.

Empcher les oprations LMD


Vous pouvez empcher toute opration LMD en ajoutant
l'option WITH READ ONLY la dfinition de la vue.
Toute tentative de lancement d'une opration LMD sur une
ligne de la vue provoque le renvoi d'une erreur par le serveur
Oracle.

11 - 18

Copyright 2007, Oracle. Tous droits rservs.

Empcher les oprations LMD

CREATE OR REPLACE VIEW empvu10


(employee_number, employee_name, job_title)
AS SELECT
employee_id, last_name, job_id
FROM
employees
WHERE
department_id = 10
WITH READ ONLY ;

11 - 19

Copyright 2007, Oracle. Tous droits rservs.

Supprimer une vue


La suppression d'une vue n'entrane aucune perte de donnes,
car une vue est base sur les tables sous-jacentes de la base
de donnes.
DROP VIEW view;
DROP VIEW empvu80;

11 - 20

Copyright 2007, Oracle. Tous droits rservs.

Prsentation de l'exercice 11 : Premire partie


Dans cet exercice, vous allez :
crer une vue simple
crer une vue complexe
crer une vue avec une contrainte CHECK
modifier les donnes de la vue
supprimer des vues

11 - 21

Copyright 2007, Oracle. Tous droits rservs.

Contenu du chapitre
Prsentation des vues :
Crer et modifier une vue, et en extraire des donnes
Effectuer des oprations LMD sur une vue
Supprimer une vue

Prsentation des squences :


Crer, utiliser et modifier une squence
Mettre des valeurs de squence en mmoire cache
Utiliser les pseudo-colonnes NEXTVAL et CURRVAL

Prsentation des index :


Crer et supprimer des index

Prsentation des synonymes :


Crer et supprimer des synonymes

11 - 22

Copyright 2007, Oracle. Tous droits rservs.

Squences

11 - 23

Objet

Description

Table

Unit lmentaire de stockage, constitue de lignes

Vue

Reprsente de faon logique des sous-ensembles


de donnes issus d'une ou de plusieurs tables

Squence

Gnre des valeurs numriques

Index

Amliore les performances de certaines


interrogations

Synonyme

Attribue un autre nom aux objets

Copyright 2007, Oracle. Tous droits rservs.

Squences
Une squence :
peut automatiquement gnrer des numros uniques
est un objet partageable
peut tre utilise pour crer une valeur de cl primaire
remplace du code applicatif
permet un accs plus rapide ses valeurs lorsqu'elle
est mise en mmoire cache

2
1

11 - 24

4
3

6
5

8
7

Copyright 2007, Oracle. Tous droits rservs.

10
9

Instruction CREATE SEQUENCE : Syntaxe


Dfinissez une squence afin de gnrer automatiquement
des numros squentiels :
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];

11 - 25

Copyright 2007, Oracle. Tous droits rservs.

Crer une squence


Crez une squence nomme DEPT_DEPTID_SEQ utiliser
pour la cl primaire de la table DEPARTMENTS.
N'utilisez pas l'option CYCLE.
CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 10
START WITH 120
MAXVALUE 9999
NOCACHE
NOCYCLE;

11 - 26

Copyright 2007, Oracle. Tous droits rservs.

Pseudo-colonnes NEXTVAL et CURRVAL


NEXTVAL renvoie la valeur de squence disponible suivante.
Elle renvoie une valeur unique chaque fois qu'elle est
rfrence, mme pour des utilisateurs diffrents.
CURRVAL obtient la valeur de squence actuelle.
Pour que CURRVAL contienne une valeur, NEXTVAL doit tre
rfrence au pralable pour la mme squence.

11 - 27

Copyright 2007, Oracle. Tous droits rservs.

Utiliser une squence


Insrez un nouveau dpartement nomm Support
l'emplacement dont l'ID = 2500 :
INSERT INTO departments(department_id,
department_name, location_id)
VALUES
(dept_deptid_seq.NEXTVAL,
'Support', 2500);

Affichez la valeur actuelle de la squence


DEPT_DEPTID_SEQ :
SELECT
FROM

11 - 29

dept_deptid_seq.CURRVAL
dual;

Copyright 2007, Oracle. Tous droits rservs.

Mettre en mmoire cache les valeurs


d'une squence
La mise en mmoire cache des valeurs d'une squence
permet un accs plus rapide ces valeurs.
La prsence de trous dans une squence peut tre due :
une annulation
une dfaillance du systme
l'utilisation de cette squence dans une autre table

11 - 30

Copyright 2007, Oracle. Tous droits rservs.

Modifier une squence


Vous pouvez changer la valeur de l'incrment, la valeur
maximale, la valeur minimale, l'option de bouclage ou l'option
de mise en mmoire cache :
ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE;

11 - 31

Copyright 2007, Oracle. Tous droits rservs.

Rgles de modification d'une squence


Vous devez tre propritaire de la squence ou tre dot
du privilge ALTER pour cette squence.
Seuls les numros de squence ultrieurs sont affects
par la modification.
La squence doit tre supprime et recre si vous
souhaitez la dmarrer partir d'un autre numro.
Une validation est effectue.
Pour supprimer une squence, utilisez l'instruction DROP :
DROP SEQUENCE dept_deptid_seq;

11 - 32

Copyright 2007, Oracle. Tous droits rservs.

Contenu du chapitre
Prsentation des vues :
Crer, modifier et extraire des donnes dans une vue
Effectuer des oprations LMD sur une vue
Supprimer une vue

Prsentation des squences :


Crer, utiliser et modifier une squence
Mettre des valeurs de squence en mmoire cache
Utiliser les pseudo-colonnes NEXTVAL et CURRVAL

Prsentation des index :


Crer et supprimer des index

Prsentation des synonymes :


Crer et supprimer des synonymes

11 - 33

Copyright 2007, Oracle. Tous droits rservs.

Index

11 - 34

Objet

Description

Table

Unit lmentaire de stockage, constitue de lignes

Vue

Reprsente de faon logique des sous-ensembles


de donnes issus d'une ou de plusieurs tables

Squence

Gnre des valeurs numriques

Index

Amliore les performances de certaines


interrogations

Synonyme

Attribue un autre nom aux objets

Copyright 2007, Oracle. Tous droits rservs.

Index
Un index :
est un objet de schma
peut tre utilis par le serveur Oracle pour acclrer
l'extraction de lignes l'aide d'un pointeur
permet de rduire les E/S disque en fournissant
une mthode d'accs permettant de localiser rapidement
les donnes
est indpendant de la table qu'il indexe
est utilis et gr automatiquement par le serveur Oracle

11 - 35

Copyright 2007, Oracle. Tous droits rservs.

Modes de cration d'un index


Automatiquement : Un index unique est cr
automatiquement lorsque vous dfinissez une contrainte
PRIMARY KEY ou UNIQUE dans la dfinition d'une table.

Manuellement : Les utilisateurs peuvent crer des index non


uniques sur des colonnes afin d'acclrer l'accs aux lignes.

11 - 36

Copyright 2007, Oracle. Tous droits rservs.

Crer un index
Crez un index sur une ou plusieurs colonnes :
CREATE [UNIQUE][BITMAP]INDEX index
ON table (column[, column]...);

Rduisez le temps d'accs de l'interrogation la colonne


LAST_NAME de la table EMPLOYEES :
CREATE INDEX emp_last_name_idx
ON
employees(last_name);

11 - 37

Copyright 2007, Oracle. Tous droits rservs.

Rgles de cration d'un index


Crez un index dans les cas suivants :
Une colonne contient une plage tendue de valeurs.
Une colonne contient un grand nombre de valeurs NULL.
Une ou plusieurs colonnes sont frquemment utilises dans une clause
WHERE ou dans une condition de jointure.
La table est volumineuse ou il est prvu que la plupart des
interrogations extraient moins de 2 4 % des lignes de la table.

Ne crez pas d'index dans les cas suivants :


Les colonnes ne sont pas souvent utilises comme condition
dans l'interrogation.
La table est de petite taille ou il est prvu que la plupart des
interrogations extraient plus de 2 4 % des lignes de la table.

La table est mise jour frquemment.


Les colonnes indexes sont rfrences dans le cadre d'une expression.

11 - 38

Copyright 2007, Oracle. Tous droits rservs.

Supprimer un index
Supprimez un index du dictionnaire de donnes l'aide
de la commande DROP INDEX :
DROP INDEX index;

Supprimez l'index emp_last_name_idx du dictionnaire


de donnes :
DROP INDEX emp_last_name_idx;

Pour supprimer un index, vous devez en tre le propritaire


ou disposer du privilge DROP ANY INDEX.

11 - 39

Copyright 2007, Oracle. Tous droits rservs.

Contenu du chapitre
Prsentation des vues :
Crer, modifier et extraire des donnes dans une vue
Effectuer des oprations LMD sur une vue
Supprimer une vue

Prsentation des squences :


Crer, utiliser et modifier une squence
Mettre des valeurs de squence en mmoire cache
Utiliser les pseudo-colonnes NEXTVAL et CURRVAL

Prsentation des index :


Crer et supprimer des index

Prsentation des synonymes :


Crer et supprimer des synonymes

11 - 40

Copyright 2007, Oracle. Tous droits rservs.

Synonymes

11 - 41

Objet

Description

Table

Unit lmentaire de stockage, constitue de lignes

Vue

Reprsente de faon logique des sous-ensembles


de donnes issus d'une ou de plusieurs tables

Squence

Gnre des valeurs numriques

Index

Amliore les performances de certaines


interrogations

Synonyme

Attribue un autre nom aux objets

Copyright 2007, Oracle. Tous droits rservs.

Crer un synonyme pour un objet


Simplifiez l'accs aux objets en crant un synonyme
(autre nom pour un objet). Grce aux synonymes, vous
pouvez :
crer une rfrence plus simple une table appartenant
un autre utilisateur
raccourcir les noms d'objet trop longs
CREATE [PUBLIC] SYNONYM synonym
FOR
object;

11 - 42

Copyright 2007, Oracle. Tous droits rservs.

Crer et supprimer des synonymes


Dfinissez un nom abrg pour la vue DEPT_SUM_VU :
CREATE SYNONYM d_sum
FOR dept_sum_vu;

Supprimez un synonyme :
DROP SYNONYM d_sum;

11 - 43

Copyright 2007, Oracle. Tous droits rservs.

Synthse
Ce chapitre vous a permis d'apprendre :
crer, utiliser et supprimer des vues
gnrer automatiquement des numros de squence l'aide
d'un gnrateur de numros de squence
crer des index pour acclrer l'extraction de donnes
utiliser des synonymes pour attribuer d'autres noms des
objets

11 - 44

Copyright 2007, Oracle. Tous droits rservs.

Prsentation de l'exercice 11 : Deuxime partie


Dans cet exercice, vous allez :
crer des squences
utiliser des squences
crer des index non uniques
crer des synonymes

11 - 45

Copyright 2007, Oracle. Tous droits rservs.

Vous aimerez peut-être aussi