Gestion de BD Supabase
Comprendre les bases de données distantes et écrire des requêtes SQL simples
Notions théoriques
Qu’est-ce qu’une BD distante ?
Une base de données distante est une base hébergée sur un serveur accessible via Internet. Contrairement à une base locale (installée sur l’ordinateur personnel), elle peut être consultée par plusieurs utilisateurs à distance, à condition d’avoir les bons identifiants et droits d’accès.
Supabase utilise PostgreSQL comme moteur de base de données relationnelle, et expose automatiquement une API REST et GraphQL pour interagir avec la base.
Différences entre BD locale et distante
Caractéristique | Base locale | Base distante (Supabase) |
---|---|---|
Localisation | Sur l’ordinateur de l’utilisateur | Serveur distant (cloud) |
Accessibilité | Uniquement en local | Accessible depuis n’importe où |
Sécurité | Faible si non chiffrée | Authentification, RLS, SSL |
Sauvegarde | Manuelle | Automatisée dans Supabase |
Collaboration | Difficile | Facile avec accès partagé |
Requêtes SQL : les bases
Le langage SQL (Structured Query Language) est utilisé pour manipuler des bases de données relationnelles.
Voici quelques requêtes fondamentales :
CREATE TABLE
: crée une nouvelle tableINSERT INTO
: insère une ligne dans une tableSELECT
: lit les données d’une tableUPDATE
: modifie des données existantesDELETE
: supprime des lignesWHERE
: filtre les résultats d’une requête
Exemple de table simple
create table test_users (
id serial primary key,
name text
);
id
est une clé primaire (unique) qui s’incrémente automatiquement.name
est une chaîne de caractères.
Insertion de données
insert into test_users (name) values ('Alice');
insert into test_users (name) values ('Bob');
Lecture des données
select * from test_users;
Requête conditionnelle
select * from test_users where name = 'Alice';
Risques liés aux requêtes SQL
Un des risques majeurs est l’injection SQL : un utilisateur malveillant injecte du code SQL dans un champ de formulaire pour détourner la base.
Ne jamais insérer directement des données utilisateur dans une requête SQL sans les valider ou les échapper.
Bonnes pratiques à adopter
- Valider les entrées utilisateur (longueur, type, contenu)
- Utiliser des requêtes préparées dans les applications (paramètres sécurisés)
- Limiter les permissions des utilisateurs sur les tables
- Activer les Row Level Security (RLS) dans Supabase pour contrôler l’accès aux lignes
Exemple pratique
Faire ses premières requêtes SQL
Il est possible de créer une table de test dans Supabase, d’y insérer quelques données, puis de les interroger.
Étapes à suivre
- Se connecter à son projet Supabase
- Ouvrir le SQL Editor
- Créer une table appelée
test_users
avec deux colonnes :id
(auto-incrémenté, clé primaire)name
(texte)
- Insérer deux utilisateurs fictifs
- Lire les données avec une requête
SELECT
- Filtrer les résultats avec un
WHERE
Script SQL à exécuter dans Supabase
-- Création de la table
create table test_users (
id serial primary key,
name text
);
-- Insertion de données
insert into test_users (name) values ('Alice');
insert into test_users (name) values ('Bob');
-- Lecture complète
select * from test_users;
-- Filtrage
select * from test_users where name = 'Alice';
Il est possible d’exécuter toutes ces requêtes en une seule fois dans le SQL Editor de Supabase.
Résultat attendu
id | name |
---|---|
1 | Alice |
2 | Bob |
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Objectif du TP
Ce TP vous permet de :
- Créer une table simple dans Supabase,
- Insérer des données dans cette table,
- Interroger les données avec des requêtes SQL de base,
- Comprendre la différence entre base locale et distante,
- Appliquer des bonnes pratiques de sécurité.
Étape 1 — Créer une table test_users
- Connectez-vous à votre projet Supabase.
- Ouvrez le SQL Editor.
- Copiez-collez le code suivant pour créer une table
test_users
:
create table public.test_users (
id serial primary key,
name text
);
- Exécutez la requête.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 2 — Insérer des données
- Dans le SQL Editor, insérez deux utilisateurs fictifs :
insert into public.test_users (name) values ('Alice');
insert into public.test_users (name) values ('Bob');
- Exécutez les requêtes.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 3 — Lire les données avec SELECT
- Dans le SQL Editor, tapez la requête suivante :
select * from public.test_users;
- Exécutez la requête et observez le résultat.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 4 — Filtrer les résultats avec WHERE
- Dans le SQL Editor, tapez la requête suivante :
select * from public.test_users where name = 'Alice';
- Exécutez la requête.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 5 — Supprimer une ligne
- Supprimez la ligne correspondant à
'Bob'
:
delete from public.test_users where name = 'Bob';
- Vérifiez que la ligne a bien été supprimée.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 6 — Modifier une ligne avec UPDATE
- Modifiez le nom
Alice
enAlice Dupont
:
update public.test_users set name = 'Alice Dupont' where name = 'Alice';
- Vérifiez la mise à jour.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 7 — Supprimer la table (nettoyage)
- Supprimez la table pour repartir d’une base propre :
drop table public.test_users;
- Vérifiez qu’elle n’apparaît plus dans le Table Editor.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 8 — Comparaison BD locale/distante
- Réfléchissez aux avantages d’utiliser Supabase (base distante) plutôt qu’une base locale.
- Notez dans votre cahier ou fichier personnel trois avantages concrets.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 9 — Sécurité : Risques d'injection SQL
- Imaginez une application web qui exécute la requête suivante :
select * from users where username = '$input';
- Que se passe-t-il si l’utilisateur entre comme nom :
x' OR '1'='1
Une solution
Vous devez être connecté pour voir le contenu.
Étape 10 — Bonnes pratiques à retenir
- Listez au moins 3 bonnes pratiques pour sécuriser vos requêtes SQL dans Supabase ou ailleurs.
Une solution
Vous devez être connecté pour voir le contenu.
Fin du TP
Vous avez :
- Manipulé une table dans Supabase avec les commandes SQL de base,
- Compris les différences entre base locale et distante,
- Appliqué des bonnes pratiques de sécurité.
Vous êtes maintenant prêt pour la prochaine séance, où vous créerez la première vraie table du projet :
profiles
.