--- title: "Démo : Playground SQL" description: Exercice interactif avec un playground SQL dédié parent: Simplonline Ressources - Jekyll Theme show_toc: true --- ## Introduction Ce playground SQL te permet d'exécuter des requêtes SQL directement dans ta navigateur. La base de données est pré-chargée avec des données de démonstration. ## Base de données Nous utilisons une base de données contenant des utilisateurs et leurs commandes. La structure de la base est la suivante : ```sql CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER, email TEXT ); CREATE TABLE orders ( id INTEGER PRIMARY KEY, user_id INTEGER, product TEXT NOT NULL, amount REAL, FOREIGN KEY (user_id) REFERENCES users(id) ); ``` {% capture db_schema %} CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER, email TEXT ); CREATE TABLE orders ( id INTEGER PRIMARY KEY, user_id INTEGER, product TEXT NOT NULL, amount REAL, FOREIGN KEY (user_id) REFERENCES users(id) ); INSERT INTO users VALUES (1, 'Alice', 30, 'alice@example.com'), (2, 'Bob', 22, 'bob@example.com'), (3, 'Charlie', 28, 'charlie@example.com'), (4, 'Diana', 35, 'diana@example.com'), (5, 'Eve', 19, 'eve@example.com'); INSERT INTO orders VALUES (1, 1, 'Laptop', 999.99), (2, 1, 'Souris', 29.99), (3, 2, 'Clavier', 79.99), (4, 3, 'Écran', 349.99), (5, 3, 'Casque', 149.99), (6, 4, 'Laptop', 999.99), (7, 5, 'Tablette', 299.99); {% endcapture %} ## Exercice 1 : Requêtes simples Modifie la requête ci-dessous pour : 1. Sélectionner tous les utilisateurs de plus de 25 ans 2. Sélectionner le nom et l'email de tous les utilisateurs 3. Sélectionner tous les produits coûtant plus de 100 {% capture query_1 %} {% endcapture %} {% include sql-playground.html id="exercice-1" schema=db_schema query=query_1 %}
Solution ```sql -- Utilisateurs de plus de 25 ans SELECT * FROM users WHERE age > 25; -- Nom et email SELECT name, email FROM users; -- Produits plus de 100 SELECT * FROM orders WHERE amount > 100; ```
## Exercice 2 : Jointures Écris une requête pour afficher le nom de chaque utilisateur et le produit qu'il a commandé. {% capture query_2 %} {% endcapture %} {% include sql-playground.html id="exercice-2" schema=db_schema query=query_2 %}
Solution ```sql -- Jointure users-orders SELECT users.name, orders.product, orders.amount FROM users JOIN orders ON users.id = orders.user_id; ```
## Exercice 3 : Agrégations Utilise les fonctions d'agrégation pour : 1. Calculer le nombre total d'utilisateurs 2. Calculer le montant total des commandes par utilisateur 3. Trouver le produit le plus cher {% capture query_3 %} {% endcapture %} {% include sql-playground.html id="exercice-3" schema=db_schema query=query_3 %}
Solution ```sql -- Nombre total d'utilisateurs SELECT COUNT(*) as total_users FROM users; -- Montant total par utilisateur SELECT users.name, SUM(orders.amount) as total_spent FROM users JOIN orders ON users.id = orders.user_id GROUP BY users.id; -- Produit le plus cher SELECT product, MAX(amount) as max_price FROM orders; ```
## Exercice 4 : Conditions et tri Écris des requêtes pour : 1. Trouver les utilisateurs dont le nom commence par 'A' ou 'B' 2. Afficher les commandes triées par montant décroissant 3. Trouver les utilisateurs qui ont passé 2 commandes minimum {% capture query_4 %} {% endcapture %} {% include sql-playground.html id="exercice-4" schema=db_schema query=query_4 %}
Solution ```sql -- Utilisateurs A ou B SELECT * FROM users WHERE name LIKE 'A%' OR name LIKE 'B%'; -- Commandes triées par montant SELECT * FROM orders ORDER BY amount DESC; -- Utilisateurs avec plus de 2 commandes SELECT users.name, COUNT(orders.id) as order_count FROM users JOIN orders ON users.id = orders.user_id GROUP BY users.id HAVING order_count >= 2; ```
## 👉 Version markdown de cette démo Consulter la [version markdown de cette démo](https://raw.githubusercontent.com/simplonco/simplonline-ressources-jekyll-theme/refs/heads/main/demo/sql-demo.md) pour voir le code complet. {: .alert-info }