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 |
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.