Vous êtes sur la page 1sur 22

Faculté des Sciences de

Monastir Cours: Administration des Bases de


Données

Enseignant: Salma CHAIEB


salma.chaieb2@yahoo.com

2ème année Licence en Chapitre 3:


Informatique (Semestre 2) Vues, Index, Séquences
AU 2022/2023
1
Plan du Chapitre

1. Vues

2. Index

1. Séquences

2
1. Les Vues
1.1 Définition

Une vue est une table virtuelle qui est le résultat d’une requête (SELECT) à laquelle on
donne un nom et dans laquelle il est possible de rassembler des informations provenant
de plusieurs tables.

Les données de la vue sont virtuelles c-à-d ne sont pas stockées dans une table de la base
de données. On parle de "vue" car il s'agit simplement d'une représentation des données
dans le but d'une exploitation visuelle.
Le nom d’une vue peut être utilisé partout où on peut mettre le nom d’une table : SELECT,
UPDATE, DELETE, INSERT, GRANT…

Les avantages des vues sont :


• d'éviter de taper une requête très longue : la vue sert à donner un nom à la
requête pour l'utiliser souvent,
• de masquer certaines données à certains utilisateurs. En SQL, les protections d'une
vue ne sont pas forcément les mêmes que celles des tables sous-jacentes.

3
1. Les Vues
1.2 Syntaxe
 Création d’une vue

CREATE [OR REPLACE] View


nom_vue [(attr1, …, attrn)]
AS requête_SELECT
[WITH CHECK OPTION]
[WITH READ ONLY] ;

OR REPLACE : remplace la vue par la nouvelle définition même si elle existait déjà,

WITH CHECK OPTION: empêche un ajout ou une modification non conformes à la


définition de la vue,

WITH READ ONLY: déclare la vue non modifiable par INSERT, UPDATE, ou DELETE.

4
Table Produits
1. Les Vues
1.2 Syntaxe
 Exemple simple

vue_produits
CREATE VIEW vue_produits
(numéroProd, nomProduit) AS
SELECT codProd, designation
FROM Produits ;

vue_produits
CREATE OR REPLACE VIEW
vue_produits AS
SELECT * FROM Produits WHERE
PRIX <150 ;

5
Table Produits
1. Les Vues
1.2 Syntaxe
 Exemple avec « with check
option »

CREATE OR REPLACE VIEW vue_produits


AS
SELECT * FROM Produits WHERE PRIX <150
WITH CHECK OPTION ;

INSERT INTO vue_produits


VALUES (1003, ‘Nappe’, ‘blanc’, 10, 1111, 2, 5, 45) ;

INSERT INTO vue_produits


VALUES (1007, ‘grand lit’, ‘rouge’, 105, 1111, 1, 20, 4500) ;

6
Table Produits
1. Les Vues
1.2 Syntaxe
 Exemple avec « with read
only »

CREATE OR REPLACE VIEW vue_produits


AS
SELECT * FROM Produits
WITH READ ONLY ;

INSERT INTO vue_produits


VALUES (1007, ‘grand lit’, ‘rouge’, 105, 1111, 1, 20, 4500) ;

Même chose pour les opérations UPDATE et DELETE.

7
1. Les Vues
1.2 Syntaxe
 Utilisation d’une vue

SELECT … FROM nom_vue


WHERE …. ;
Une fois créée la vue est utilisée comme si elle était une table.

 Suppression d’une vue

DROP VIEW nom_vue ;

La suppression d’une vue n’entraîne pas la suppression des données.

 Renommer une vue


RENAME ancien_nom_vue TO
nouveau_non_vue ;

8
1. Les Vues
1.2 Syntaxe

 Accorder des privilèges sur une vue

Vous pouvez accorder des privilèges sur les vues à des utilisateurs
spécifiques sans devoir leur accorder l’accès aux tables de base.

GRANT privilèges ON nom_vue


TO users/roles ;

9
1. Les Vues
Remarques

 La définition de la vue est enregistrée dans la base de données, mais les


