AccueilDCGUE8 — Systèmes d'informationLe langage SQL
💻DCGUE8 — Systèmes d'information

Le langage SQL

Cours complet de UE8 — Systèmes d'information pour le DCG. Révise efficacement avec StudentAI.

Points clés à retenir

  • 1SQL est normalisé ISO (ISO/IEC 9075) mais chaque SGBDR peut avoir des variantes syntaxiques mineures.
  • 2Ordre obligatoire des clauses du `SELECT` : `SELECT – FROM – JOIN – WHERE – GROUP BY – HAVING – ORDER BY – LIMIT`. Toute inversion génère une erreur de syntaxe.
  • 3`WHERE` vs `HAVING` : `WHERE` filtre les lignes avant le regroupement ; `HAVING` filtre les groupes après agrégation. On ne peut pas utiliser une fonction d'agrégation dans un `WHERE`.
  • 4`INNER JOIN` ne retourne que les lignes avec correspondance dans les deux tables. `LEFT JOIN` conserve toutes les lignes de la table gauche, même sans correspondance (valeurs `NULL` côté droit).
  • 5`UPDATE` et `DELETE` sans `WHERE` s'appliquent à toutes les lignes de la table : risque de perte de données irréversible hors transaction.
  • 6Les transactions garantissent les propriétés ACID : en contexte comptable (lettrage, règlement), elles assurent la cohérence de la base si une opération échoue.
  • 7La clé étrangère (`FOREIGN KEY`) garantit l'intégrité référentielle : on ne peut pas supprimer un client qui possède des factures sans traiter ces factures au préalable.
  • 8`GROUP BY` : toute colonne du `SELECT` non agrégée doit apparaître dans le `GROUP BY`, sans exception.

Le langage SQL — UE8 Systèmes d'information (DCG)

---

Introduction

Le SQL (Structured Query Language) est le langage standard de manipulation et d'interrogation des bases de données relationnelles. Normalisé par l'ISO (norme ISO/IEC 9075, régulièrement mise à jour depuis 1987), il est implémenté par tous les grands systèmes de gestion de bases de données relationnelles (SGBDR) : MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server, MariaDB, SQLite.

Dans le cadre de l'UE8 du DCG, le SQL s'inscrit dans la maîtrise des systèmes d'information de gestion (SIG). Le gestionnaire ou le comptable n'est pas un développeur, mais il doit être capable de :

  • Interroger une base de données pour produire des états de gestion,

  • Comprendre les structures de données afin de dialoguer avec les équipes informatiques,

  • Écrire des requêtes simples à complexes pour extraire, croiser et analyser des données.


> Positionnement dans le référentiel UE8 : Le programme distingue la modélisation des données (MCD/MLD, cours dédié) et l'exploitation des données via SQL. Ce chapitre traite exclusivement de l'exploitation SQL.

---

1. Architecture d'une base de données relationnelle

1.1 Le modèle relationnel

Le modèle relationnel (Edgar F. Codd, 1970, IBM) repose sur le concept de relation, représentée sous la forme d'une table à deux dimensions :









