Retour aux cours de Systemes d Information
Systemes d Information - Terminale STMG

Le Langage SQL

SQL (Structured Query Language) est LE langage universel pour interroger et manipuler les bases de données. De Amazon a Carrefour, toutes les entreprises l utilisent quotidiennement pour exploiter leurs données.

Objectifs du chapitre

  • Maîtriser la syntaxe de base de SQL (SELECT, FROM, WHERE)
  • Savoir trier et filtrer les résultats (ORDER BY, conditions)
  • Utiliser les fonctions d agregation (COUNT, SUM, AVG, MAX, MIN)
  • Comprendre les jointures pour croiser des tables

Introduction : SQL, le Langage des Donnees

Imaginez que vous travaillez chez Amazon et que vous devez repondre a cette question : "Combien de clients parisiens ont achete plus de 500 euros de produits electroniques le mois dernier ?"

Avec des milliards de transactions dans la base de données, impossible de chercher manuellement. C est la que SQL intervient : en quelques lignes de code, vous obtenez la réponse en quelques secondes.

Chiffres clés

  • Amazon execute plus de 15 000 requetes SQL par seconde sur ses bases de données.
  • Carrefour analyse 100 millions de tickets de caisse par an grace a SQL.
  • SQL est utilise par 95% des entreprises du Fortune 500.

Attention au Bac

SQL n est PAS un langage de programmation comme Python ou Java. C est un langage declaratif : vous decrivez CE QUE vous voulez obtenir, pas COMMENT l obtenir. La base de données se charge de l execution optimale.

Partie 1 : La Requete SELECT de Base

1.1 Syntaxe fondamentale

La requete SELECT est la plus utilisee en SQL. Elle permet de recuperer des données depuis une ou plusieurs tables. Voici sa structure de base :

-- Structure de base d une requete SELECT

SELECT colonne1, colonne2, colonne3

FROM nom_de_la_table;

Vocabulaire essentiel :

  • SELECT : mot-cle pour selectionner des colonnes
  • FROM : mot-cle pour indiquer la table source
  • * (asterisque) : selectionne TOUTES les colonnes
  • ; (point-virgule) : termine la requete

1.2 Exemples concrets

Prenons une table CLIENTS d un site e-commerce comme Decathlon :

id_clientnomprenomemailvilledate_inscription
1DupontMariemarie.dupont@email.frParis2024-01-15
2MartinJeanj.martin@gmail.comLyon2024-02-20
3BernardSophiesophie.b@outlook.comParis2024-03-10

-- Exemple 1 : Selectionner toutes les colonnes

SELECT *

FROM clients;

-- Exemple 2 : Selectionner certaines colonnes

SELECT nom, prenom, ville

FROM clients;

-- Exemple 3 : Renommer une colonne avec AS (alias)

SELECT nom AS "Nom de famille", prenom AS "Prenom"

FROM clients;

Conseil pratique

Evitez d utiliser SELECT * en production. Specifiez toujours les colonnes dont vous avez besoin : c est plus rapide et plus clair. Chez Salesforce, les developpeurs qui utilisent SELECT * sur des tables de millions de lignes peuvent bloquer le serveur !

Partie 2 : Filtrer avec WHERE

2.1 La clause WHERE

La clause WHERE permet de filtrer les résultats selon des conditions. Seuls les enregistrements qui satisfont la condition sont retournes.

-- Syntaxe avec WHERE

SELECT colonne1, colonne2

FROM nom_table

WHERE condition;

2.2 Les operateurs de comparaison

OperateurSignificationExemple
=Egal aWHERE ville = 'Paris'
<> ou !=Different deWHERE ville <> 'Lyon'
>Superieur aWHERE prix > 100
>=Superieur ou egalWHERE quantite >= 5
<Inferieur aWHERE age < 18
<=Inferieur ou egalWHERE note <= 10
BETWEENEntre deux valeursWHERE prix BETWEEN 10 AND 50
LIKECorrespond au motifWHERE nom LIKE 'Dup%'
INDans une listeWHERE ville IN ('Paris', 'Lyon')
IS NULLValeur nulleWHERE email IS NULL

2.3 Combiner les conditions : AND, OR, NOT

-- Exemple 1 : Clients de Paris OU Lyon

SELECT nom, prenom, ville

FROM clients

WHERE ville = 'Paris' OR ville = 'Lyon';

-- Exemple 2 : Clients de Paris ET inscrits en 2024

SELECT nom, prenom, date_inscription

FROM clients

WHERE ville = 'Paris' AND date_inscription >= '2024-01-01';

-- Exemple 3 : Clients qui ne sont PAS de Paris

SELECT nom, prenom, ville

FROM clients

WHERE NOT ville = 'Paris';

Attention au Bac

L operateur LIKE utilise des caractères jokers : % remplace plusieurs caractères, _ (underscore) remplace un seul caractère. Par exemple, LIKE 'Dup%' trouve "Dupont", "Dupuis", "Durand", etc.

Partie 3 : Trier avec ORDER BY

La clause ORDER BY permet de trier les résultats selon une ou plusieurs colonnes. Par defaut, le tri est ascendant (du plus petit au plus grand).

-- Tri ascendant (par defaut) : A-Z, 0-9

SELECT nom, prenom, ville

FROM clients

ORDER BY nom ASC;

-- Tri descendant : Z-A, 9-0

SELECT nom, prenom, date_inscription

