Najah.
Mon plan de révision⚡ Défi flash

Informatique · Classes prépa (CPGE) — 1ère année — ECS

Bases de données relationnelles et langage SQL

Le cours expliqué simplement, les questions que tous les élèves se posent et des exercices type examen national. Programme marocain, gratuit.

📘 Fiche de cours

L'essentiel du cours

Une base de données relationnelle est un ensemble de données organisées en tables. Chaque table possède des colonnes (attributs) et des lignes (tuples). La clé primaire ($PK$) identifie de manière unique chaque tuple. La clé étrangère ($FK$) assure l'intégrité référentielle entre deux tables. Le langage SQL (Structured Query Language) permet de manipuler ces données via des requêtes : SELECT, FROM, WHERE, JOIN, INSERT, UPDATE, DELETE.

Méthodes à maîtriser

  1. Lecture de schéma : Identifier les clés primaires et étrangères.
  2. Requêtes de sélection : Utiliser SELECT attributs FROM table WHERE condition.
  3. Jointures : Utiliser INNER JOIN pour lier deux tables sur une colonne commune.
  4. Agrégats : Utiliser COUNT(), SUM(), AVG() avec GROUP BY.

Exemples corrigés

  • Sélection simple : SELECT nom FROM Etudiants WHERE note > 10;
  • Jointure : SELECT E.nom, C.libelle FROM Etudiants E JOIN Cours C ON E.id_cours = C.id;

Erreurs fréquentes

  • Oublier la clause ON lors d'une jointure.
  • Confondre WHERE (filtre sur les lignes) et HAVING (filtre sur les groupes).
  • Ne pas respecter l'ordre des clauses SQL (SELECT -> FROM -> JOIN -> WHERE -> GROUP BY).

🌉 Jisr : les mots du chapitre FR ⇄ AR

Tu as appris les sciences en arabe ? Touche un mot pour voir sa traduction et une explication en darija.

La question que tu n'oses pas poser en classe ? Pose-la à UstadZéro jugement, même en darija, même à minuit. Il t'explique pas à pas et corrige ta démarche. Gratuit.

Défi flash : 4 questions

Sans compte

🎯 Bases de données relationnelles et langage SQL

1/4

Quelle clause permet de filtrer les résultats après un regroupement ?

❓ Questions fréquentes

C'est quoi la différence entre une clé primaire et une clé étrangère ?
  1. La clé primaire identifie de manière unique chaque ligne d'une table (ex: id_etudiant). Elle ne peut pas être nulle.
  2. La clé étrangère est un champ qui fait référence à la clé primaire d'une autre table, permettant de créer un lien entre elles.

💡 À retenir : La clé primaire est l'identité unique, la clé étrangère est le pont vers une autre table.

Kifach n9der nkhrej ghir les noms li 3ndhom note ktar mn 15 ?
  1. Tu utilises la clause SELECT pour choisir la colonne nom.
  2. Tu précises la table avec FROM.
  3. Tu ajoutes WHERE note > 15 pour filtrer les résultats. Exemple : SELECT nom FROM Etudiants WHERE note > 15;

💡 À retenir : WHERE est ton outil principal pour filtrer les lignes selon une condition.

Chno hiya l'utilité dial JOIN f SQL ?

