DESCRIBE V_Client;
Field
Type
Null Key Default Extra
id
smallint(5) unsigned NO
0
nom
varchar(100)
NO
NULL
prenom
varchar(60)
NO
NULL
adresse
varchar(200)
YES
NULL
code_postal varchar(6)
YES
NULL
ville
varchar(60)
YES
NULL
pays
varchar(60)
YES
NULL
email
varbinary(100)
YES
NULL
Tri des données directement dans la vue
Si l'on met un ORDER BY dans la requête définissant une vue, celui-ci prendra effet, sauf si l'on fait une requête sur la vue avec
un ORDER BY. Dans ce cas, c'est ce dernier qui prime, et l'ORDER BY originel est ignoré.
Exemple
Code : SQL
CREATE OR REPLACE VIEW V_Race
AS SELECT Race.id, nom, Espece.nom_courant AS espece
FROM Race
INNER JOIN Espece ON Espece.id = Race.espece_id
ORDER BY nom;
SELECT *
FROM V_Race;
-- Sélection sans ORDER BY, on prend l'ORDER BY de
la définition
SELECT *
FROM V_Race
ORDER BY espece; -- Sélection avec ORDER BY, c'est celui-là qui sera
pris en compte
La première requête donnera bien les races par ordre alphabétique, les races de chiens et les races de chats sont mélangées. Par
contre, dans la deuxième, on a d'abord toutes les races de chats, puis toutes les races de chiens.
Comportement d'autres clauses de SELECT
En ce qui concerne notamment les clauses LIMIT et DISTINCT (et son opposé, ALL), le comportement est indéfini. Dans le
cas où l'on fait une requête avec un LIMIT sur une vue dont la requête possède aussi un LIMIT, on ne sait pas quelle clause,
de la définition ou de la sélection, sera appliquée. Par conséquent, il est déconseillé d'inclure ces clauses dans la définition d'une
vue.
Sélection des données d'une vue
Une fois la vue créée, on peut bien entendu faire plus qu'un simple SELECT * FROM la_vue; : on peut tout simplement
traiter cette vue comme une table, et donc ajouter des clauses WHERE, GROUP BY, des fonctions, des jointures et tout ce que
l'on veut !
Exemple 1 : on sélectionne les rats bruns à partir de la vue V_Animal_details.
Code : SQL
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
337/414
www.openclassrooms.com
Field
Type
Null Key Default Extra
id
smallint(5) unsigned NO
0
nom
varchar(100)
NO
NULL
prenom
varchar(60)
NO
NULL
adresse
varchar(200)
YES
NULL
code_postal varchar(6)
YES
NULL
ville
varchar(60)
YES
NULL
pays
varchar(60)
YES
NULL
varbinary(100)
YES
NULL
Tri des données directement dans la vue
Si l'on met un ORDER BY dans la requête définissant une vue, celui-ci prendra effet, sauf si l'on fait une requête sur la vue avec
un ORDER BY. Dans ce cas, c'est ce dernier qui prime, et l'ORDER BY originel est ignoré.
Exemple
Code : SQL
CREATE OR REPLACE VIEW V_Race
AS SELECT Race.id, nom, Espece.nom_courant AS espece
FROM Race
INNER JOIN Espece ON Espece.id = Race.espece_id
ORDER BY nom;
SELECT *
FROM V_Race;
-- Sélection sans ORDER BY, on prend l'ORDER BY de
la définition
SELECT *
FROM V_Race
ORDER BY espece; -- Sélection avec ORDER BY, c'est celui-là qui sera
pris en compte
La première requête donnera bien les races par ordre alphabétique, les races de chiens et les races de chats sont mélangées. Par
contre, dans la deuxième, on a d'abord toutes les races de chats, puis toutes les races de chiens.
Comportement d'autres clauses de SELECT
En ce qui concerne notamment les clauses LIMIT et DISTINCT (et son opposé, ALL), le comportement est indéfini. Dans le
cas où l'on fait une requête avec un LIMIT sur une vue dont la requête possède aussi un LIMIT, on ne sait pas quelle clause,
de la définition ou de la sélection, sera appliquée. Par conséquent, il est déconseillé d'inclure ces clauses dans la définition d'une
vue.
Sélection des données d'une vue
Une fois la vue créée, on peut bien entendu faire plus qu'un simple SELECT * FROM la_vue; : on peut tout simplement
traiter cette vue comme une table, et donc ajouter des clauses WHERE, GROUP BY, des fonctions, des jointures et tout ce que
l'on veut !
Exemple 1 : on sélectionne les rats bruns à partir de la vue V_Animal_details.
Code : SQL
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
337/414
www.openclassrooms.com
