Partie I
SQL de base
186
© Éditions Eyrolles
Simplifier les noms
Une vue permet de simplifier la manipulation d’une table ayant un nom long ou des colonnes
portant des noms compliqués. Considérons par exemple la table COLLATION_CHARACTER_
SET_APPLICABILITY[COLLATION_NAME,CHARACTER_SET_NAME] qui décrit les collations des jeux de caractères disponibles, et qui est située dans la base de données stockant le
dictionnaire des données (INFORMATION_SCHEMA). Nous étudierons dans la prochaine
section les différentes tables de cette base système. Supposons que l’on désire souvent accéder
à cette table pour connaître les différentes collations possibles pour les jeux de caractères latins.
Créons la vue CollationsLatines qui simplifie l’accès à cette table au niveau du nom,
mais aussi au niveau des colonnes. Interrogeons cette vue de manière à connaître les collations
spécifiques à la langue de Molière ou à celle de Goethe.
On dira que MySQL est plus « branché » par la nouveauté, Goethe étant né 76 ans après le
décès de Molière. Aucun french dans la base, donc.
Contraintes de vérification
Nous avons décrit au chapitre 1 les contraintes de vérification (CHECK) qui ne sont pas encore
totalement prises en charge. Il est possible de programmer ce type de contraintes par des vues.
Considérons la table Pilote illustrée ci-après et programmons, par l’intermédiaire de la vue
VueGradePilotes, la contrainte vérifiant qu’un pilote :
q
ne peut être commandant de bord qu’à la condition qu’il ait entre 1 000 et 4 000 heures de vol ;
q
ne peut être copilote qu’à la condition qu’il ait entre 100 et 1 000 heures de vol ;
q
ne peut être instructeur qu’à partir de 3 000 heures de vol.
Les règles conseillées pour manipuler les enregistrements d’une vue v1 décrivant des contraintes de vérification sur une table t1 sont les suivantes :
• modification et insertion par la vue v1 ;
• suppression et lecture par la table t1.
Tableau 5-21 Vue pour simplifier les noms
Création
Interrogation
CREATE VIEW CollationsLatines
(collation,jeu)
AS SELECT * FROM INFORMATION_SCHEMA.↵
COLLATION_CHARACTER_SET_APPLICABILITY
WHERE
CHARACTER_SET_NAME
LIKE 'Latin%';
SELECT * FROM CollationsLatines
WHERE collation LIKE '%french%'
OR
collation LIKE '%german%';
+-------------------+--------+
| collation
| jeu
|
+-------------------+--------+
| latin1_german1_ci | latin1 |
| latin1_german2_ci | latin1 |
+-------------------+--------+
Web
Précédent

- 208/418

Suivant