Vous êtes sur la page 1sur 28

SQL : vues

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

elmouelhi.achref@gmail.com

06 Octobre 2017, H & H: Research and Training 1 / 16


Plan

1 Définition

2 Création

3 Suppression

4 Propriétés

5 Manipulation de données d’une vue

6 Options d’une vue

06 Octobre 2017, H & H: Research and Training 2 / 16


Définition

SQL

Vue
Comme une table virtuelle : physiquement inexistante
Définie par un nom et une requête SQL
I c

Pouvant être interrogée comme une tableEL
H
M OêtreUmise à jour
f E L
Pouvant, sous certaines conditions,

c h re
c A

06 Octobre 2017, H & H: Research and Training 3 / 16


Définition

SQL

Vue
Comme une table virtuelle : physiquement inexistante
Définie par un nom et une requête SQL
I c

Pouvant être interrogée comme une tableEL
H
M OêtreUmise à jour
f E L
Pouvant, sous certaines conditions,

c h re
c A
Remarque

Une mise à jour des tables à partir desquelles une vue est définie se
propage aux vues.

06 Octobre 2017, H & H: Research and Training 3 / 16


Définition

SQL
Avantages

Rassembler les données logiques même si elles sont définies sur


plusieurs tables

I c
Simplifier les requêtes en masquant la complexité du schéma
L H
si E
Sécuriser l’accès à certaines colonnesU
pas avec la requête de la vue. M
O on ne les sélectionne

fE L
c h r e
c A

06 Octobre 2017, H & H: Research and Training 4 / 16


Définition

SQL
Avantages

Rassembler les données logiques même si elles sont définies sur


plusieurs tables

I c
Simplifier les requêtes en masquant la complexité du schéma
L H
si E
Sécuriser l’accès à certaines colonnesU
pas avec la requête de la vue. M
O on ne les sélectionne

fE L
c h r e
c A
Inconvénients
Restrictions sur les mises à jour
Coût : chaque appel d’une vue vaut l’exécution de la requête
select précisée à la création

06 Octobre 2017, H & H: Research and Training 4 / 16


Création

SQL
Syntaxe de création
CREATE [OR REPLACE] VIEW nom_vue [ ( colonnes ) ] AS
requêteSelect
[WITH [CASCADED | LOCAL] CHECK OPTION]

I c

ELH
U
L MO
f E
c hre
c A

06 Octobre 2017, H & H: Research and Training 5 / 16


Création

SQL
Syntaxe de création
CREATE [OR REPLACE] VIEW nom_vue [ ( colonnes ) ] AS
requêteSelect
[WITH [CASCADED | LOCAL] CHECK OPTION]

I c

ELH
Exemple U
L
CREATE OR REPLACE VIEW marseillaisMO
AS
E
SELECT num, nom, prenom, fsalaire
re
FROM personne
c h
c A
WHERE ville = ’Marseille’;

06 Octobre 2017, H & H: Research and Training 5 / 16


Création

SQL
Syntaxe de création
CREATE [OR REPLACE] VIEW nom_vue [ ( colonnes ) ] AS
requêteSelect
[WITH [CASCADED | LOCAL] CHECK OPTION]

I c

ELH
Exemple U
L
CREATE OR REPLACE VIEW marseillaisMO
AS
E
SELECT num, nom, prenom, fsalaire
re
FROM personne
c h
c A
WHERE ville = ’Marseille’;

Une vue peut être interrogée comme une table


SELECT *
FROM marseillais;

06 Octobre 2017, H & H: Research and Training 5 / 16


Suppression

SQL

I c

Syntaxe de suppression ELH
U
DROP VIEW nom_vue;
L MO
f E
c hre
c A

06 Octobre 2017, H & H: Research and Training 6 / 16


Propriétés

SQL

On peut créer une vue multi-tables


CREATE OR REPLACE VIEW vehicule_marseillais AS
SELECT marque, modele, ville, nom, prenom
I c

FROM personne, vehicule
ELH
WHERE ville = ’Marseille’ U
AND nump = num;
L MO
f E
c hre
c A

