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
);
idest une clé primaire (unique) qui s’incrémente automatiquement.nameest 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_usersavec 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 |