0% ont trouvé ce document utile (0 vote)
4 vues30 pages

Guide des Vues SQL en MySQL

Le document traite des vues dans MySQL, définies comme des tables virtuelles basées sur des requêtes SQL. Il couvre leur création, suppression, propriétés, ainsi que les conditions de manipulation des données, y compris les mises à jour, insertions et suppressions. Les avantages et inconvénients des vues sont également discutés, notamment leur capacité à simplifier les requêtes et à sécuriser l'accès aux données.

Transféré par

Kabira Benrhhal
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues30 pages

Guide des Vues SQL en MySQL

Le document traite des vues dans MySQL, définies comme des tables virtuelles basées sur des requêtes SQL. Il couvre leur création, suppression, propriétés, ainsi que les conditions de manipulation des données, y compris les mises à jour, insertions et suppressions. Les avantages et inconvénients des vues sont également discutés, notamment leur capacité à simplifier les requêtes et à sécuriser l'accès aux données.

Transféré par

Kabira Benrhhal
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SQL : vues

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

2 / 16
Définition

MySQL

Vue
Comme une table virtuelle : physiquement inexistante
Définie par un nom et une requête SQL
Pouvant être interrogée comme une table
Pouvant, sous certaines conditions, être mise à jour

3 / 16
Définition

MySQL

Vue
Comme une table virtuelle : physiquement inexistante
Définie par un nom et une requête SQL
Pouvant être interrogée comme une table
Pouvant, sous certaines conditions, être mise à jour

Remarque

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

3 / 16
Définition

MySQL
Avantages

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

Simplifier les requêtes en masquant la complexité du schéma

Sécuriser l’accès à certaines colonnes si on ne les sélectionne pas avec la


requête de la vue.

4 / 16
Définition

MySQL
Avantages

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

Simplifier les requêtes en masquant la complexité du schéma

Sécuriser l’accès à certaines colonnes si on ne les sélectionne pas avec la


requête de la vue.

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

4 / 16
Création

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

5 / 16
Création

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

Exemple
CREATE OR REPLACE VIEW marseillais AS
SELECT id, nom, prenom, salaire
FROM personnes
WHERE ville = 'Marseille';

5 / 16
Création

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

Exemple
CREATE OR REPLACE VIEW marseillais AS
SELECT id, nom, prenom, salaire
FROM personnes
WHERE ville = 'Marseille';

Une vue peut être interrogée comme une table


SELECT *
FROM marseillais;

5 / 16
Suppression

MySQL

Syntaxe de suppression
DROP VIEW nom_vue;

6 / 16
Propriétés

MySQL

On peut créer une vue multi-tables


CREATE OR REPLACE VIEW vehicule_marseillais AS
SELECT marque, modele, ville, nom, prenom
FROM personnes, vehicules
WHERE ville = 'Marseille'
AND id = id_personne;

7 / 16
Propriétés

MySQL

On peut créer une vue multi-tables


CREATE OR REPLACE VIEW vehicule_marseillais AS
SELECT marque, modele, ville, nom, prenom
FROM personnes, vehicules
WHERE ville = 'Marseille'
AND id = id_personne;

Cette vue peut aussi être interrogée comme une table


SELECT *
FROM vehicule_marseillais;

7 / 16
Propriétés

MySQL

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


CREATE OR REPLACE VIEW cadre_marseillais AS
SELECT *
FROM marseillais
WHERE salaire >= 2000;

8 / 16
Propriétés

MySQL

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


CREATE OR REPLACE VIEW cadre_marseillais AS
SELECT *
FROM marseillais
WHERE salaire >= 2000;

Cette vue peut aussi être interrogée comme une table


SELECT *
FROM cadre_marseillais;

8 / 16
Propriétés

MySQL

Exercice 1
En utilisant les vues, sélectionnez les personnes qui ont le plus grand
nombre de voitures en utilisant les deux fonctions d’agrégation max et
count.

