Les vues
Une vue est une requête SQL enregistrée dans la base de données et exposée comme une table virtuelle.
Elle n’enregistre pas physiquement les données, mais seulement la définition de la requête.
Exercice : créer une vue ticket_complet qui agrège les informations du ticket et le calcul du montant total de ce ticket
create view ticket_complet as
select t.id, t.adherent_id, t.date_ticket,
t.mode_rglt, round(sum(prix_unitaire * quantite),2) as montant
from ticket t
join ligne l on l.ticket_id = t.id
group by t.id
Les vues matérialisées
Une vue matérialisée est semblable à une vue, mais elle stocke physiquement sur le disque le résultat de la requête.
Cela améliore les performances pour des calculs lourds mais nécessite une actualisation quand les données sources changent.
create materialized view ticket_completZ as
select t.id, t.adherent_id, t.date_ticket,
t.mode_rglt, round(sum(prix_unitaire * quantite),2) as montant
from ticket t
join ligne l on l.ticket_id = t.id
group by t.id
Actualisation des données de la vue matérialisée.
REFRESH MATERIALIZED VIEW ticket_completZ;
Comme sur les tables il est possible de créer des index sur les colonnes des vues matérialisées pour accélerer encore les tris.
les fonctions
Une fonction stockée est un bloc de code SQL (ou éventuellement un autre langage de programmation) qui retourne une valeur. On l’utilise pour encapsuler une logique métier.
Les caractères $$ delimitent le bloc de code. Ils permetent de savoir où commence le code de la fonction et où il s'arrête.
Les fonctions scalaires
C'est le cas le plus simple : la fonction retourne une seule valeur (comme un nombre, du texte, une date, un booléen, etc.).
Les fonctions table
create or replace function f_dernier_ticket(adherent_id_param int)
returns table (id int, adherent_id int,
date_ticket timestamp, mode_rglt int,
montant numeric, n int)
as $$
select * from (
select *,
row_number() OVER ( order by tc.date_ticket desc ) as n
from ticket_completz tc
where adherent_id = adherent_id_param
) where n = 1
$$ language sql;
Les fonctions
Les procédures stockées
les procédures stockées sont proches des fonctions mais :
- Elles ne retournent pas de valeur directement.
- Elles peuvent exécuter des transactions (COMMIT, ROLLBACK).
- Elles servent à automatiser des traitements plus larges et plus complexes (chargements de données, batchs).