SQL et Bases de Données Relationnelles

Classe SDA 7 2025-2026

Module 2

Premiers Pas avec SQL - Le Langage des Données

1. Le DDL : Construire le Squelette de votre Base de Données

Le DDL (Data Definition Language) est le langage de l'architecte. Avant de pouvoir placer le moindre livre (INSERT), nous devons d'abord construire la bibliothèque (CREATE TABLE), définir les étagères (colonnes) et poser les règles (contraintes). Chaque instruction DDL modifie la structure de la base de données elle-même.

CREATE TABLE : Construire une Étagère

La commande CREATE TABLE définit une nouvelle table, ses colonnes et les "règles" (contraintes) pour chaque colonne.

Types de Données Courants :

Type de Donnée Description Exemple d'utilisation
INT ou INTEGER Nombres entiers. id, age, quantite
VARCHAR(n) Chaîne de caractères de longueur variable (avec un maximum de n caractères). nom, email, titre
DECIMAL(p, s) Nombre décimal avec une précision totale p et s chiffres après la virgule. prix, salaire, montant
DATE Date au format AAAA-MM-JJ. date_naissance
TIMESTAMP Date et heure précises, souvent utilisées pour tracer les modifications. date_creation, derniere_maj

Contraintes Courantes :

Contrainte Description
PRIMARY KEY La "carte d'identité" d'une ligne. Chaque valeur est unique et ne peut jamais être NULL. Identifie de manière unique chaque ligne de la table.
NOT NULL Empêche la colonne d'être vide. Si un champ est essentiel (comme un nom d'utilisateur), il est marqué comme NOT NULL.
UNIQUE Garantit que toutes les valeurs de la colonne sont différentes, mais, contrairement à la clé primaire, elle peut contenir des valeurs NULL.
DEFAULT valeur Assigne une valeur par défaut si aucune n'est fournie lors de l'insertion.
AUTO_INCREMENT (Spécifique à MySQL/SQLite) Incrémente automatiquement la valeur pour chaque nouvelle ligne (idéal pour les id).
FOREIGN KEY La "clé de référence". Elle crée un lien entre les tables, garantissant que les données existent dans la table "parente". Par exemple, l'ID d'un auteur dans la table articles doit exister dans la table auteurs. C'est l'essence même des bases de données relationnelles.

Exemple de création de table :

CREATE TABLE utilisateurs ( id INT PRIMARY KEY AUTO_INCREMENT, nom VARCHAR(100) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, date_inscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Exemple CREATE TABLE
Exemple de création de table

ALTER TABLE : Modifier la structure

Le développement n'est pas statique. Les besoins évoluent, et la structure de la base de données doit s'adapter. ALTER TABLE permet de modifier une table existante sans la reconstruire.

DROP TABLE : Supprimer une structure

Attention : Utilisez cette commande avec la plus grande prudence. Elle supprime définitivement une table et toutes les données qu'elle contient, sans possibilité de retour en arrière.

2. Le DML : Remplir et Gérer les Étagères

Le DML (Data Manipulation Language) est le langage de l'action. Une fois que la structure est en place, le DML nous permet d'interagir avec les données : les créer, les lire, les mettre à jour et les supprimer (l'acronyme CRUD). C'est le cœur de l'utilisation quotidienne de SQL.

INSERT INTO : Ajouter des Données (Create)

-- Insérer un seul utilisateur INSERT INTO utilisateurs (nom, email) VALUES ('Alice Martin', 'alice@example.com'); -- Insérer plusieurs utilisateurs en une seule commande INSERT INTO utilisateurs (nom, email, date_inscription) VALUES ('Bob Durand', 'bob@example.com', '2024-02-10 10:00:00'), ('Charlie Dupont', 'charlie@example.com', '2024-03-22 15:30:00');

SELECT : Lire des Données (Read)

C'est la commande que vous utiliserez le plus. Elle est incroyablement puissante.

-- Sélectionner toutes les colonnes (*) de tous les utilisateurs SELECT * FROM utilisateurs; -- Sélectionner des colonnes spécifiques pour ne voir que ce qui est pertinent SELECT nom, email FROM utilisateurs; -- Filtrer les résultats avec WHERE pour trouver des informations précises SELECT * FROM utilisateurs WHERE nom = 'Alice Martin'; SELECT * FROM utilisateurs WHERE id > 1; -- Utiliser LIKE pour des recherches partielles (% est un joker) SELECT * FROM utilisateurs WHERE email LIKE '%@example.com'; -- Combiner des conditions avec AND et OR SELECT * FROM utilisateurs WHERE nom LIKE 'A%' AND date_inscription > '2024-01-01'; -- Trier les résultats avec ORDER BY (ASC pour ascendant est le défaut) SELECT * FROM utilisateurs ORDER BY nom ASC; SELECT * FROM utilisateurs ORDER BY date_inscription DESC; -- DESC pour décroissant -- Limiter le nombre de résultats avec LIMIT (utile pour la pagination) SELECT * FROM utilisateurs ORDER BY date_inscription DESC LIMIT 2; -- Les 2 utilisateurs les plus récents

Filtrage avancé :

UPDATE : Mettre à Jour des Données (Update)

Cette commande vous permet de modifier des valeurs existantes. La clause WHERE est votre bouée de sauvetage ! Pensez à toujours exécuter un SELECT avec la même condition WHERE pour vérifier les lignes qui seront affectées avant d'exécuter l'UPDATE.

Attention : Oublier la clause WHERE dans un UPDATE mettra à jour toutes les lignes de la table ! C'est une erreur classique et potentiellement désastreuse.
UPDATE utilisateurs SET email = 'alice.martin@newdomain.com' WHERE id = 1;

DELETE : Supprimer des Données (Delete)

Comme pour UPDATE, la clause WHERE est vitale. La bonne pratique consiste à toujours utiliser une condition WHERE pour cibler les lignes à supprimer.

Attention : Oublier la clause WHERE dans un DELETE supprimera toutes les lignes de la table ! Soyez extrêmement prudent.
DELETE FROM utilisateurs WHERE id = 2;

Pour aller plus loin en vidéo

Source: Zak ISMAILI