9 / 16
Propriétés

MySQL

Exercice 1
CREATE VIEW voitures_par_personne AS
SELECT [Link], [Link], [Link], COUNT([Link]) AS
nb_voitures
FROM personnes p
JOIN vehicules v ON [Link] = v.id_personne
GROUP BY [Link], [Link], [Link];

9 / 16
Propriétés

MySQL

Exercice 1
SELECT * FROM voitures_par_personne
WHERE nb_voitures = (SELECT MAX(nb_voitures) FROM
voitures_par_personne);

9 / 16
Manipulation de données d’une vue

MySQL

Conditions pour la mise à jour

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


modifications concernent une seule table.
Il ne faut pas que la requête de la vue contienne les mots-clés
suivants :
DISTINCT
LIMIT
GROUP BY
HAVING
UNION
une fonction d’agrégation

10 / 16
Manipulation de données d’une vue

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

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

11 / 16
Manipulation de données d’une vue

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

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

Modifier le nom (de la table personne) est possible

UPDATE vehicule_marseillais
SET nom = 'mercure'
WHERE prenom = 'sophie';

11 / 16
Manipulation de données d’une vue

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

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

Modifier le nom (de la table personne) est possible

UPDATE vehicule_marseillais
SET nom = 'mercure'
WHERE prenom = 'sophie';

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';

11 / 16
Manipulation de données d’une vue

MySQL

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


Les colonnes not null d’une table, n’ayant pas une valeur par
défaut, doivent être présentes dans le select de création de la
vue
Il ne faut pas avoir de colonnes dupliquées dans la vue (select
* dans une jointure)

12 / 16
Manipulation de données d’une vue

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

13 / 16
Manipulation de données d’une vue

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

Insérer un tuple dans une vue qui implique deux insertions dans
deux tables différentes (un premier dans la table véhicule et un
deuxième dans la table personne) est impossible
INSERT INTO vehicule_marseillais
SET nom = 'green',
prenom = 'michel',
modele = 'captur',
marque = 'renault';

13 / 16
Manipulation de données d’une vue

MySQL

Conditions pour la suppression = conditions pour la mise à jour +


La vue est mono-table

14 / 16
Options d’une vue

MySQL
Syntaxe de création

CREATE [OR REPLACE] VIEW nom_vue [ ( colonnes ) ] AS


requêteSelect
[WITH [CASCADED | LOCAL] CHECK OPTION]

15 / 16
Options d’une vue

MySQL
Syntaxe de création

CREATE [OR REPLACE] VIEW nom_vue [ ( colonnes ) ] AS


requêteSelect
[WITH [CASCADED | LOCAL] CHECK OPTION]

Explication

check option permet de modifier une vue à condition que le tuple modifié appartienne
encore à la vue après la mise à jour

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.

15 / 16
Options d’une vue

MySQL
Considérons la vue suivante

CREATE OR REPLACE VIEW cadre_marseillais AS


SELECT *
FROM marseillais
WHERE salaire >= 2000
WITH CHECK OPTION;

16 / 16
Options d’une vue

MySQL
Considérons la vue suivante

CREATE OR REPLACE VIEW cadre_marseillais AS


SELECT *
FROM marseillais
WHERE salaire >= 2000
WITH CHECK OPTION;

Il est possible d’ajouter un nouveau tuple à cette vue

INSERT INTO cadre_marseillais VALUES(8, 'freeman', 'henri', 2500);

16 / 16
Options d’une vue

MySQL
Considérons la vue suivante

CREATE OR REPLACE VIEW cadre_marseillais AS


SELECT *
FROM marseillais
WHERE salaire >= 2000
WITH CHECK OPTION;

Il est possible d’ajouter un nouveau tuple à cette vue

INSERT INTO cadre_marseillais VALUES(8, 'freeman', 'henri', 2500);

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);

16 / 16

Vous aimerez peut-être aussi