BASE DE DONNÉES & SQL
Résumé Complet — Niveau 3ème SI
🏫 Lycée Mareth • Ibtihel Azizi & Med Yassin Guediri
🗄️ 📊 🔒 ⚙️
Base de Données Types de données Contraintes DDL / DML
Concepts fondamentaux INT, VARCHAR, DATE... PK, FK, NOT NULL... CREATE ALTER INSERT
1 Concepts de base
Vocabulaire essentiel
📌 Une Base de Données, c'est quoi ?
Un ensemble organisé d'informations stockées dans un ordinateur,
que l'on peut consulter, modifier et gérer facilement.
Exemple : la liste de tous les élèves du lycée avec leurs notes et absences.
Terme Définition
Table Un tableau regroupant des données similaires (ex: table des élèves)
Colonne / Champ Propriété élémentaire d'une entité (ex: nom, prénom, âge)
Ligne / Enreg. Les données d'une personne ou d'un objet (une entrée dans la table)
Clé Primaire Identifie de façon UNIQUE chaque ligne de la table (PRIMARY KEY)
Clé Étrangère Relie deux tables via une référence (FOREIGN KEY)
DDL Langage de définition : CREATE, ALTER, DROP (structure)
DML Langage de manipulation : INSERT, UPDATE, DELETE (données)
DQL Langage d'interrogation : SELECT (consultation)
💡 Astuce — Pensez à un tableau Excel !
→ Les colonnes = les titres du tableau (nom, prénom, âge…)
→ Les lignes = chaque personne inscrite dans le tableau
→ La clé primaire = le numéro de ligne unique qui ne se répète jamais
1
2 Types de données
INT · VARCHAR · DATE · DECIMAL…
Chaque colonne doit avoir un type qui définit quelle sorte d'information elle contient :
Type SQL Ce qu'il représente Exemple d'utilisation
INT Nombre entier idModele INT → 15, 26, 38
DECIMAL(n,d) Nombre réel (n chiffres, d DECIMAL(6,3) → 123.456
décimales)
VARCHAR(n) Texte de longueur variable VARCHAR(20) pour un prénom
(max n)
CHAR(n) Texte de longueur FIXE de n CHAR(1) pour le genre M/F
caractères
TEXT Texte long sans limite fixe description, commentaires
DATE Date format AAAA-MM-JJ 2025-04-26
DATETIME Date ET heure 2025-04-26 08:30:00
⚠️ Erreur fréquente à éviter !
DECIMAL(10.3) ← FAUX ! (point au lieu de virgule)
DECIMAL(10,3) ← CORRECT ! (virgule entre n et d)
2
3 Contraintes d'intégrité
Règles qui garantissent la qualité des données
Contrainte Rôle & Exemple
PRIMARY KEY Identifie chaque ligne de façon unique. Une seule PK par table.
NOT NULL La colonne ne peut pas être vide — saisie obligatoire.
UNIQUE Interdit les doublons (accepte NULL contrairement à PK).
DEFAULT valeur Valeur automatique si on ne saisit rien. Ex: DEFAULT 'Tunis'
CHECK (cond.) Vérifie une condition. Ex: CHECK (NbEtoiles BETWEEN 1 AND 5)
FOREIGN KEY Lie une colonne à la PK d'une autre table.
REFERENCES Utilisé avec FK pour indiquer la table et colonne de référence.
3
4 Commandes DDL
CREATE · ALTER · DROP — Gérer la structure
🆕 4.1 Créer une base de données
⌨ SQL
CREATE DATABASE nom_base;
-- Exemple :
CREATE DATABASE BD_Voitures;
📋 4.2 Créer une table (CREATE TABLE)
Syntaxe générale :
⌨ SQL
CREATE TABLE nom_table (
colonne1 TYPE CONTRAINTE,
colonne2 TYPE CONTRAINTE,
...
PRIMARY KEY (colonne1)
);
Exemple complet — Table testeur :
⌨ SQL
CREATE TABLE testeur (
numPermis VARCHAR(8) PRIMARY KEY,
nom VARCHAR(20) NOT NULL,
prenom VARCHAR(20) NOT NULL,
genre CHAR(1),
adresse VARCHAR(10)
);
⚠️ Erreur classique !
4
CREATE tableau personne(...) ← FAUX !
CREATE TABLE personne(...) ← CORRECT !
→ Il faut toujours écrire TABLE (mot-clé SQL), pas 'tableau' !
✏️ 4.3 Modifier une table (ALTER TABLE)
a Ajouter une colonne
⌨ SQL
ALTER TABLE nom_table ADD nom_col TYPE;
-- Exemple : ajouter 'confort' à evaluation
ALTER TABLE evaluation ADD confort INT;
b Modifier le type / la taille d'une colonne
⌨ SQL
ALTER TABLE nom_table MODIFY nom_col NOUVEAU_TYPE;
-- Réduire la taille de 'nom' à 10 caractères
ALTER TABLE testeur MODIFY nom VARCHAR(10);
c Supprimer une colonne
⌨ SQL
ALTER TABLE nom_table DROP COLUMN nom_col;
-- Exemple : supprimer la colonne 'adresse'
ALTER TABLE testeur DROP COLUMN adresse;
d Supprimer la clé primaire
⌨ SQL
ALTER TABLE evaluation DROP PRIMARY KEY;
5
e Définir une nouvelle clé primaire (simple ou composée)
⌨ SQL
ALTER TABLE personne ADD PRIMARY KEY (idpersonne);
-- Clé primaire composée (sur 2 colonnes) :
ALTER TABLE evaluation ADD PRIMARY KEY (numPermis, idModele);
🗑️ 4.4 Supprimer une table (DROP TABLE)
⌨ SQL
DROP TABLE nom_table; -- ATTENTION : suppression définitive !
⚠️ Attention !
DROP TABLE supprime définitivement la table ET toutes ses données.
Cette opération est IRRÉVERSIBLE — impossible à annuler !
6
5 INSERT — Insérer des données
Remplir les tables avec des enregistrements
📥 5.1 Insérer toutes les colonnes (sans les nommer)
⌨ SQL
INSERT INTO nom_table VALUES (val1, val2, val3, ...);
-- Exemple : insérer un testeur complet
INSERT INTO testeur VALUES ('33 44444', 'Zahdane', 'Olfa', 'F', '');
📥 5.2 Insérer en précisant les colonnes
⌨ SQL
INSERT INTO nom_table (col1, col2) VALUES (val1, val2);
-- Exemple : insérer seulement idModele et libelle
INSERT INTO modeleVoiture (idModele, libelle) VALUES (15, 'WALLYS
IRIS');
INSERT INTO modeleVoiture (idModele, libelle) VALUES (26, 'WALLYS 619');
📥 5.3 Insérer plusieurs lignes en une fois
⌨ SQL
INSERT INTO CLIENT VALUES
('CL01', 'Sami GHARBI', '1985-04-15', '22334455'),
('CL02', 'Nadia FERSI', '1990-07-20', '33445566'),
('CL03', 'Mohamed KACEM', '1978-03-05', '44556677');
💡 À retenir sur les valeurs INSERT
→ Textes (VARCHAR, CHAR, DATE) : entre guillemets simples 'valeur'
→ Nombres (INT, DECIMAL) : sans guillemets → 15, 100, 3.5
→ Dates : format 'AAAA-MM-JJ' → '2025-04-26'
7
8
6 Clés Étrangères — Relations
Lier deux tables entre elles
Une clé étrangère (FOREIGN KEY) garantit que les valeurs d'une colonne existent bien dans la table liée.
🔗 Lors de la création de la table
⌨ SQL
CREATE TABLE CHAMBRE (
CodeCh VARCHAR(4) PRIMARY KEY,
TypeCh VARCHAR(15) NOT NULL,
Prix DECIMAL(6,3) CHECK (Prix > 0),
IdHotel VARCHAR(3),
FOREIGN KEY (IdHotel) REFERENCES HOTEL(IdHotel)
);
🔗 Avec ALTER TABLE (après création)
⌨ SQL
ALTER TABLE voiture
ADD CONSTRAINT ci
FOREIGN KEY (idpersonne)
REFERENCES personne(idpersonne);
📌 Règle fondamentale
Une valeur dans la colonne FK DOIT exister dans la colonne PK de la table mère.
→ On ne peut PAS insérer une voiture avec idpersonne='p9' si p9 n'existe pas dans
personne.
→ Il faut toujours insérer la ligne dans la table MÈRE avant la table FILLE.
9
7 Exercice Corrigé
Devoir de contrôle N°6 — Table personne & voiture
1 Créer la base de données
⌨ SQL
CREATE DATABASE devoir6votrenom;
2 Corriger et créer la table personne
🔴 Erreurs dans le code original :
CREATE tableau → doit être CREATE TABLE
Deux PRIMARY KEY séparées → une table = une seule clé primaire
DECIMAL(10.3) → doit être DECIMAL(10,3)
⌨ SQL
CREATE TABLE personne (
nom VARCHAR(40),
prenom VARCHAR(40),
adresse VARCHAR(50),
email VARCHAR(50),
telephone DECIMAL(10,3),
PRIMARY KEY (nom)
);
a Ajouter la colonne idpersonne (VARCHAR 5)
⌨ SQL
ALTER TABLE personne ADD idpersonne VARCHAR(5);
b Supprimer l'ancienne clé primaire
⌨ SQL
ALTER TABLE personne DROP PRIMARY KEY;
10
c Définir idpersonne comme nouvelle clé primaire
⌨ SQL
ALTER TABLE personne ADD PRIMARY KEY (idpersonne);
d Créer la table voiture
⌨ SQL
CREATE TABLE voiture (
matricule VARCHAR(10) PRIMARY KEY,
marque VARCHAR(20),
idpersonne VARCHAR(5)
);
e Ajouter la contrainte 'ci' (clé étrangère)
⌨ SQL
ALTER TABLE voiture
ADD CONSTRAINT ci
FOREIGN KEY (idpersonne)
REFERENCES personne(idpersonne);
3 Insérer dans la table personne
⌨ SQL
INSERT INTO personne (idpersonne,nom,prenom,adresse,email,telephone)
VALUES ('p1','gabssi','mohamed','rue essaada mareth 6080',
'gabsimohamed@[Link]', 75258666);
3 Insérer dans la table voiture → ATTENTION !
⌨ SQL
INSERT INTO voiture VALUES ('12tun1234', 'peugeot', 'p2');
⚠️ Remarque — Violation de contrainte !
L'idpersonne 'p2' n'existe pas encore dans la table personne.
11
→ Cette insertion échouera à cause de la contrainte FK 'ci'.
→ Il faut d'abord insérer la personne p2, PUIS insérer la voiture.
📝 Question Théorique — Réponses
Concept Définition
Colonne / Attribut Représente une propriété élémentaire de l'entité décrite par cette
table
DDL Commande permettant la création, modification et suppression
des structures d'une BD
Clé Primaire (PK) Identifie d'une façon unique chaque ligne de la table
Mode Graphique / Interface composée d'une suite de fenêtres pour créer une base
EasyPHP de données
✅ Bon courage MA FEMME! Je suis fier de toi.
Lycée Mareth — 3ème SI — 2025/2026
12