lignes correspondant à la vue ne le sont pas.

 A deux instants distincts, le « contenu » d’une vue peut changer (si le


contenu des tables qui entrent dans la description de la vue a évolué). En
effet, le contenu d’une vue est recalculé à chaque utilisation de la vue par
SQL.

10
2. Les Séquences
2.1 Définition

 Une séquence est un objet défini par l'utilisateur qui génère une séquence de
valeurs numériques.

 La séquence de valeurs numériques est générée dans un ordre croissant ou


décroissant à un intervalle défini et peut être configurée pour être redémarrée
(cycle) une fois épuisée.

 Les séquences permettent de générer automatiquement des numéros uniques


(en général pour créer une valeur de clé primaire artificielle).

 Elles remplissent une fonction de compteur :


o mémoriser une valeur,
o retourner la valeur,
o incrémenter la valeur.

11
2. Les Séquences
2.2 Syntaxe
 Création d’une séquence
CREATE SEQUENCE nom_sequence [AS type]
[ START WITH valeur ]
[ INCREMENT BY valeur ]
[ MAXVALUE valeur | NO MAXVALUE ]
[ MINVALUE valeur | NO MINVALUE ]
[ CYCLE | NO CYCLE ]

AS type : Une séquence peut être définie comme tout type entier. Les types suivants sont autorisés:

• tinyint : plage comprise entre 0 et 255


• smallint : plage comprise entre -32 768 et 32 767
• int : plage comprise entre -2 147 483 648 et 2 147 483 647
• bigint : plage comprise entre -9 223 372 036 854 775,808 et 9 223 372 036 854 775 807
• décimal et numérique avec une échelle de 0.
• Si aucun type de données n’est fourni, le type de données bigint est utilisé comme valeur par défaut.

12
2. Les Séquences
2.2 Syntaxe
 Création d’une séquence

CREATE SEQUENCE nom_sequence [AS type]


[ START WITH valeur ]
[ INCREMENT BY valeur ]
[ MAXVALUE valeur | NO MINVALUE ]
[ MINVALUE valeur | NO MAXVALUE ]
[ CYCLE | NO CYCLE ]

START WITH: Première valeur retournée par l'objet séquence. La valeur START doit être une valeur inférieure
ou égale à la valeur maximale et supérieure ou égale à la valeur minimale de l’objet séquence.

La valeur de début par défaut d'un nouvel objet séquence correspond à la valeur minimale pour un objet
séquence croissant et à la valeur maximale pour un objet séquence décroissant.

13
2. Les Séquences
2.2 Syntaxe
 Création d’une séquence

CREATE SEQUENCE nom_sequence [AS type]


[ START WITH valeur ]
[ INCREMENT BY valeur ]
[ MAXVALUE valeur | NO MINVALUE ]
[ MINVALUE valeur | NO MAXVALUE ]
[ CYCLE | NO CYCLE ]

INCREMENT BY: Valeur utilisée pour incrémenter (ou décrémenter si la valeur est négative) la valeur de l’objet
séquence pour chaque appel à la fonction NEXT VALUE FOR.

Si l'incrément est une valeur négative, l'objet séquence décroît ; sinon, il croît. L'incrément ne peut pas avoir
la valeur 0. L'incrément par défaut pour un nouvel objet séquence est 1.

14
2. Les Séquences
2.2 Syntaxe
 Création d’une séquence

CREATE SEQUENCE nom_sequence [AS type]


[ START WITH valeur ]
[ INCREMENT BY valeur ]
[ MAXVALUE valeur | NO MINVALUE ]
[ MINVALUE valeur | NO MAXVALUE ]
[ CYCLE | NO CYCLE ]

MAXVALUE: Spécifie les limites de l'objet séquence. La valeur maximale par défaut d'un nouvel objet
séquence correspond à la valeur maximale du type de données de l'objet séquence.

MINVALUE: Spécifie les limites de l'objet séquence. La valeur minimale par défaut d'un nouvel objet séquence
correspond à la valeur minimale du type de données de l'objet séquence. Il s’agit de zéro pour le type de
données tinyint et d’un nombre négatif pour tous les autres types de données.

15
2. Les Séquences
2.2 Syntaxe
 Création d’une séquence