06 Octobre 2017, H & H: Research and Training 7 / 16


Propriétés

SQL

On peut créer une vue multi-tables


CREATE OR REPLACE VIEW vehicule_marseillais AS
SELECT marque, modele, ville, nom, prenom
I c

FROM personne, vehicule
ELH
WHERE ville = ’Marseille’ U
AND nump = num;
L MO
f E
A c hre
Cette vue c
peut aussi être interrogée comme une table
SELECT *
FROM vehicule_marseillais;

06 Octobre 2017, H & H: Research and Training 7 / 16


Propriétés

SQL

On peut créer une vue à partir d’une autre vue


CREATE OR REPLACE VIEW cadre_marseillais AS
SELECT * I c

FROM marseillais
ELH
U
WHERE salaire >= 2000;
L MO
f E
c hre
c A

06 Octobre 2017, H & H: Research and Training 8 / 16


Propriétés

SQL

On peut créer une vue à partir d’une autre vue


CREATE OR REPLACE VIEW cadre_marseillais AS
SELECT * I c

FROM marseillais
ELH
U
WHERE salaire >= 2000;
L MO
f E
c hre
c A

Cette vue peut aussi être interrogée comme une table
SELECT *
FROM cadre_marseillais;

06 Octobre 2017, H & H: Research and Training 8 / 16


Propriétés

SQL

I c
Exercice 1
H
ELqui ont le plus grand
U
MO
En utilisant les vues, sélectionnez les personnes
nombre de voitures en utilisant les
E L deux fonctions d’agrégation max et
count.
c h ref
c A

06 Octobre 2017, H & H: Research and Training 9 / 16


Manipulation de données d’une vue

SQL

Conditions pour la mise à jour

Si la vue est définie à partir de plusieurs tables, il faut que les


modifications concernent une seule table.
I c

ELH
Il ne faut pas que la requête de la vue contienne les mots-clés
U
MO
suivants :
DISTINCT
f E L
LIMIT
c hre
c A

GROUP BY
HAVING
UNION
une fonction d’agrégation

06 Octobre 2017, H & H: Research and Training 10 / 16


Manipulation de données d’une vue

SQL
Modifier le modèle (de la table véhicule) est possible

UPDATE vehicule_marseillais
SET modele = ’focus’
WHERE marque = ’ford’;

I c

ELH
U
L MO
f E
c hre
c A

06 Octobre 2017, H & H: Research and Training 11 / 16


Manipulation de données d’une vue

SQL
Modifier le modèle (de la table véhicule) est possible

UPDATE vehicule_marseillais
SET modele = ’focus’
WHERE marque = ’ford’;

I c

ELH
Modifier le nom (de la table personne) est possible
U
UPDATE vehicule_marseillais
L MO
SET nom = ’mercure’
f E
WHERE prenom = ’sophie’;
c hre
c A

06 Octobre 2017, H & H: Research and Training 11 / 16


Manipulation de données d’une vue

SQL
Modifier le modèle (de la table véhicule) est possible

UPDATE vehicule_marseillais
SET modele = ’focus’
WHERE marque = ’ford’;

I c

ELH
Modifier le nom (de la table personne) est possible
U
UPDATE vehicule_marseillais
L MO
SET nom = ’mercure’
f E
WHERE prenom = ’sophie’;
c hre
c A

Modifier le nom (de la table personne) et le modèle (de la table véhicule) est impossible

UPDATE vehicule_marseillais
SET nom = ’mercure’,
modele = ’focus’
WHERE prenom = ’sophie’;

06 Octobre 2017, H & H: Research and Training 11 / 16


Manipulation de données d’une vue

SQL

Conditions pour l’insertion = conditions pour la mise à jour +


I c
H
Les colonnes not null d’une table, n’ayantLpas une valeur par
E
défaut, doivent être présentes dansOle U
select de création de la
vue L M
f E
recolonnes
A c h
Il ne faut pas avoir de dupliquées dans la vue (select
* dans
cune jointure)

