SQL

I. Introduction aux bases de données

Qu'est-ce qu'une base de données ?

Une base de données est un ensemble structuré d'informations stockées de façon à pouvoir être facilement consultées, modifiées, recherchées ou organisées.

Exemples :

Objectifs :


II. Le modèle relationnel

C’est le modèle le plus courant, utilisé dans la majorité des bases de données.

1. Table (= relation)

Une table correspond à un ensemble de lignes (appelées tuples) et de colonnes (appelées attributs).

Exemple de table Eleves :

id_elevenomprenomage
1DupontMarie17
2MartinLucas18

2. Attributs

Ce sont les colonnes de la table. Chaque attribut a un nom et un type (texte, entier, date, etc.)

3. Tuple (ou enregistrement)

Chaque ligne correspond à un enregistrement de la table.


III. Clés primaires et étrangères

Clé primaire (PRIMARY KEY)

C’est un attribut (ou un ensemble d’attributs) qui permet d’identifier de façon unique chaque ligne de la table.

Exemple : id_eleve est une clé primaire dans la table Eleves.

Clé étrangère (FOREIGN KEY)

C’est un attribut qui fait référence à une clé primaire d’une autre table.

Exemple :


IV. Introduction au langage SQL

Le SQL (Structured Query Language) est un langage standardisé qui permet d’interagir avec une base de données relationnelle.

On l’utilise pour :


V. Créer une table en SQL

CREATE TABLE Eleves (
  id_eleve INTEGER PRIMARY KEY,
  nom TEXT,
  prenom TEXT,
  age INTEGER,
  id_classe INTEGER,
  FOREIGN KEY(id_classe) REFERENCES Classes(id_classe)
);

Explication :


VI. Insérer des données

INSERT INTO Eleves (id_eleve, nom, prenom, age, id_classe)
VALUES (1, 'Dupont', 'Marie', 17, 101);

On ajoute ici une élève dans la table Eleves.


VII. Rechercher des données : SELECT

SELECT * FROM Eleves;

→ Affiche toutes les colonnes et lignes.

SELECT nom, prenom FROM Eleves;

→ Affiche uniquement les noms et prénoms.

SELECT * FROM Eleves WHERE age >= 18;

→ Affiche les élèves de 18 ans et plus.


VIII. Modifier ou supprimer des données

Modifier :

UPDATE Eleves
SET age = 18
WHERE id_eleve = 1;

→ Met à jour l’âge de l’élève dont l’id est 1.

Supprimer :

DELETE FROM Eleves
WHERE id_eleve = 1;

→ Supprime l’élève avec l’id 1.


IX. Trier, limiter et filtrer

Trier (ORDER BY)

SELECT * FROM Eleves ORDER BY nom ASC;

→ Trie les élèves par nom (ordre alphabétique)

Limiter (LIMIT)

SELECT * FROM Eleves LIMIT 5;

→ Affiche les 5 premiers résultats.


X. Requêtes avec jointures

Pourquoi faire une jointure ?

Pour réunir des informations venant de plusieurs tables liées par une relation (clé étrangère ↔ clé primaire).

Exemple :

SELECT prenom, nom, nom_classe
FROM Eleves
JOIN Classes ON Eleves.id_classe = Classes.id_classe;

→ Cette requête affiche le prénom, le nom de l’élève, et le nom de sa classe.


XI. Fonctions d’agrégation

SQL propose des fonctions pour calculer des statistiques.

FonctionRôle
COUNT()Compte le nombre de lignes
AVG()Moyenne
SUM()Somme
MIN()Minimum
MAX()Maximum

Exemple :

SELECT COUNT(*) FROM Eleves WHERE age >= 18;

→ Nombre d’élèves majeurs.

SELECT AVG(age) FROM Eleves;

→ Âge moyen des élèves.


XII. Contraintes importantes

ContrainteDescription
PRIMARY KEYidentifie de façon unique chaque ligne
FOREIGN KEYrelie une table à une autre
NOT NULLinterdit que la valeur soit vide
UNIQUEimpose que chaque valeur soit différente
DEFAULTdonne une valeur par défaut

Exemple :

age INTEGER NOT NULL DEFAULT 16

→ Impossible de créer un élève sans âge, et s’il n’est pas précisé, il sera de 16 ans par défaut.


XIII. Cas typique au bac : base à deux tables

Tables :

Requêtes classiques à savoir faire :

  1. Afficher les élèves d’une classe spécifique
  1. Afficher le nombre d’élèves par classe
  1. Rechercher les élèves majeurs
  1. Requêtes avec jointure entre Eleves et Classes

XIV. Conseils pour réussir les exercices au bac