JOIN permet de combiner des données provenant de deux tables différentes qui partagent une colonne commune (généralement une clé primaire et une clé étrangère). Sans jointure, tu ne pourrais pas afficher des informations liées (ex: le nom de l'étudiant et le nom de sa filière stockés dans deux tables distinctes).

💡 À retenir : JOIN sert à "recoller" les morceaux d'informations dispersés dans plusieurs tables.

Est-ce que je peux utiliser GROUP BY sans fonction d'agrégation ?

Techniquement, SQL peut l'accepter dans certains SGBD, mais c'est une erreur de logique. GROUP BY est conçu pour être utilisé avec des fonctions comme SUM(), COUNT(), AVG() ou MAX(). Si tu veux juste des valeurs uniques, utilise DISTINCT.

💡 À retenir : GROUP BY = Regrouper pour calculer une statistique sur chaque groupe.

Kifach n7seb ch7al mn etudiant kayn f kol filière ?

Tu dois regrouper les données par filière et compter les entrées. Requête : SELECT filiere, COUNT(*) FROM Etudiants GROUP BY filiere;

💡 À retenir : COUNT(*) compte les lignes, GROUP BY segmente le résultat par catégorie.

C'est quoi l'intégrité référentielle ?

C'est une règle qui garantit que chaque clé étrangère dans une table pointe vers une clé primaire existante dans une autre table. Cela évite d'avoir des "orphelins" (ex: un étudiant inscrit dans une filière qui n'existe pas).

💡 À retenir : L'intégrité garantit la cohérence et la fiabilité de la base.

Pourquoi on utilise DISTINCT ?

On l'utilise pour éliminer les doublons dans les résultats d'une requête. Si plusieurs étudiants ont la même ville, SELECT ville FROM Etudiants affichera la ville autant de fois qu'il y a d'étudiants. SELECT DISTINCT ville FROM Etudiants ne l'affichera qu'une seule fois.

💡 À retenir : DISTINCT = "Ne montre pas les répétitions".

Est-ce que le langage SQL est sensible à la casse (majuscules/minuscules) ?

Les mots-clés SQL (SELECT, FROM, WHERE) ne sont pas sensibles à la casse, mais les données stockées dans la base le sont souvent (selon la configuration du serveur). Par convention, on écrit les mots-clés en majuscules pour la lisibilité.

💡 À retenir : Écris tes mots-clés en majuscules pour être propre et professionnel.

C'est quoi la différence entre DELETE et DROP ?
  1. DELETE supprime des lignes spécifiques dans une table (les données).
  2. DROP supprime la table entière (la structure et les données).

💡 À retenir : DELETE vide le contenu, DROP détruit le contenant.

Kifach nkhrej les étudiants li smithom "Ahmed" ?

Tu utilises la clause WHERE avec l'opérateur =. Requête : SELECT * FROM Etudiants WHERE prenom = 'Ahmed';

💡 À retenir : Les chaînes de caractères doivent toujours être entre guillemets simples ' '.

Pourquoi on ne met pas WHERE après GROUP BY ?

Parce que WHERE filtre les lignes avant le regroupement. Si tu veux filtrer après le regroupement (par exemple, afficher seulement les filières ayant plus de 10 étudiants), tu dois utiliser HAVING.

💡 À retenir : WHERE pour les lignes, HAVING pour les groupes.

Est-ce que je peux trier les résultats ?

Oui, avec la clause ORDER BY. Tu peux ajouter ASC (croissant, par défaut) ou DESC (décroissant). Exemple : SELECT * FROM Etudiants ORDER BY note DESC;

💡 À retenir : ORDER BY se place toujours à la toute fin de la requête.

✍️ Exercices type examen national

Exercice 1

Soit la base de données suivante : Etudiants(id_etudiant, nom, id_filiere) Filieres(id_filiere, nom_filiere)

  1. Écrire la requête SQL pour afficher le nom de l'étudiant et le nom de sa filière.
  2. Écrire la requête pour compter le nombre d'étudiants par filière.
Voir la correction détaillée : inscription gratuite

Exercice 2

Soit la table Produits(id, nom, prix, stock).

  1. Augmenter le prix de tous les produits de 10%.
  2. Supprimer les produits dont le stock est à 0.
Voir la correction détaillée : inscription gratuite

Exercice 3

Soit la table Employes(id, nom, salaire, departement). Écrire une requête pour afficher les départements dont la moyenne des salaires est supérieure à 8000 DH, triés par ordre décroissant de moyenne.

Voir la correction détaillée : inscription gratuite

Un prof de Informatique pour aller plus loin

Les cours du soir avec des profs vérifiés arrivent : inscris-toi pour être prévenu(e) en premier.

Être prévenu(e) gratuitement

Autres chapitres de Informatique