• Aucun résultat trouvé

Le nom d’une vue peut être utilisé partout où

N/A
N/A
Protected

Academic year: 2022

Partager "Le nom d’une vue peut être utilisé partout où "

Copied!
28
0
0

Texte intégral

(1)

Cours 1 : Les vues

Bases de données francesca.fiorenzi@u-psud.fr

(2)

Les vues

Les vues en deux mots : des tables virtuelles Les vues en une phrase : une vue est une table qui est le résultat d’une requête

(SELECT) à laquelle on a donné un nom

Le nom d’une vue peut être utilisé partout où

on peut mettre le nom d’une table : SELECT,

UPDATE, DELETE, INSERT, GRANT

(3)

Bases de données

Création d’une vue : syntaxe

CREATE [OR REPLACE]

[FORCE | NOFORCE] VIEW nom-de-vue [(attr

1

, …, attr

n

)]

AS requête

[WITH CHECK OPTION

[CONSTRAINT nom-contrainte]]

[WITH READ ONLY]

2019-2020 3

(4)

Utilisation d’une vue : comme si elle était une table

SELECT ...

FROM nom-de-vue

WHERE ...

(5)

Bases de données

Suppression d’une vue

DROP VIEW nom-de-vue

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

Les vues figurent dans les tables systèmes ALL_CATALOG,

USER_VIEWS et ALL_VIEWS

2019-2020 5

(6)

Renommer une vue

RENAME ancien-nom TO nouveau-nom

(7)

Exemple : vidéothèque

Bases de données

2019-2020 7

FILM EXEMPLAIRE LOCATION

numFilm numExemplaire numExemplaire

titre numFilm dateLocation

realisateur codeSupport login

vo dateEnvoi

probleme dateRetour

detailSupport

CLIENT login

INDIVIDU nomClient

numIndividu prenomClient

nomIndividu motDePasse

prenomIndividu adresse

(8)

Exemple (2)

CREATE OR REPLACE VIEW

exemplairePlus (num, vo, titre, real, support) AS SELECT numExemplaire, vo, titre,

nomIndividu, codesupport

FROM Exemplaire E, Film F, Individu WHERE E.numFilm = F.numFilm

AND realisateur = numIndividu

AND probleme IS NULL;

(9)

Exemple (3)

SELECT num, titre, dateLocation, login FROM exemplairePlus, Location

WHERE num = numExemplaire AND real = 'SAUTET'

AND dateRetour IS NULL;

2019-2020 Bases de données 9

(10)

Exemple (4)

INSERT INTO exemplairePlus (num, support) VALUES (150346, 'DVD');

DROP VIEW exemplairePlus;

(11)

Bases de données

Quatre raisons d’utiliser des vues

1) Effet macro : remplacer une requête compliquée par des requêtes plus

simples

2) Confidentialité

3) Contraintes d’intégrité

4) Augmenter l’indépendance logique

2019-2020 11

(12)

1) Effet macro

Remplacer une requête compliquée

par des requêtes plus simples

(13)

Bases de données

2) Confidentialité : exemple

CREATE VIEW emprunteurRestreint

AS SELECT login, nomClient, prenomClient FROM client

2019-2020 13

(14)

3) Contraintes d’intégrité (CHECK OPTION) : exemple

CREATE VIEW anciensExemplaires AS SELECT * FROM Exemplaire

WHERE numExemplaire < 2000 WITH CHECK OPTION;

UPDATE anciensExemplaires SET numExemplaire = 3812

WHERE numExemplaire = 1318;

Sans 'WITH CHECK OPTION', c’est possible.

Avec 'WITH CHECK OPTION', c’est impossible.

(15)

Bases de données

4) Augmenter

l’indépendance logique

Les applications utilisant les tables de la base ne doivent pas être modifiées si on change le schéma de la base

2019-2020 15

(16)

Conditions de mise à jour pour les vues

Pour UPDATE, DELETE, INSERT la vue ne doit pas contenir :

• Un opérateur ensembliste (UNION, MINUS, INTERSECT)

