Stéphane WOUTERS
https://stephanewouters.fr/
SGBD
Page web en PHP
?
SGBD
Page web en PHP
< SQL >
Grâce au langage SQL !
SGBD
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
Exemples de requêtes (plus ou moins complexes) :
Chacune de ces requêtes peut être exprimée en 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
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 [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 *
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 [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 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 [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 [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 [champ1], [champ2]
FROM [table]
WHERE [condition]
ORDER BY [champ]
LIMIT [N]
Une requête SELECT complète :
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
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 |
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 [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€
DELETE FROM [table]
WHERE [condition]
Supprimer une ligne
Exemple
DELETE FROM product
WHERE ID=2
Supprimer le produit n°2
Et si j'oublie le WHERE ?
DELETE FROM product
WHERE ID=2
Réaliser des requêtes SQL