SQL Overview

Tags :
  • MON
  • 2024-2025
  • temps 2
  • SQL
  • vert
Auteurs :
  • Lola Perdrix

Étude plus approfondie de tout ce que l'on peut faire avec SQL

Bases de SQL

Introduction

L'objectif de ce MON est de continuer le travail débuté pendant mon MON 1.2 sur les bases de SQL. Mon premier MON était plus axé sur la réalisation des requêtes et je me suis perfectionnée dessus, mais je souhaite maintenant pouvoir explorer toutes les autres fonctionnalités de SQL afin d'avoir une vue d'ensemble sur tout ce qu'il est possible de faire, pour comprendre un peu mieux cet outil si répandu lié aux bases de données relationnelles, et savoir que cela existe lorsque j'en aurais besoin (ce qui n'est pas impossible).

Ce MON me servira également de ressource lorsque je voudrais me rappeler de certaines notions, c'est pourquoi je lui donnerai la forme d'une grande liste représentant les actions possibles.

Sources

Pour la majeure partie de ce MON, je me base sur le livre SQL : les fondamentaux du langage de Anne-Christine BISSON. Le livre est super clair, aborde des notions théoriques et pratiques avec de nombreux exemples, ainsi que des exercices et des corrigés (je recommende si on veut apprendre la même chose que moi). J'ai repris à peu près les grands chapitres du livre pour structurer mon MON, en mettant les pages correspondantes.

Le modèle relationnel

J'ai pu revoir dans ce premier chapitre du livre les principes de base sur les modèles relationnels. C'est-à-dire les notions de domaines, de relations, ainsi que l'existence de certaines règles comme l'unicité, les clés primaires et secondaires, l'intégrité référentielle, la contrainte d'identité, etc.

J'ai aussi revu quelques bases de l'algèbre relationnelle, qui permet la manipulation des tables, et qui est d'ailleurs à l'origine de la conception de SQL. Elle utilise des opérateurs basés sur la théorie des ensembles qui sont princialement :

La suite du MON permet de voir comment sont effectuées ces opérations avec SQL.

LDD : La définition des données

Types de données (p29-37)

Déjà, 3 types de données principalement : numériques, alphanumériques, et temporelles. Chaque SGDBR (système de gestion de bases de données relationnelles) peut décliner des types comme il veut pour les adapter à des problématiques de stockage ou de précision etc.

Créer, modifier, ou supprimer des objets (p37-77)

LMD : La manipulation des données

Souvent, on peut uniquement faire de la sélection de données, la modification, l'insertion, et la supression des données étant plutôt réservée aux administrateurs de la base. Cependant je tenais à explorer toutes ces notions qui peuvent servir.

La sélection de données (p81-132)

La majorité de cette partie est constituée de notions que j'ai bien approfondies lors de mon MON 1.2. Je ne reviendrais donc pas sur ce qui a déjà été abordée et me pencherais sur les notions complémentaires.

Restreindre la sélection

Insérer, modifier ou supprimer (p140-169)

Les fonctions (p171-209)

DCL : La sécurité des données

Cette partie qu'on retrouve à partir de la page 215 du livre permet d'étudier ce qui permet d'attribuer des droits aux utilisateurs sur les tables. C'est donc plutôt reservé aux administrateurs des tables.

Pourquoi faire (p215)

Cela permet la gestion de différentes typologies d'utilisateurs au sein d'une entreprise dans laquelle on va retrouver une multitude d'usages métiers différents. Tous ne vont pas faire la même chose et chacun doit pouvoir faire son travail sans risquer de gêner celui des autres.

Comment faire (p223-241)

En général on classe les utilisateurs par fonction et par métier puis on détermine quelle fonction a besoin de quelle table. De quels accès ont-ils besoin ? Peuvent-ils faire des mises à jour ou lire seulement ? Ce travail doit être fait par l'IT conjointement avec des référents métiers.

Ces infos sont regroupées elles-même dans des tables qui peuvent être mises à jour si besoin (départs / changements de poste...) et qui sont dédiées à les gestion des droits utilisateurs. Essayer de metre la photo p216. On va pouvoir attribuer les droits correspondants aux utilisateurs après cette étude, et aussi créer des rôles pour regrouper des utilisateurs auxquels on va attribuer les mêmes droits.

Après il y a des commandes qui permettent de :

TCL : Le contrôle des transactions

Ce dernier chapitre du livre est un peu plus technique. Elle aborde la problématique des accès simultanés sur une base qui peuvent créer des conflits et comment s'en charger. C'est peut être une partie un peu moins intéressante mais tout de même à connaître dans les grandes lignes.

