LMD (Langage de Manipulation de Données) : requêtes d'extraction et de mise à jour des données.
Note : les copies d'écran sont des vues partielles des tables.
Extractions
SELECT [DISTINCT] * | colonnes FROM table [WHERE condition(s)] [ORDER BY] colonne(s)
SELECT * FROM article WHERE id_article > 100 ORDER BY designation
Liste toutes les colonnes de la table article pour les articles ayant un id > 100 en les produisant dans l'ordre ascendant de la désignation.
DISTINCT : élémine les doublons.
SELECT id_client, rs_client, ca_client FROM client WHERE ca_client > 20000
rs_client = Raison Sociale, ca_client Chiffre d'Affaires
Extrait les clients dont le CA > 2000 en produisant uniquement les colonnes citées.
SELECT * FROM commande WHERE date_commande IS NULL OR id_client between 120 AND 140
Liste les commandes dont la date n'est pas renseignée ou dont l'id client est compris entre 120 et 140.
La valeur NULL ne supporte que le comparateur IS.
SELECT * FROM article WHERE designation LIKE '%vélo%' AND id_famille NOT IN (1, 5, 9)
Liste les articles dont la désignation contient le mot TUBE et dont l'id famille n'est pas dans la liste 1, 5, 9.
Important : lors de la combinaison de AND et de OR il faut utiliser les () : (A AND B) OR C est différent de A AND B OR C
Les agrégats
AVG, MIN, MAX, SUM, COUNT
Ne retourne qu'une seule ligne, pas de colonne dans le SELECT :
SELECT fonction(colonne) FROM table [WHERE condition]
SELECT AVG(ca_client), MIN(ca_client), MAX(ca_client), SUM(ca_client) FROM CLIENT WHERE id_categorie > 7
Moyenne, mini, maxi, somme du CA client pour les clients dont l'id catégorie > 7
SELECT COUNT(*) FROM client WHERE ca_client > 20000
Nombre de clients ayant un CA > 20000.
Retourne plusieurs lignes groupées sur colonne du SELECT, le WHERE porte sur les lignes constitutives lors que le HAVING porte sur le groupe (colonne ou fonction).
SELECT colonne, fonction(colonne) FROM table [WHERE condition] GROUP BY colonne [HAVING condition].
SELECT id_categorie, AVG(ca_client), MIN(ca_client) FROM CLIENT GROUP BY id_categorie
Moyenne et mini du CA client regroupés par catégorie.
SELECT id_categorie, AVG(ca_client), MIN(ca_client) FROM CLIENT GROUP BY id_categorie HAVING MAX(ca_client) < 100000
Moyenne et mini du CA client regroupés par catégorie pour les clients ayant un maxi du CA < 100000.
SELECT id_categorie, AVG(ca_client), MIN(ca_client) FROM CLIENT WHERE cp_client BETWEEN '69000' AND '69999' GROUP BY id_categorie HAVING MAX(ca_client) < 100000
Moyenne et mini du CA client regroupés par catégorie pour les clients du département 69 ayant un maxi du CA < 100000.