Principe de requêtage
Dans le SQL…
Tout est requête.
La Nouvelle Revue Française, Tome XIII, NRF – Paris – 1919, p390 ligne 13
Que vous souhaitiez importer, modifier ou encore afficher vos données, vous allez utiliser des requêtes.
Le principe des requêtes SQL est simple :
- On pose une question : la requête.
- Le serveur nous répond : la réponse.
Ainsi, nous allons apprendre comment poser des questions au serveur pour qu’il travaille pour nous.
Par exemple, pour l’ajout de donnée, comme nous sommes très polis, nous demandons au serveur si dans son extrême amabilité il accepterait d’insérer nos données (avec bienveillance). Il s’exécutera alors puis nous répondra bien cordialement « ok, c’est fait, j’ai inséré X lignes » (oui bien que nous soyons très polis, le serveur utilise son propre argot que nous décoderons).
Aussi performant qu’ils soient, les serveurs ne laissent aucune place à la diplomatie. Ainsi, vous devrez donc respecter leurs codes et leur langage à la lettre si vous souhaitez travailler avec eux. Heureusement, ils ne sont aucunement rancuniers et vous indiquerons immédiatement l’erreur commise si vous leur manquez de politesse et pourrez dans la foulée leur reposer votre question.
Sans plus attendre lançons vos premières requêtes. Pour cela, rendez vous dans votre client SQL préféré (DBeaver ?). Pour rappel, dans DBeaver clic droit sur une connexion puis sélectionnez « Editeur SQL » et dans pgAdmin cliquez sur la « loupe SQL » dans le menu du haut, une fenêtre s’ouvre.
Voici une requête toute simple que vous pouvez tester :
-- Exemple de requête simple SELECT 'hello world';
Et voila !! Vous venez de lancer votre première requête : demander au serveur d’afficher « hello world » et le serveur a du vous répondre « hello world », facile non ?
Transactions
Les requêtes que vous aller envoyer au serveur peuvent modifier profondément les données stockées et leur structure. Pour s’assurer du bon déroulement de vos requêtes, PostgreSQL (comme toutes les bases de données) utilise le principe des transactions.
Une transaction est une unité de travail dans laquelle des instructions sont exécutées. Si l’une d’entre elles échoue alors toutes les instructions depuis le début de la transaction sont annulées.
Imaginez un virement bancaire. Vous débitez 100 € d’un compte et vous créditez 100 € sur un autre. Si le système plante entre les deux opérations, l’argent disparaît dans le vide.
Une transaction est le mécanisme qui garantit que ces deux opérations forment un tout indivisible : soit tout réussit, soit rien n’est appliqué. C’est le principe ACID (Atomicité, Cohérence, Isolation, Durabilité).
Un article dédié aux transactions est disponible (pour aller plus vite, vous pouvez ne lire que l’introduction).
Les commandements de la requête
Avant de nous lancer dans nos premières requêtes voici quelques règles et conventions à garder à l’esprit et que vous retrouverez dans la suite.
Par défaut, PostgreSQL utilise la minuscule pour les noms d’objet, vous devrez donc entourer vos objets par des guillemets s’ils utilisent des majuscules (de même s’ils utilisent des caractères accentués).
Pour le nom de vos objets (schéma, table, colonne), la norme SQL impose l’utilisation des 26 lettres de l’alphabet, des dix chiffres et du caractère underscore (_). PostgreSQL est plus laxiste et autorise l’utilisation d’accent, d’espace et autre caractères étrange. Je vous recommande de n’utiliser que les caractères de la norme SQL. En effet, vous risquez certaines incompatibilités avec d’autres clients, extensions ou modules.
Une requête se termine toujours par un point-virgule ;. Ça permet de dire à PostgreSQL que l’instruction est finie.
Privilégiez l’utilisation de lettre majuscule pour les mots-clés lors de la rédaction de vos requêtes, ça vous en simplifiera la lecture.
Usez et abusez de l’indentation pour vous simplifier la lecture des requêtes.
Un commentaire débute par un double tiret --.
Les valeurs textuelles sont entre simples guillemets ('), les valeurs numériques n’en ont pas besoin.
Limitez l’utilisation d’abréviation. Les noms d’objet peuvent être long alors profitez-en.
Chaque objet peut être commenté, n’hésitez pas à les détailler. Cela vous aidera beaucoup lorsque vous n’aurez pas mis le nez dans votre base depuis longtemps.
Le sélecteur étoile * permet de sélectionner toutes les colonnes.
Utilisez des index sur les colonnes les plus utilisées, cela accélèrera de façon impressionnante le traitement de gros jeux de données (de x2 à x100).
NULL n’est pas une valeur, c’est justement l’absence de valeur. Ainsi, il n’est pas possible de recherche ma_valeur = NULL car justement, il n’y a pas d’élément à comparer.
Introduction au Vade-mecum
Maintenant que nous avons vu les bases du requêtage, nous pouvons nous concentrer sur le langage SQL pour que vous puissiez réaliser vos premières requêtes.
Il s’agit ici d’un vade-mecum des requêtes que j’utilise le plus. N’hésitez donc par à approfondir celles-ci en vous rendant sur les nombreux sites d’information dont voici ceux qui me semble le plus intéressant :
- La documentation officielle de PostgreSQL : https://www.postgresql.org/docs/
- PG Formater – Un outil pour mettre en forme vos requêtes : http://sqlformat.darold.net/
- La documentation en français de PostGIS : http://www.postgis.fr/chrome/site/docs/workshop-foss4g/doc/index.html
- La liste des fonctions PostGIS : http://postgis.net/docs/reference.html
Dans la suite de ce vade-mecum, chaque page est organisée en deux grandes parties :
- Les requêtes : recueil des requêtes qui me semble intéressantes
- Les concepts clés : quelques détails sur certains éléments des différentes requêtes.
Si vous êtes prêts, allons-y !
Sommaire général
Voici le sommaire général du cours :
Cet article vous a plu ?
N'hésitez pas à le partager, il interessera surement certains de vos contacts.
Les thèmes suivants contiennent des articles en lien avec celui-ci, allez faire un tour :
BDDPostgreSQLProgrammationSQL tuto