On a ce qu'on appelle des phénomènes de lectures répétitives ou de lignes fantômes lorsque les utilisateurs modifient en même temps les mêmes données. Pour éviter cela on a créé la notion de transaction, qui permet de borner le début et la fin d'une action dans la base.

Maintenant comment éviter les incohérences ? (p248-252)

J'avoue ne pas avoir tout compris à propos de ces techniques et de leur différences mais je ne suis pas sûre que ce soit très grave à ce niveau.

Notion de validation des modifications (p258-260)

En SQL il existe aussi la notion de "commit" pour la validation de nos modifications, cela permet aussi de libérer les verrous qui ont pu être posés pour notre travail. Il s'agit simplement de l'ordre COMMIT.

Si on veut revenir en arrière, il existe l'ordre ROLLBACK qui invalide la modification et nous ramène au point de sauvegarde précédent.

On peut définir nous même nos points de sauvegarde pour pouvoir faire des retours en arrière, il suffit de définir un SAVEPOINT <nom du savepoint>.

Faire des programmes avec SQL

Au delà de faire des requêtes, j'ai aussi vu la possibilité de faire du code avec SQL qui peut servir notamment à créer des fonctions et procédures stockées ou des déclencheurs qui peuvent faire gagner beaucoup de temps selon les usages. On les appelle avec les ordres EXECUTE ou CALL.

Il existe des langages de programmation dédiés comme PL/SQL ou TransactSQL.

J'ai pu explorer un petit peu les méthodes, qui consistent comme en programmation générale en définir des variables, rajouter des requêtes SQL stockées dans des curseurs que l'on peut parcourir avec des boucles, faire des opérations sur des valeurs retournées, et renvoyer des valeurs ou non. Il existe un tas de choses que l'on peut faire et que j'ai un peu parcourues sans rentrer dans le détail car ce n'est pas forcément ce qui était essentiel. Si besoin le MON SQL Avancé de Valentin aborde un peu plus le sujet.

Soucis de performance et conseils

Faire des requêtes sur des grandes tables de données peut très vite poser des soucis de performance et des temps d'attente importants. Il est important de savoir optimiser nos calculs, j'ai déjà un peu abordé le sujet dans mon premier MON. J'ai regroupé des informations éparpillées dans le livre que j'ai cru bon de rassembler ici.

Résumé

image

Photo : StackLima.com

A la fin du livre on retrouve également le résumé de toutes les syntaxes essentielles.

Bonus : notions de NoSQL

Après avoir autant été plongée dans l'univers de SQL, j'ai souhaité regarder un petit peu du côté de NoSQL sur mon temps restant pour compléter ces connaissances et prendre du recul (parce qu'il ne faudrait pas que je me dise que SQL règne de partout).

J'ai regardé sur le site d'Oracle quelques défintions et explications.

Le NoSQL sert donc à traiter les bases de données non relationnelles, sur lesquelles on peut quand même faire des requêtes classiques, c'est pourquoi on les appelle les bases "pas seulement SQL". Il a été conçu dans l'objectif de pouvoir s'adapter aux évolutions applicatives et pour faire des requêtes efficaces sur un grand volume.

De ce que j'ai compris :

Avantages Inconvénients
Évolutivité élevée et rapide, s'adapte facilement Données pas (souvent) normalisées, donc pas terrible pour des secteurs comme la finance ou la comptabilité
Haute disponibilité, et haute performance Bien pour des requêtes simples sur de gros volumes mais se complexifie rapidement si plusieurs tables et requête plus fine
Schémas flexibles, stockage non structuré Syntaxe différente d'une base à l'autre

Le NoSQL serait donc largement utilisé pour les applications en temps réél, les grands volumes de données. Il exise 4 types de base NoSQL, cela vaudrait le coup de se pencher un peu plus dessus. Enfin, on peut aussi maintenant avoir des modèles "hybrides" en combinant les bases de données relationnelles et non-relationnelles dans une même entreprise.

Conclusion

Ce MON m'a vraiment permis de balayer tous l'univers de SQL. Je ne suis jamais rentrée dans le détail de chacune de ces notions, c'est pourquoi il y en a beaucoup, mais ce n'était pas le but car je ne suis pas sûre que cela aurait été utile. J'ai désormais une bonne connaissance d'ensemble sur le sujet et je suis globalement très satisfaite de ce MON.

Reste à faire : S'entraîner sur ces notions en les pratiquant et en les mettant en oeuvre dans un des systèmes de gestion, sans oublier de regarder un peu du côté du fonctionnement un peu plus poussé du NoSQL.

D'un point de vue plus technique par rapport à la rédaction du MON, j'aurais du prendre mes notes directement sur mon ordinateur... cela m'aurait épargné un peu de temps de resaisie (je n'ai pas compté le temps de rédaction dans le MON).

Bibliographie