FROM clients

ORDER BY date_inscription DESC;

-- Tri sur plusieurs colonnes

SELECT nom, prenom, ville

FROM clients

ORDER BY ville ASC, nom ASC;

Cas d entreprise : Amazon

Quand vous consultez vos commandes sur Amazon et choisissez "Trier par date", le site execute une requete SQL avec ORDER BY date_commande DESC. Chaque jour, Amazon trie ainsi des centaines de millions de résultats pour ses 300+ millions de clients actifs.

Partie 4 : Les Fonctions d Agregation

Les fonctions d agregation permettent de faire des calculs sur un ensemble de valeurs et de retourner un résultat unique. Ce sont des outils essentiels pour l analyse de données.

FonctionDescriptionExemple
COUNT()Compte le nombre d enregistrementsSELECT COUNT(*) FROM clients
SUM()Calcule la sommeSELECT SUM(montant) FROM commandes
AVG()Calcule la moyenneSELECT AVG(prix) FROM produits
MAX()Trouve la valeur maximaleSELECT MAX(date) FROM commandes
MIN()Trouve la valeur minimaleSELECT MIN(prix) FROM produits

4.1 Exemples pratiques

Prenons une table COMMANDES :

-- Combien de commandes au total ?

SELECT COUNT(*) AS "Nombre de commandes"

FROM commandes;

-- Chiffre d affaires total

SELECT SUM(montant) AS "CA Total"

FROM commandes;

-- Panier moyen

SELECT AVG(montant) AS "Panier moyen"

FROM commandes;

-- Plus grosse commande

SELECT MAX(montant) AS "Plus grosse commande"

FROM commandes;

4.2 GROUP BY : regrouper les résultats

GROUP BY permet de regrouper les résultats par une ou plusieurs colonnes avant d appliquer les fonctions d agregation.

-- Nombre de clients par ville

SELECT ville, COUNT(*) AS "Nb clients"

FROM clients

GROUP BY ville;

-- CA par mois

SELECT mois, SUM(montant) AS "CA mensuel"

FROM commandes

GROUP BY mois

ORDER BY mois;

4.3 HAVING : filtrer les groupes

HAVING est comme WHERE, mais pour filtrer APRES le regroupement. WHERE filtre les lignes, HAVING filtre les groupes.

-- Villes avec plus de 100 clients

SELECT ville, COUNT(*) AS nb_clients

FROM clients

GROUP BY ville

HAVING COUNT(*) > 100;

Attention au Bac

Ne confondez pas WHERE et HAVING : WHERE s applique AVANT le GROUP BY (sur les lignes individuelles), HAVING s applique APRES (sur les groupes). C est une erreur frequente !

Partie 5 : Les Jointures (Introduction)

Les jointures permettent de croiser des données de plusieurs tables. C est la puissance du modèle relationnel : chaque table est specialisee, et SQL permet de les combiner.

Table CLIENTS

id_client, nom, ville

Table COMMANDES

id_commande, date, montant, id_client

-- Jointure : Afficher les commandes avec le nom du client

SELECT c.nom, c.ville, co.date, co.montant

FROM clients c

JOIN commandes co ON c.id_client = co.id_client;

-- Syntaxe alternative avec INNER JOIN

SELECT clients.nom, commandes.montant

FROM clients

INNER JOIN commandes ON clients.id_client = commandes.id_client;

Cas d entreprise : Carrefour

Chez Carrefour, les analystes utilisent des jointures pour croiser les tables TICKETS, PRODUITS et MAGASINS. Une seule requete peut ainsi repondre a : "Quels produits bio se vendent le mieux dans les Carrefour City de la region parisienne ?"

Resume des Points Cles pour le Bac

Structure de base

  • SELECT : choisir les colonnes
  • FROM : indiquer la table
  • WHERE : filtrer les lignes
  • ORDER BY : trier les résultats

Agregation

  • COUNT, SUM, AVG, MAX, MIN
  • GROUP BY : regrouper
  • HAVING : filtrer les groupes
  • JOIN : croiser les tables

Quiz de Validation - 3 Questions

Question 1 : Quelle requete permet d afficher les clients de Paris tries par nom ?

A.SELECT * FROM clients WHERE ville = 'Paris' ORDER BY nom;
B.SELECT * ORDER BY nom FROM clients WHERE ville = 'Paris';
C.SELECT * FROM clients ORDER BY nom WHERE ville = 'Paris';

Question 2 : Pour calculer le panier moyen des commandes, quelle fonction utiliser ?

A. COUNT(montant)
B. SUM(montant)
C. AVG(montant)
D. MAX(montant)

Question 3 : Quelle clause utiliser pour filtrer les groupes après un GROUP BY ?

A. WHERE
B. HAVING
C. ORDER BY
D. FILTER BY

Correction

  • Question 1 : A - L ordre est toujours SELECT, FROM, WHERE, ORDER BY.
  • Question 2 : C - AVG() calcule la moyenne (panier moyen).
  • Question 3 : B - HAVING filtre les groupes, WHERE filtre les lignes individuelles.

3/3 ? Excellent ! Vous maîtrisez les bases de SQL. 2/3 ? Relisez les exemples. 0-1/3 ? Reprenez le cours depuis le debut.

Cours Bac STMG - Systemes d Information - Le Langage SQL

Exemples bases sur des cas reels d entreprises (Amazon, Carrefour, Decathlon, Salesforce)