Numérique et Sciences Informatiques > Préparation aux Épreuves du Baccalauréat NSI > Révisions Thématiques > Bases de données

Révision Bases de Données : SQL - Interrogation et Manipulation

Apprenez à interroger et manipuler des bases de données avec SQL. Ce guide couvre les commandes SELECT, INSERT, UPDATE, DELETE avec des exemples et des exercices pour le Bac NSI.

Introduction au SQL

SQL (Structured Query Language) est un langage standardisé utilisé pour communiquer avec les systèmes de gestion de bases de données relationnelles (SGBDR). Il permet de définir, manipuler et interroger les données stockées dans une base de données. SQL est un outil essentiel pour les développeurs, les administrateurs de bases de données et les analystes de données. Sans SQL, il serait difficile d'extraire des informations utiles, de mettre à jour les données ou de maintenir l'intégrité d'une base de données. SQL est un langage déclaratif, ce qui signifie que vous décrivez ce que vous voulez obtenir, plutôt que de spécifier comment l'obtenir. Le SGBDR se charge ensuite d'optimiser l'exécution de la requête.

Les principales fonctions de SQL sont :

  • Définition des données (DDL) : Créer, modifier et supprimer des tables, des index et d'autres objets de la base de données.
  • Manipulation des données (DML) : Insérer, mettre à jour et supprimer des données dans les tables.
  • Interrogation des données (DQL) : Extraire des données des tables en utilisant des requêtes complexes.
  • Contrôle des données (DCL) : Gérer les droits d'accès et les transactions.

La commande SELECT

La commande SELECT est utilisée pour interroger les données d'une ou plusieurs tables. Elle permet de spécifier les colonnes à extraire, les conditions de filtrage et les critères de tri. La syntaxe de base de la commande SELECT est la suivante :

SELECT colonne1, colonne2, ... FROM table WHERE condition ORDER BY colonne;

  • SELECT colonne1, colonne2, ... spécifie les colonnes à extraire. Vous pouvez utiliser SELECT * pour extraire toutes les colonnes.
  • FROM table spécifie la table à partir de laquelle extraire les données.
  • WHERE condition spécifie une condition de filtrage pour ne sélectionner que les lignes qui satisfont cette condition.
  • ORDER BY colonne spécifie une colonne pour trier les résultats. Vous pouvez utiliser ASC pour un tri ascendant (par défaut) ou DESC pour un tri descendant.

Exemples :

  • Extraire tous les noms et prénoms des étudiants de la table 'Etudiants':

    SELECT Nom, Prénom FROM Etudiants;
  • Extraire tous les étudiants ayant plus de 20 ans :

    SELECT * FROM Etudiants WHERE Age > 20;
  • Extraire tous les étudiants et les trier par ordre alphabétique de nom :

    SELECT * FROM Etudiants ORDER BY Nom ASC;

Les commandes INSERT, UPDATE et DELETE

Ces commandes permettent de modifier les données stockées dans une base de données.

  • INSERT : La commande INSERT permet d'insérer de nouvelles lignes dans une table. La syntaxe de base est la suivante:

    INSERT INTO table (colonne1, colonne2, ...) VALUES (valeur1, valeur2, ...);

    Exemple: Insérer un nouvel étudiant dans la table 'Etudiants':

    INSERT INTO Etudiants (NuméroEtudiant, Nom, Prénom, DateNaissance) VALUES ('12345', 'Dupont', 'Jean', '2002-05-15');
  • UPDATE : La commande UPDATE permet de modifier les valeurs des colonnes pour les lignes existantes dans une table. La syntaxe de base est la suivante:

    UPDATE table SET colonne1 = valeur1, colonne2 = valeur2, ... WHERE condition;

    Il est crucial d'utiliser la clause WHERE pour spécifier quelles lignes doivent être mises à jour. Sinon, toutes les lignes de la table seront modifiées!

    Exemple: Mettre à jour l'âge d'un étudiant dans la table 'Etudiants':

    UPDATE Etudiants SET Age = 21 WHERE NuméroEtudiant = '12345';
  • DELETE : La commande DELETE permet de supprimer des lignes d'une table. La syntaxe de base est la suivante:

    DELETE FROM table WHERE condition;

    Comme pour la commande UPDATE, il est crucial d'utiliser la clause WHERE pour spécifier quelles lignes doivent être supprimées. Sinon, toutes les lignes de la table seront supprimées!

    Exemple: Supprimer un étudiant de la table 'Etudiants':

    DELETE FROM Etudiants WHERE NuméroEtudiant = '12345';

Jointures en SQL

En SQL, les jointures permettent de combiner les données de deux ou plusieurs tables en fonction d'une condition de liaison entre les colonnes. Il existe plusieurs types de jointures :

  • INNER JOIN : Retourne uniquement les lignes qui ont une correspondance dans les deux tables.
  • LEFT JOIN (ou LEFT OUTER JOIN) : Retourne toutes les lignes de la table de gauche (avant le LEFT JOIN) et les lignes correspondantes de la table de droite. Si aucune correspondance n'est trouvée dans la table de droite, les colonnes de cette table seront remplies avec NULL.
  • RIGHT JOIN (ou RIGHT OUTER JOIN) : Retourne toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche. Si aucune correspondance n'est trouvée dans la table de gauche, les colonnes de cette table seront remplies avec NULL.
  • FULL OUTER JOIN : Retourne toutes les lignes des deux tables. Si aucune correspondance n'est trouvée, les colonnes manquantes seront remplies avec NULL.

La syntaxe générale pour une jointure est la suivante:

SELECT colonnes FROM table1 JOIN table2 ON table1.colonne = table2.colonne;

Exemple (INNER JOIN) :

Afficher les noms des étudiants et les noms des cours auxquels ils sont inscrits :

SELECT Etudiants.Nom, Cours.NomCours FROM Etudiants INNER JOIN Inscriptions ON Etudiants.NuméroEtudiant = Inscriptions.NuméroEtudiant INNER JOIN Cours ON Inscriptions.CodeCours = Cours.CodeCours;

Ce qu'il faut retenir

  • SQL : Langage standard pour interagir avec les bases de données relationnelles.
  • SELECT : Interroger des données.
  • INSERT : Ajouter de nouvelles données.
  • UPDATE : Modifier des données existantes.
  • DELETE : Supprimer des données.
  • Jointures : Combiner des données de plusieurs tables (INNER, LEFT, RIGHT, FULL OUTER).

FAQ

  • Quelle est la différence entre WHERE et HAVING ?

    WHERE est utilisé pour filtrer les lignes avant le regroupement (GROUP BY), tandis que HAVING est utilisé pour filtrer les groupes après le regroupement.
  • Comment éviter la suppression accidentelle de toutes les données d'une table ?

    Toujours utiliser la clause WHERE avec les commandes UPDATE et DELETE pour spécifier les lignes à modifier ou à supprimer.
  • Quelle est l'utilité de GROUP BY?

    La clause GROUP BY est utilisée pour regrouper les lignes qui ont la même valeur dans une ou plusieurs colonnes. Elle est souvent utilisée en conjonction avec des fonctions d'agrégation comme COUNT, SUM, AVG, MIN, et MAX pour calculer des statistiques pour chaque groupe.