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 product
Exemple :
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 product
Exemple :
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 < 1
Ré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 = 2
Ré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] DESC
SELECT name, price
FROM product
ORDER BY name
Exemple :
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 2
Exemple
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=2
Met à jour le prix du produit 2 à 1.20€
SUPPRESSION
DELETE FROM [table]
WHERE [condition]
Supprimer une ligne
Exemple
DELETE FROM product
WHERE ID=2
Supprimer 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
- 669