Les outils MySQL : ROUTINES – FONCTIONS – VUES – TRIGGERS

I►Dans ce tutoriel, nous allons aborder les définitions d’outils stockés dans Mysql ..

Les ROUTINES ( procédures stockées ou fonctions )

Les routines sont des programmes stockés dans le serveur MySQL.

On retrouve les informations les concernant dans la base nommée information_schema .
Cette base de données stocke des informations importantes comme :

  • Les variables de sessions : SESSION_VARIABLES (variables d’optimisation et de tuning : show variables; )
  • Le status du serveur : SESSION_STATUS ( l’état actuel du serveur : show status; )
  • Les privilèges des utilisateurs : USER_PRIVILEGES
  • Les procédures stockées : ROUTINES
  • Les vues : VIEWS
  • Les triggers d’événements : TRIGGERS 
  • Et beaucoup d’autres informations …

Les ROUTINES permettent d’automatiser des tâches récurrentes d’administration.
Le langage est très simple mais orienté administration..

——————————————————————————————————————–

1 – Les PROCEDURES STOCKEES …

——————————————————————————————————————–

La procédure ne retourne pas en principe* de valeur alors qu’une fonction retourne elle un résultat.
* la procédure peut tout de même retourner un jeu d’enregistrements via une requête SELECT…

Les banques utilisent les procédures stockées pour toutes les opérations standards.
Cela conduit à un environnement cohérent et sécurisé, car les procédures assurent que les opérations sont correctement faîtes et enregistrées. Dans une telle configuration, les applications et les utilisateurs n’ont aucun accès direct aux tables, mais passent par des procédures stockées pré-définies.

Nous allons prendre un premier exemple avec une procédure stockée :
L’administrateur root crée une procédure stockée nommée movies qui au passage de l’argument IN cherchera dans les titres des films tout ce qui commence par …

Toutes les procédures stockées encapsulent leur code par un DELIMITER pour éviter à MySQL de chercher à interpréter ces instructions le temps de leur création … Il est d’usage d’utiliser le // ou $$. Les instructions sont également encadrées d’un BEGIN et d’un END.

Capture

 ? Sécurisation des données : On notera également que le propriétaire de la procédure est ROOT (DEFINER) et que le SQL SECURITY est au niveau DEFINER, ( au lieu de INVOKER), on verra plus loin que même i l’utilisateur n’a pas de privilèges sur ces tables, il pourra quand même traiter les données.

Capture1

L’utilisateur michel a uniquement le privilège execute sur la base sakila (pour éxécuter les routines)

Il va tout de même essyaer de traiter les données de la table actor …
L’accès lui est refusé, par contre s’il utilise la procédure stockée movies, cela fonctionne 🙂

Capture2

——————————————————————————————————————–

2 – Les FONCTIONS …

——————————————————————————————————————–

? La fonction peut renvoyer un résultat, elle peut donc faire référence aux méthodes propres de MySQL:

Capture

L’appel de la fonction se fait avec la clause SELECT  …

Capture1

 ——————————————————————————————————————–

3 – Les vues :

——————————————————————————————————————–

Les vues sont des requêtes stockées (enregistrées) sur le serveur et retournent des tables de données. Elles offrent une interface secondaire aux clients et permettent de cacher et rendre non accessible dans une certaine mesure  certaines informations de la base.

Elles sont un tampon intermédiaire et permettent de fluidifier les transactions …

? Exemple :
Capture

Capture1

——————————————————————————————————————–

4 – Les déclencheurs ou triggers :

——————————————————————————————————————–

Les triggers permettent d’effectuer certaines actions ou commandes lors d’évènements particulier.(INSERT UPDATE ou DELETE)

? Voici un exemple :

Capture

Capture

——————————————————————————————————————–

5 – Le planificateur d’événements (Mysql 5.1)

——————————————————————————————————————–

Il est l’équivalent de CRON sous Linux. il permet d’éxécuter des programmes stockés selon un calendrier.

Voici un exemple simple pour comprendre comment MySQL gère son planificateur de tâches …

Capture

Et voici le résultat stocké toutes minutes dans la table horloge …

Capture1

 

 

Voilà pour ce tutoriel, @ bientôt sur le portail …

Michel BOCCIOLESI