Comment utiliser le compilateur SQL en ligne
- Écrivez votre SQL dans l'éditeur. Vous pouvez créer des tables (
CREATE TABLE), ajouter des données (INSERT) et les interroger (SELECT) dans un seul script. Séparez les instructions par des points-virgules. - Appuyez sur Exécuter ou utilisez Ctrl + Entrée (⌘ + Entrée sur un Mac).
- Chaque instruction qui renvoie des lignes s'affiche dans son propre tableau de résultats, dans l'ordre, avec le nombre de lignes en dessous. Les valeurs
NULLsont signalées comme telles. Si aucune instruction ne renvoie de lignes, une courte confirmation s'affiche à la place. - Choisissez une limite de temps de 5, 15 ou 60 secondes, utile pour les requêtes récursives qui s'emballent. Arrêter annule immédiatement une requête.
Le moteur SQLite est petit, bien en dessous de 1 Mo, et se charge donc presque instantanément. Réinitialiser l'exemple restaure le schéma d'exemple des employés, et main.sql télécharge votre script.
Vos requêtes s'exécutent dans un Web Worker, dans votre propre navigateur. Ni le SQL ni les données ne sont envoyés ou stockés sur nos serveurs. L'éditeur conserve votre dernier script dans le stockage local de votre navigateur, et nulle part ailleurs.
Ce qui est pris en charge
Le compilateur exécute SQLite 3 via sql.js, la bibliothèque C de SQLite compilée en WebAssembly. C'est un vrai moteur de base de données relationnelle, pas un émulateur.
- DDL et DML :
CREATE TABLE,CREATE INDEX,CREATE VIEW,INSERT,UPDATE,DELETE, contraintes, clés étrangères et déclencheurs. - Requêtes : jointures, sous-requêtes,
GROUP BY/HAVING,UNION,CASEet expressions de table communes, y comprisWITH RECURSIVE. - Fonctions de fenêtrage comme
ROW_NUMBER(),RANK(),LAG()et les totaux cumulés avecSUM() OVER (...). - Fonctions intégrées pour le texte (
substr,upper,replace), les nombres et les dates (date,strftime).
Limites :
- Une base de données en mémoire neuve et vide à chaque exécution. Les tables ne survivent pas d'une exécution à l'autre : gardez donc vos instructions
CREATEetINSERTen haut du script. - C'est du SQLite, pas du MySQL ni du PostgreSQL. La plupart du SQL standard fonctionne, mais les fonctions propres à un éditeur, comme les procédures stockées,
GRANT, le mot-cléAUTO_INCREMENTde MySQL ou le typeSERIALde PostgreSQL, ne fonctionnent pas. - Les grands jeux de résultats affichent les 1 000 premières lignes, avec le nombre total de lignes.
- Vous ne pouvez pas vous connecter à une base de données externe ni ouvrir votre propre fichier
.db.
Aide-mémoire SQL
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer TEXT NOT NULL,
amount REAL,
placed TEXT DEFAULT (date('now'))
);
INSERT INTO orders (customer, amount) VALUES
('Ada', 120.0), ('Ada', 35.5), ('Grace', 80.0);
WITH totals AS (
SELECT customer, SUM(amount) AS spent, COUNT(*) AS n
FROM orders
GROUP BY customer
)
SELECT customer, spent, n
FROM totals
WHERE spent >= 50 AND n <> 0
ORDER BY spent DESC;
| Tâche | SQL |
|---|---|
| Clé auto-numérotée | id INTEGER PRIMARY KEY |
| Filtrer des lignes | WHERE price BETWEEN 10 AND 20 |
| Correspondance de motif | WHERE name LIKE 'A%' |
| Concaténer du texte | first || ' ' || last |
| Paginer | LIMIT 10 OFFSET 20 |
| Remplacer NULL | COALESCE(phone, 'n/a') |
| Insérer ou mettre à jour | INSERT ... ON CONFLICT(id) DO UPDATE SET ... |
Conseils
- Utilisez
sqlite_masterpour lister ce que vous avez créé :SELECT name, sql FROM sqlite_master; - Utilisez
EXPLAIN QUERY PLAN SELECT ...pour voir si une requête utilise un index. - SQLite utilise un typage souple : une colonne déclarée
INTEGERpeut quand même stocker du texte. Ajoutez des contraintesCHECK, ou utilisez des tablesSTRICT, si vous voulez imposer les types. - Les clés étrangères ne sont appliquées qu'après
PRAGMA foreign_keys = ON;. - Une requête longue et brouillonne ? Nettoyez-la avec le Formateur SQL avant de la partager.
BEGIN; … COMMIT;. Générer des données de test avec une CTE récursive est un moyen rapide de remplir une table de milliers de lignes pour s'entraîner.Questions fréquentes
Quel dialecte SQL est utilisé ici ?
SQLite 3. Il suit de près le SQL standard et convient donc bien pour apprendre SELECT, les jointures, le regroupement et les fonctions de fenêtrage. La syntaxe propre à MySQL, PostgreSQL ou SQL Server peut demander de petites adaptations.
Mes données sont-elles enregistrées ?
Non. Chaque exécution crée une nouvelle base de données en mémoire, supprimée dès la fin de l'exécution. Seul le texte SQL de l'éditeur est mémorisé, localement dans votre navigateur.
Puis-je exécuter plusieurs requêtes à la fois ?
Oui. Séparez-les par des points-virgules. Les instructions s'exécutent dans l'ordre, et chacune de celles qui renvoient des lignes produit son propre tableau de résultats.
Puis-je aussi m'exercer avec d'autres langages ?
Oui. Essayez le Compilateur Python en ligne, où le module sqlite3 intégré à Python fonctionne aussi, ou parcourez tous nos outils pour développeurs.
Mis à jour