CREATE SEQUENCE nom_sequence [AS type]


[ START WITH valeur ]
[ INCREMENT BY valeur ]
[ MAXVALUE valeur | NO MINVALUE ]
[ MINVALUE valeur | NO MAXVALUE ]
[ CYCLE | NO CYCLE ]

CYCLE: Propriété qui spécifie si l'objet séquence doit redémarrer de la valeur minimale (ou maximale pour les
objets de séquence décroissante) ou générer une exception lorsque sa valeur minimale ou maximale est
dépassée.

L'option de cycle par défaut pour les nouveaux objets séquences est NO CYCLE.

16
2. Les Séquences
2.2 Syntaxe

 Utilisation d’une séquence


CREATE SEQUENCE seq_produit
START WITH 1009
INCREMENT BY 1
NO MAXVALUE
NO CYCLE ;

Currval: renvoie la valeur courante de l’objet séquence.


Insert into produits(seq_produit.currval, ‘robinet’, ‘blanc’, 105, 1111, 1, 20, 450)
(1009, ‘robinet’, ‘blanc’, 105, 1111, 1, 20, 450)

Nextval : avance l'objet séquence à sa prochaine valeur et renvoie cette valeur.


Insert into produits(seq_produit.nextval, ‘robinet’, ‘blanc’, 105, 1111, 1, 20, 450)

(1010, ‘robinet’, ‘blanc’, 105, 1111, 1, 20, 450)

17
2. Les Séquences
2.2 Syntaxe

 Modification d’une séquence

ALTER SEQUENCE nom_sequence


RESTART WITH nouv_valeur
INCREMENT BY nouv_valeur
MAXVALUE nouv_valeur | NO MAXVALUE
MINVALUE nouv_valeur | NO MINVALUE
CYCLE | NO CYCLE ;

 Suppression d’une séquence

DROP SEQUENCE nom_sequence ;

DROP SEQUENCE seq_produit ;

18
3. Les Index
3.1 Définition

 Un index est une structure sur disque associée à une table ou une vue qui
accélère l'extraction des lignes de la table ou de la vue. Il contient des
clés créées à partir d'une ou plusieurs colonnes de la table ou de la vue.

 L’index est utile pour accélérer l’exécution d’une requête SQL qui lit des
données et ainsi améliorer les performances d’une application utilisant
une base de données.

 Créer un index ne modifie pas les données de la table. Cela crée une
nouvelle structure de données faisant référence à la table.

 Un index de base de données ressemble très fortement à l'index d'un


livre : il occupe de la place, il est redondant et il fait référence aux
informations réelles stockées ailleurs.

19
3. Les Index
3.2 Syntaxe

CREATE INDEX nom_index ON


nom_tab / nom_vue (att1, att2, … attn) ;

CREATE INDEX index_des ON Produits


(designation) ;

CREATE INDEX index_2 ON Produits


(designation, couleur) ;

20
3. Les Index
3.3 Exemple

SELECT * FROM Produits WHERE ID=9 ;

 Cas où l’index n’existe pas:


parcourir toutes les lignes jusqu’à ID=9

 Cas où l’index existe:


Recherche dichotomique
CREATE INDEX index_des ON Produits (ID) ;

21
3. Les Index
3.4 Quand doit-on créer un index ?

• Une colonne est utilisée fréquemment dans une clause WHERE ou dans une
condition de jointure,
• Une colonne contient beaucoup de valeurs,
• Une colonne contient un grand nombre de valeurs nulles,
• Quand plus de deux colonnes sont fréquemment utilisées ensemble dans une
clause WHERE ou une condition de jointure,
• Quand une table est très large (beaucoup de lignes) et les requêtes récupèrent
moins de 2 à 4% des lignes…

 Les SGBDs créent automatiquement un index sur chaque clé primaire de la table.
 Les SGBDs créent automatiquement un index sur chaque contrainte d’unicité
(UNIQUE) dans une table.
 Il n’y a pas d’index créé automatiquement par le SGBD derrière une clé étrangère.

22

Vous aimerez peut-être aussi