Database Reference
In-Depth Information
Vues complexes
Une vue complexe est caractérisée par le fait qu'elle contient, dans sa déinition, plusieurs
tables (jointures, sous-requêtes, expressions de tables  : CTE), une fonction appliquée à
des regroupements, une fonction de fenêtrage, le mot-clé DISTINCT ou des expressions de
colonnes.
La mise à jour directe (par INSERT ou UPDATE ou DELETE ) de telles vues n'est pas possible
sans programmer un déclencheur INSTEAD OF .
Le tableau suivant présente la vue multitable v_dept_calculs du schéma soutou qui extrait
pour chaque département, le nom du manager, le nombre d'employés, ainsi que les salaires
minimum, maximum et moyens.
Tableau 4-5 : Création d'une vue complexe
Création de la vue
Structure de la vue
CREATE VIEW soutou.v_dept_calculs
(departement, manager, employes,
min_sal, max_sal, moyenne_sal)
AS SELECT d.department_name, m.last_name,
COUNT(e.department_id), MIN(e.salary),
MAX(e.salary), ROUND(AVG(e.salary),1)
FROM hr.employees e,
hr.departments d, hr.employees m
WHERE e.department_id = d.department_id
AND d.manager_id = m.employee_id
GROUP BY d.department_name, m.last_name
ORDER BY 1;
SQL> DESC soutou.v_dept_calculs;
Name Null? Type
---------------------- --------- ------------
DEPARTEMENT NOT NULL VARCHAR2(30)
MANAGER NOT NULL VARCHAR2(25)
EMPLOYES NUMBER
MIN_SAL NUMBER
MAX_SAL NUMBER
MOYENNE_SAL NUMBER
Conseil avisé
Il est toujours préférable de programmer une jointure à l'aide de l'opérateur relationnel
INNER JOIN plutôt que dans WHERE : d'une part, pour des raisons de performances (cer-
tains SGBD y sont sensibles), d'autre part, d'un point de vue de la maintenance du code
(il est plus eficace de modiier une requête ainsi écrite).
Une fois créée, la vue multitable s'interroge simplement (sans jointure). Le tableau suivant
présente une extraction de cette vue.
 
Search WWH ::




Custom Search