2
View
medina5 edited this page 2025-09-07 13:49:16 +02:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 nenregistre 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 lutilise 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).