PILOTAGE D'UNE PAGE WEB VIA UNE BASE DE DONNÉES
Le LANGAGE SQL
Stéphane WOUTERS
https://stephanewouters.fr/
SGBD
Page web en PHP
comment communiquer ?
?
SGBD
Page web en PHP
comment communiquer ?
< SQL >
Grâce au langage SQL !
SGBD
SQL est un langage orienté "requêtes"
Requête SQL :
"SELECT nom FROM voitures"
| Peugot 206 |
| Renault Clio |
| Citroen C3 |
Utilisateur :
Réponse : Les noms des voitures
Je veux le nom de toutes les voitures
SQL PERMET de récupérer des données
Exemples de requêtes (plus ou moins complexes) :
- Je veux tous les noms de voitures triés par ordre alphabétique
- Je veux tous les noms de voiture de la marque "Peugeot"
- Je veux toutes les voitures dont le prix est inférieur à 10.000€
- Je veux tous les clients enregistrés le mois dernier
- Je veux les 10 derniers achats
- Je veux tous les clients qui ont acheté des voitures rouges
Chacune de ces requêtes peut être exprimée en SQL
LANGAGE SQL
Réaliser des requêtes SQL
SELECT
Pour récupérer, afficher de la donnée
INSERT
Pour ajouter de nouvelles lignes dans une table
UPDATE
Pour modifier des lignes
DELETE
Pour supprimer des lignes
4 types de requêtes
structure
Soit la structure de base de données suivante :
| ID | name | price |
|---|---|---|
| 1 | Cookie chocolat noir | 0.80 |
| 2 | Cookie chocolat noir et orange | 1.20 |
| 3 | Cookie caramel beurre salé | 1.20 |
| ID | name | |
|---|---|---|
| 1 | Éliot | eliot@gmail.com |
| 2 | Michel | michel@gmail.com |
| 3 | Élise | elise@gmail.com |
Table product
Table customer
Table purchase
| id_customer | id_product | quantity |
|---|---|---|
| 1 | 1 | 2 |
| 1 | 2 | 5 |
| 3 | 3 | 8 |
SELECT
SELECT [champ1], [champ2]
FROM [table]SELECT name, price FROM productExemple :
Récupérer le nom et le prix des produits
| name | price |
|---|---|
| Cookie chocolat noir | 0.80 |
| Cookie chocolat noir et orange | 1.20 |
| Cookie caramel beurre salé | 1.20 |
Récupérer de la donnée
SELECT *
SELECT *
FROM [table]SELECT * FROM productExemple :
Variante, pour récupérer tous les champs d'une table :
| ID | name | price |
|---|---|---|
| 1 | Cookie chocolat noir | 0.80 |
| 2 | Cookie chocolat noir et orange | 1.20 |
| 3 | Cookie caramel beurre salé | 1.20 |
SELECT
SELECT [champ1], [champ2]
FROM [table]
WHERE [condition]WHERE : ajouter une condition :
Les opérateurs :
| A = 2 | A est égal à 2 |
| A != 2 | A différent de 2 |
| A > 2 | A suppérieur à 2 |
| A < 2 | A inférieur à 2 |
| A >= 2 | A supérieur ou égal à 2 |
| A <= 2 | A inférieur ou égal à 2 |
SELECT
SELECT name, price
FROM product
WHERE price < 1Récupérer le nom et le prix des produits qui coûtent moins de 1€
| name | price |
|---|---|
| Cookie chocolat noir | 0.80 |
SELECT *
FROM product
WHERE id = 2Récupérer le produit qui a pour ID 2
| id | name | price |
|---|---|---|
| 2 | Cookie chocolat noir | 0.80 |
SELECT
SELECT [champ1], [champ2]
FROM [table]
ORDER BY [champ] DESCSELECT name, price
FROM product
ORDER BY nameExemple :
Trier les produits par ordre alphabétique
ORDER BY : trier les valeurs
| name | price |
|---|---|
| Cookie caramel beurre salé | 1.20 |
| Cookie chocolat noir | 0.80 |
| Cookie chocolat noir et orange | 1.20 |
Option : Ajouter "DESC" pour inverser l'ordre.
SELECT
SELECT [champ1], [champ2]
FROM [table]
LIMIT [N]SELECT name, price
FROM product
LIMIT 2Exemple
Récupérer les 2 premiers produits
LIMIT : Limiter le nombre de résultat
| name | price |
|---|---|
| Cookie caramel beurre salé | 1.20 |
| Cookie chocolat noir | 0.80 |
SELECT
SELECT [champ1], [champ2]
FROM [table]
WHERE [condition]
ORDER BY [champ]
LIMIT [N]Une requête SELECT complète :
SELECT
Jointures
Soit le problème suivant :
| id_product | id_customer | quantity |
|---|---|---|
| 1 | 1 | 2 |
| 1 | 2 | 5 |
| 3 | 4 | 8 |
Comment afficher les noms des produits et des clients à la place des ID ?
Table purchase
SELECT
Joindre les tables pour assembler les données
Exemple
SELECT [champ1], [champ2], ...
FROM [table1]
JOIN [table2] ON [table1.champ3]=[table2.champ4]SELECT customer.name, product.name, purchase.quantity
FROM purchase
JOIN customer ON purchase.id_customer=customer.id
JOIN product ON purchase.id_product=product.id| customer.name | product.name | quantity |
|---|---|---|
| Éliot | Cookie chocolat noir | 2 |
| Éliot | Cookie chocolat noir et orange | 5 |
| Élise | Cookie caramel beurre salé | 8 |
Jointures
INSERT
INSERT INTO [table] ([champ1, champ2])
VALUES ([valeur1, valeur2])Insérer une ligne dans une table
Exemple
INSERT INTO product (name, price)
VALUES ("cookie 1", 1.80)Ajoute un nouveau produit
UPDATE
UPDATE [table]
SET [champ1]=[valeur]
WHERE [condition]Mettre à jour une ligne existante
Exemple
UPDATE product
SET price=1.20
WHERE id=2Met à jour le prix du produit 2 à 1.20€
SUPPRESSION
DELETE FROM [table]
WHERE [condition]Supprimer une ligne
Exemple
DELETE FROM product
WHERE ID=2Supprimer le produit n°2
SUPPRESSION
Et si j'oublie le WHERE ?
DELETE FROM product
WHERE ID=2
Réaliser des requêtes SQL
EXERCICE
Langage SQL
By doelia
Langage SQL
WIS 1 / Pilotage d'une page web via une BDD
- 991