ConceptDéfinitionSynonyme courant
---------
RelationEnsemble de tuples partageant les mêmes attributsTable
TupleOccurrence d'une relationLigne / Enregistrement
AttributPropriété d'une relationColonne / Champ
DomaineEnsemble de valeurs possibles pour un attributType de données
Clé primaireAttribut (ou ensemble d'attributs) identifiant de façon unique chaque tuplePRIMARY KEY
Clé étrangèreAttribut faisant référence à la clé primaire d'une autre tableFOREIGN KEY

1.2 Exemple de schéma relationnel — Contexte comptable

Prenons une PME avec un système de facturation simple. Le schéma relationnel (MLD) est le suivant :

```
CLIENT (client_id, raison_sociale, siret, email, ville)
PRODUIT (produit_id, libelle, prix_unitaire_ht, taux_tva)
FACTURE (facture_id, #client_id, date_facture, date_echeance, statut)
LIGNE_FACTURE (ligne_id, #facture_id, #produit_id, quantite, prix_unit_ht_applique)
```

> Convention : Le `#` devant un attribut indique une clé étrangère.

1.3 Types de données essentiels (SQL standard)











Type SQLDescriptionExemple de valeur
---------
`INT` ou `INTEGER`Entier (positif ou négatif)42, -5
`DECIMAL(p,s)`Nombre décimal avec `p` chiffres dont `s` après la virguleDECIMAL(10,2) → 9999999.99
`VARCHAR(n)`Chaîne de caractères variable, max `n` caractères'Dupont SA'
`CHAR(n)`Chaîne de longueur fixe `n`CHAR(14) pour le SIRET
`DATE`Date au format AAAA-MM-JJ2025-06-15
`DATETIME`Date et heure2025-06-15 14:30:00
`BOOLEAN`Valeur vraie/fausseTRUE / FALSE
`TEXT`Chaîne longue sans limite fixeObservations libres

---

2. Catégories de commandes SQL

Le SQL est organisé en sous-langages selon la nature des opérations :







Sous-langageSigleCommandes principalesUsage
------------
Data Definition LanguageDDLCREATE, ALTER, DROP, TRUNCATEDéfinir la structure des tables
Data Manipulation LanguageDMLSELECT, INSERT, UPDATE, DELETEManipuler les données
Data Control LanguageDCLGRANT, REVOKEGérer les droits d'accès
Transaction Control LanguageTCLBEGIN, COMMIT, ROLLBACKGérer les transactions

> Mnémonique fonctionnel : DADTDéfinir, Alimenter, Droits, Transactions

---

3. Le DDL — Définition des structures

3.1 Créer une table : `CREATE TABLE`

```sql
CREATE TABLE CLIENT (
client_id INT PRIMARY KEY,
raison_sociale VARCHAR(100) NOT NULL,
siret CHAR(14) UNIQUE,
email VARCHAR(150),
ville VARCHAR(80)
);

CREATE TABLE FACTURE (
facture_id INT PRIMARY KEY,
client_id INT NOT NULL,
date_facture DATE NOT NULL,
date_echeance DATE,
statut VARCHAR(20) DEFAULT 'EN_ATTENTE',
FOREIGN KEY (client_id) REFERENCES CLIENT(client_id)
);
```

Contraintes d'intégrité courantes :









ContrainteRôle
------
`PRIMARY KEY`Identifiant unique, non nul
`FOREIGN KEY … REFERENCES`Intégrité référentielle entre tables
`NOT NULL`Valeur obligatoire
`UNIQUE`Valeur non dupliquée dans la colonne
`DEFAULT valeur`Valeur par défaut si non renseignée
`CHECK (condition)`Contrôle de domaine (ex. `CHECK (quantite > 0)`)

3.2 Modifier une table : `ALTER TABLE`

```sql
-- Ajouter une colonne
ALTER TABLE CLIENT ADD COLUMN telephone VARCHAR(20);

-- Modifier le type d'une colonne (syntaxe MySQL/MariaDB)
ALTER TABLE CLIENT MODIFY COLUMN email VARCHAR(200);

-- Supprimer une colonne
ALTER TABLE CLIENT DROP COLUMN telephone;
```

3.3 Supprimer une table : `DROP TABLE`

```sql
DROP TABLE LIGNE_FACTURE; -- Suppression définitive avec toutes les données
```

> ⚠️ `DROP TABLE` supprime la structure et les données. `TRUNCATE TABLE` vide les données mais conserve la structure.

---

4. Le DML — Manipulation des données

4.1 Insérer des données : `INSERT INTO`

```sql
-- Insertion d'un client
INSERT INTO CLIENT (client_id, raison_sociale, siret, email, ville)
VALUES (1, 'BOULANGERIE MARTIN', '12345678901234', 'contact@martin.fr', 'Lyon');

-- Insertion multiple
INSERT INTO CLIENT (client_id, raison_sociale, ville)
VALUES
(2, 'GARAGE LECLERC', 'Bordeaux'),
(3, 'CABINET DURAND', 'Paris');
```

4.2 Modifier des données : `UPDATE`

```sql
-- Mise à jour de l'email d'un client précis
UPDATE CLIENT
SET email = 'nouveau@martin.fr'
WHERE client_id = 1;

-- Mise à jour du statut de toutes les factures échues
UPDATE FACTURE
SET statut = 'EN_RETARD'
WHERE date_echeance < CURRENT_DATE AND statut = 'EN_ATTENTE';
```

> ⚠️ Sans clause `WHERE`, l'`UPDATE` s'applique à toutes les lignes de la table.

4.3 Supprimer des données : `DELETE`

```sql
-- Supprimer un client précis
DELETE FROM CLIENT WHERE client_id = 3;

-- Supprimer toutes les factures réglées avant 2023
DELETE FROM FACTURE
WHERE statut = 'REGLE' AND date_facture < '2023-01-01';
```

---

5. Le DML — Interrogation des données : `SELECT`


Accède au cours complet gratuitement

Tableaux récapitulatifs, mnémotechniques, exercices corrigés, QCM et colle orale IA — tout est inclus.

S'inscrire gratuitement

Questions fréquentes

Qu'est-ce que le SQL et à quoi sert-il ?

Le SQL (Structured Query Language) est un langage de programmation utilisé pour gérer et manipuler des bases de données relationnelles. Il permet aux utilisateurs de créer, lire, mettre à jour et supprimer des données dans des systèmes de gestion de bases de données.

Quels sont les types de données courants dans une base de données SQL ?

Les types de données courants incluent INT pour les entiers, VARCHAR(n) pour les chaînes de caractères de longueur variable, et DATE pour les dates. Chaque colonne d'une table doit avoir un type de données défini.

Comment insérer une nouvelle ligne dans une table SQL ?

Pour insérer une nouvelle ligne, on utilise la commande INSERT INTO. Par exemple : `INSERT INTO Clients (Nom, Prénom, Email) VALUES ('Dupont', 'Jean', 'jean.dupont@example.com');`.

Quelle est la fonction de la clause WHERE dans une requête SQL ?

La clause WHERE permet de filtrer les résultats d'une requête en spécifiant une condition. Par exemple, `SELECT * FROM Clients WHERE Nom = 'Dupont';` retourne uniquement les clients dont le nom est 'Dupont'.

Comment trier les résultats d'une requête SQL ?

On utilise la clause ORDER BY pour trier les résultats. Par exemple, `SELECT * FROM Clients ORDER BY Nom ASC;` trie les clients par ordre alphabétique de leur nom.

Qu'est-ce que la commande CREATE TABLE ?

La commande CREATE TABLE est utilisée pour créer une nouvelle table dans une base de données. Par exemple : `CREATE TABLE Clients (ID INT PRIMARY KEY, Nom VARCHAR(50), Prénom VARCHAR(50), Email VARCHAR(100));`.

À quoi servent les fonctions d'agrégation en SQL ?

Les fonctions d'agrégation, comme COUNT(), SUM(), AVG(), MIN() et MAX(), permettent d'effectuer des calculs sur un ensemble de valeurs dans une colonne. Elles sont souvent utilisées avec la clause GROUP BY pour regrouper les résultats.

Comment modifier une ligne existante dans une table SQL ?

Pour modifier une ligne, on utilise la commande UPDATE. Par exemple : `UPDATE Clients SET Email = 'jean.dupont@nouveau.com' WHERE ID = 1;` met à jour l'email du client avec l'ID 1.

Autres chapitres — UE8 — Systèmes d'information

Prêt à réviser ton DCG ?

QCM illimités, colle orale IA, flashcards et bien plus — 100% gratuit.

Commencer à réviser