Numérique et Sciences Informatiques > Bases de Données > Langage SQL (Structured Query Language) > Requêtes SELECT (sélection, projection, jointures, conditions WHERE)

Introduction aux Requêtes SELECT en SQL

Apprenez à maîtriser les requêtes SELECT en SQL pour extraire et manipuler des données de bases de données. Ce guide couvre la sélection, la projection, les jointures et les conditions WHERE avec des exemples concrets adaptés au niveau lycée.

Introduction aux Requêtes SELECT

Les requêtes SELECT sont l'épine dorsale de toute interaction avec une base de données SQL. Elles permettent d'extraire des informations spécifiques à partir d'une ou plusieurs tables. Comprendre leur fonctionnement est essentiel pour toute personne travaillant avec des données. En termes simples, SELECT, c'est comme poser une question précise à votre base de données et obtenir une réponse ciblée.

La structure de base d'une requête SELECT est la suivante:

SELECT colonne1, colonne2 FROM nom_de_la_table WHERE condition;

Où:
SELECT indique les colonnes à extraire.
FROM spécifie la table d'où proviennent les données.
WHERE (optionnel) filtre les résultats en fonction d'une condition.

Sélection de Colonnes (Projection)

La projection consiste à choisir quelles colonnes afficher dans le résultat de la requête. Pour sélectionner toutes les colonnes d'une table, on utilise l'astérisque (*). Pour sélectionner des colonnes spécifiques, on liste les noms des colonnes séparés par des virgules.

Exemple: Supposons que vous ayez une table nommée 'Etudiants' avec les colonnes 'ID', 'Nom', 'Prenom', 'Age'.

- Pour sélectionner toutes les colonnes : SELECT * FROM Etudiants;
- Pour sélectionner seulement le nom et le prénom : SELECT Nom, Prenom FROM Etudiants;

Il est aussi possible d'utiliser des alias (noms temporaires) pour renommer les colonnes affichées : SELECT Nom AS NomEtudiant, Prenom AS PrenomEtudiant FROM Etudiants;

Filtrage avec la Clause WHERE (Sélection)

La clause WHERE permet de filtrer les lignes (enregistrements) retournées par la requête. Elle applique une condition qui doit être vraie pour qu'une ligne soit incluse dans le résultat. Vous pouvez utiliser des opérateurs de comparaison (=, >, <, >=, <=, !=) et des opérateurs logiques (AND, OR, NOT) pour construire des conditions complexes.

Exemple:

- Pour sélectionner tous les étudiants dont l'âge est supérieur à 18 ans : SELECT * FROM Etudiants WHERE Age > 18;
- Pour sélectionner les étudiants dont le nom est 'Dupont' et le prénom est 'Jean' : SELECT * FROM Etudiants WHERE Nom = 'Dupont' AND Prenom = 'Jean';
- Pour sélectionner les étudiants dont le nom est 'Dupont' ou l'âge est inférieur à 17 ans: SELECT * FROM Etudiants WHERE Nom = 'Dupont' OR Age < 17;

La clause WHERE est extrêmement puissante pour cibler précisément les données que vous recherchez.

Jointures (JOIN)

Les jointures permettent de combiner des données provenant de plusieurs tables en se basant sur une colonne commune. Il existe différents types de jointures, mais la plus courante est la jointure interne (INNER JOIN), qui retourne uniquement les lignes pour lesquelles la condition de jointure est vraie dans les deux tables.

Exemple: Supposons que vous ayez deux tables : 'Etudiants' (ID_Etudiant, Nom, Prenom) et 'Notes' (ID_Note, ID_Etudiant, Matiere, Note). Pour obtenir le nom et la note de chaque étudiant, vous pouvez utiliser une jointure:

SELECT Etudiants.Nom, Etudiants.Prenom, Notes.Matiere, Notes.Note FROM Etudiants INNER JOIN Notes ON Etudiants.ID_Etudiant = Notes.ID_Etudiant;

Dans cet exemple:
INNER JOIN Notes ON Etudiants.ID_Etudiant = Notes.ID_Etudiant spécifie que l'on combine les tables 'Etudiants' et 'Notes' lorsque les valeurs de la colonne 'ID_Etudiant' sont égales dans les deux tables.

Il existe d'autres types de jointures (LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN) qui permettent d'inclure des lignes même si la condition de jointure n'est pas vraie dans toutes les tables. Ces jointures sont plus avancées et permettent de gérer des cas de figure plus complexes.

Combinaison de Conditions WHERE et de Jointures

Vous pouvez combiner les clauses WHERE et les jointures pour filtrer les résultats après avoir combiné les tables. Cela permet de créer des requêtes très spécifiques et puissantes.

Exemple: Pour obtenir le nom et la note de chaque étudiant en Mathématiques dont la note est supérieure à 15:

SELECT Etudiants.Nom, Etudiants.Prenom, Notes.Note FROM Etudiants INNER JOIN Notes ON Etudiants.ID_Etudiant = Notes.ID_Etudiant WHERE Notes.Matiere = 'Mathématiques' AND Notes.Note > 15;

Cet exemple combine une jointure (pour combiner les tables 'Etudiants' et 'Notes') avec une clause WHERE (pour filtrer les résultats en fonction de la matière et de la note). C'est un exemple concret de la puissance de SQL.

Clauses ORDER BY et LIMIT

La clause ORDER BY permet de trier les résultats d'une requête selon une ou plusieurs colonnes, par ordre croissant (ASC) ou décroissant (DESC). La clause LIMIT permet de limiter le nombre de lignes retournées.

Exemple:

- Pour sélectionner les 5 étudiants les plus jeunes : SELECT Nom, Prenom, Age FROM Etudiants ORDER BY Age ASC LIMIT 5;
- Pour sélectionner les étudiants par ordre alphabétique inverse de nom : SELECT Nom, Prenom FROM Etudiants ORDER BY Nom DESC;

Ces clauses sont très utiles pour organiser et paginer les résultats, surtout lorsque vous travaillez avec de grandes quantités de données.

Ce qu'il faut retenir

  • Les requêtes SELECT permettent d'extraire des données de bases de données.
  • La clause FROM spécifie la table à partir de laquelle les données sont extraites.
  • La clause WHERE filtre les lignes en fonction d'une condition.
  • Les jointures (JOIN) combinent des données de plusieurs tables.
  • La clause ORDER BY trie les résultats.
  • La clause LIMIT limite le nombre de lignes retournées.

Maîtriser ces concepts est crucial pour interagir efficacement avec les bases de données SQL.

FAQ

  • Quelle est la différence entre SELECT * et SELECT colonne1, colonne2?

    SELECT * sélectionne toutes les colonnes de la table, tandis que SELECT colonne1, colonne2 sélectionne uniquement les colonnes spécifiées.
  • Comment combiner plusieurs conditions dans la clause WHERE?

    Utilisez les opérateurs logiques AND (pour que toutes les conditions soient vraies) et OR (pour qu'au moins une condition soit vraie).
  • Pourquoi utiliser des jointures?

    Les jointures permettent de combiner des données provenant de plusieurs tables liées entre elles, ce qui est essentiel lorsque les informations sont réparties dans différentes tables.