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 email
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

  • 570