• Un opérateur DISTINCT

• Une fonction d’agrégation comme attribut

• Une clause GROUP BY

• Une jointure (la vue doit être construite sur une seule table)

(17)

Bases de données

Conditions de mise à jour pour les vues (2)

Pour UPDATE, DELETE, INSERT :

• Les colonnes résultats de l’ordre SELECT doivent être des colonnes

réelles d’une table de la base et non des expressions

• Si la vue est construite à partir d’une

autre vue, cette dernière doit elle-même vérifier les conditions ci-dessus

2019-2020 17

(18)

Cas particulier d’Oracle

Une table T préserve la clé dans une vue V si la clé primaire de la table T désigne une seule ligne de la vue (elle pourrait être une clé de la vue si celle-ci était une vraie table) On peut faire une mise à jour si les

colonnes référencées dans la mise à jour appartiennent toutes à la même table et

(19)

Cas particulier

d’Oracle : exemple

CREATE VIEW locationBis AS SELECT

E.numExemplaire, nomClient, prenomClient, dateEnvoi, dateRetour, numFilm

FROM Exemplaire E, Location L, Client C

WHERE E.numExemplaire = L.numExemplaire AND L.login = C.login;

La table location préserve la clé dans la vue locationBis

Les tables client et exemplaire ne préservent pas la clé dans la vue locationBis

Bases de données

2019-2020 19

(20)

Cas particulier

d’Oracle : exemple (2)

UPDATE locationBis

SET dateRetour = SYSDATE WHERE nomClient = 'Martin' AND numFilm = 1;

Mise à jour possible

(21)

Bases de données

Cas particulier

d’Oracle : exemple (3)

UPDATE locationBis SET numFilm = 4

WHERE nomClient = 'Duval';

Mise à jour impossible

2019-2020 21

(22)

Cas particulier

d’Oracle : exemple (4)

INSERT INTO locationBis ( numExemplaire, dateEnvoi, nomClient, prenomClient) VALUES(4578, SYSDATE, 'FIORENZI', 'FRANCESCA');

Insertion impossible

(23)

Bases de données

Rappels

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

2019-2020 23

(24)

Les séquences

Générer des valeurs (numériques)

• Par exemple de clés primaires

Coordonner les valeurs de clés dans

plusieurs lignes ou tables

(25)

Création : syntaxe

CREATE SEQUENCE nom-séquence [INCREMENT BY ( 1 | valeur )]

[START WITH valeur ]

[ MAXVALUE valeur | NOMAXVALUE ] [ MINVALUE valeur | NOMINVALUE ] [ CYCLE | NOCYCLE ]

[ CACHE ( valeur | 20 ) | NOCACHE ]

Prégénération des valeurs (nombre

des valeurs stockées en mémoire) 25

(26)

Suppression : syntaxe

DROP SEQUENCE nom-séquence

(27)

Bases de données

Exemple

CREATE SEQUENCE masequence START WITH 1000

INCREMENT BY 30 NOMAXVALUE

NOCYCLE

2019-2020 27

(28)

Exemple (suite)

INSERT INTO film (numFilm, titre)

VALUES(masequence.NEXTVAL, 'Kill Bill') INSERT INTO exemplaire (numExemplaire,

numFilm)

VALUES (290870, masequence.CURRVAL)

Références

Documents relatifs

« Mais qui ose en affronter les suites ? » : Emil Cioran et les rapports entre la vanité, le suicide et l ’écriture. 153 Mylène Danglades ,

Les figures à l ’épreuve du silence : cas de la litote et de l ’ellipse dans l ’œuvre.

Dialogue de la littérature et la peinture dans Femmes d’Alger dans leur appartement.

L’Encyclopédie « entière » ou comment mettre en relation le discours et les planches, à travers l’exemple du traitement en image et en texte de l’étonnement..

Le motif du vagabondage dans quelques nouvelles « noires » d’Émile Zola.. 38

La toile et le voile : l’art, la littérature et le sacré dans trois récits romantiques.. 58

[r]

[r]