06 Octobre 2017, H & H: Research and Training 12 / 16


Manipulation de données d’une vue

SQL
Insérer le tuple suivant (dans la table véhicule) est possible
INSERT INTO vehicule_marseillais
SET modele = ’ibiza’,
marque = ’seat’;
I c

ELH
U
L MO
f E
c hre
c A

06 Octobre 2017, H & H: Research and Training 13 / 16


Manipulation de données d’une vue

SQL
Insérer le tuple suivant (dans la table véhicule) est possible
INSERT INTO vehicule_marseillais
SET modele = ’ibiza’,
marque = ’seat’;
I c
EL H
O U
Insérer un tuple dans une vue L quiM
implique deux insertions dans
deux tables différentes e
r (un E dans la table véhicule et un
f premier
deuxième dans la c
A h
table personne) est impossible
INSERT INTO
c
vehicule_marseillais
SET nom = ’green’,
prenom = ’michel’,
modele = ’captur’,
marque = ’renault’;

06 Octobre 2017, H & H: Research and Training 13 / 16


Manipulation de données d’une vue

SQL

I c
H
ELla mise à jour +
Conditions pour la suppression = conditions pour
U
La vue est mono-table
L MO
h r e fE
A c
c

06 Octobre 2017, H & H: Research and Training 14 / 16


Options d’une vue

SQL
Syntaxe de création
CREATE [OR REPLACE] VIEW nom_vue [ ( colonnes ) ] AS
requêteSelect
[WITH [CASCADED | LOCAL] CHECK OPTION]

I c

ELH
U
L MO
f E
c hre
c A

06 Octobre 2017, H & H: Research and Training 15 / 16


Options d’une vue

SQL
Syntaxe de création
CREATE [OR REPLACE] VIEW nom_vue [ ( colonnes ) ] AS
requêteSelect
[WITH [CASCADED | LOCAL] CHECK OPTION]

I c

ELH
U
MO
Explication

f E L
hre
check option permet de modifier une vue à condition que le tuple modifié

c
appartienne encore à la vue après la mise à jour

c A

check option interdit également l’insertion dans une vue d’un tuple contenant
une valeur qui ne satisfait pas la condition de sélection de la vue.

WITH LOCAL CHECK OPTION : on vérifie seulement les conditions de la vue.

WITH CASCADED CHECK OPTION (par défaut) : on vérifie les conditions de la


vue et celles des vues à partir desquelles on l’a créée.

06 Octobre 2017, H & H: Research and Training 15 / 16


Options d’une vue

SQL
Considérons la vue suivante
CREATE OR REPLACE VIEW cadre_marseillais AS
SELECT *
FROM marseillais
WHERE salaire >= 2000
WITH CHECK OPTION;
I c

ELH
U
L MO
f E
c hre
c A

06 Octobre 2017, H & H: Research and Training 16 / 16


Options d’une vue

SQL
Considérons la vue suivante
CREATE OR REPLACE VIEW cadre_marseillais AS
SELECT *
FROM marseillais
WHERE salaire >= 2000
WITH CHECK OPTION;
I c

ELH
O U
L M
f E VALUES(8, ’freeman’, ’henri’,
Il est possible d’ajouter un nouveau tuple à cette vue

h r
INSERT INTO cadre_marseillais
c e
2500);
c A

06 Octobre 2017, H & H: Research and Training 16 / 16


Options d’une vue

SQL
Considérons la vue suivante
CREATE OR REPLACE VIEW cadre_marseillais AS
SELECT *
FROM marseillais
WHERE salaire >= 2000
WITH CHECK OPTION;
I c

ELH
O U
L M
f E VALUES(8, ’freeman’, ’henri’,
Il est possible d’ajouter un nouveau tuple à cette vue

h r
INSERT INTO cadre_marseillais
c e
2500);
c A
Ajouter un tuple qui ne remplit pas les conditions de création d’une vue est
impossible
INSERT INTO cadre_marseillais VALUES(9,’freuder’,’jennifer’
,1500);

06 Octobre 2017, H & H: Research and Training 16 / 16