SQL - Structured Query Language



Introduction à SQL

SQL (Structured Query Language) est un langage de programmation standard utilisé pour gérer et manipuler des bases de données relationnelles. Il permet de créer, modifier, interroger et manipuler des données stockées dans des bases de données. SQL est le langage principal utilisé pour interagir avec des systèmes de gestion de bases de données relationnelles (SGBDR) comme MySQL, PostgreSQL, SQLite, Oracle et Microsoft SQL Server.

Les bases de données relationnelles organisent les données sous forme de tables constituées de colonnes et de lignes (ou enregistrements). SQL permet d'effectuer des opérations telles que la récupération, l'insertion, la mise à jour et la suppression de données.


Structure de SQL

SQL repose sur plusieurs types de requêtes qui sont classés en différentes catégories selon leur fonction :

2.1. Types de requêtes SQL

  • Requêtes de définition de données (DDL - Data Definition Language) : Ces commandes permettent de définir et de modifier la structure des objets dans la base de données (tables, vues, index, etc.).
    • CREATE: Crée un objet dans la base de données.
    • ALTER: Modifie un objet existant dans la base de données.
    • DROP: Supprime un objet de la base de données.
  • Requêtes de manipulation des données (DML - Data Manipulation Language) : Ces commandes permettent de manipuler les données dans les tables.
    • SELECT: Récupère des données à partir de la base de données.
    • INSERT: Insère des données dans une table.
    • UPDATE: Met à jour des données existantes dans une table.
    • DELETE: Supprime des données dans une table.
  • Requêtes de contrôle de données (DCL - Data Control Language) : Ces commandes permettent de gérer l'accès à la base de données.
    • GRANT: Attribue des droits d'accès à un utilisateur.
    • REVOKE: Retire des droits d'accès à un utilisateur.
  • Requêtes de gestion de la transaction (TCL - Transaction Control Language) : Ces commandes sont utilisées pour gérer les transactions dans la base de données.
    • COMMIT: Valide les modifications effectuées dans une transaction.
    • ROLLBACK: Annule les modifications effectuées dans une transaction.
    • SAVEPOINT: Crée un point de restauration dans une transaction.

Les Commandes SQL de Base

3.1. Commande SELECT

La commande SELECT est utilisée pour interroger la base de données et récupérer des informations. La syntaxe de base est la suivante :

SELECT colonne1, colonne2, ...
FROM table
WHERE condition;

Exemple :
SELECT nom, prenom
FROM utilisateurs
WHERE age > 25;
Cela récupère les noms et prénoms des utilisateurs ayant plus de 25 ans.

Sélectionner toutes les colonnes :
SELECT *
FROM utilisateurs;
Cela récupère toutes les colonnes de la table utilisateurs.

3.2. Filtrage avec WHERE

La clause WHERE permet de spécifier des conditions pour affiner les résultats.

Exemple :
SELECT *
FROM produits
WHERE prix > 100;
Cette requête renvoie tous les produits dont le prix est supérieur à 100.

3.3. Tri des résultats avec ORDER BY

La clause ORDER BY permet de trier les résultats d'une requête par ordre croissant ou décroissant.

Exemple :
SELECT nom, prix
FROM produits
ORDER BY prix DESC;
Cela trie les produits par prix dans l'ordre décroissant.

3.4. Limiter les résultats avec LIMIT

La clause LIMIT permet de restreindre le nombre de résultats retournés par la requête.

Exemple :
SELECT *
FROM utilisateurs
LIMIT 10;
Cela renvoie les 10 premiers utilisateurs dans la table utilisateurs.


Manipulation des Données

4.1. Insérer des données avec INSERT

La commande INSERT permet d'ajouter de nouvelles lignes dans une table.

Exemple :
INSERT INTO utilisateurs (nom, prenom, age)
VALUES ('Dupont', 'Jean', 30);
Cela insère un nouvel utilisateur dans la table utilisateurs.

4.2. Mettre à jour des données avec UPDATE

La commande UPDATE permet de modifier les données existantes dans une table.

Exemple :
UPDATE utilisateurs
SET age = 31
WHERE nom = 'Dupont' AND prenom = 'Jean';
Cela met à jour l'âge de l'utilisateur 'Jean Dupont' à 31 ans.

4.3. Supprimer des données avec DELETE

La commande DELETE permet de supprimer des lignes dans une table.

Exemple :
DELETE FROM utilisateurs
WHERE age < 18;
Cela supprime tous les utilisateurs ayant un âge inférieur à 18 ans.


Relations entre les tables et jointures

5.1. Relations entre les tables

Les bases de données relationnelles permettent de définir des relations entre les tables via des clés primaires et clés étrangères. Une clé primaire est un identifiant unique pour chaque ligne dans une table, tandis qu'une clé étrangère établit une relation entre deux tables.

Exemple de relation :
Table utilisateurs :
id_utilisateur nom prenom
1 Dupont Jean
2 Martin Marie

Table commandes :
id_commande id_utilisateur date_commande
101 1 2022-05-01
102 2 2022-05-02
La colonne id_utilisateur dans la table commandes est une clé étrangère qui fait référence à la clé primaire id_utilisateur dans la table utilisateurs.

5.2. Jointures (JOIN)

Les jointures permettent de combiner les données de plusieurs tables en une seule requête. Voici les types de jointures les plus courants :

  • INNER JOIN : Récupère uniquement les lignes qui ont des correspondances dans les deux tables.
  • LEFT JOIN (ou LEFT OUTER JOIN) : Récupère toutes les lignes de la table de gauche, même s'il n'y a pas de correspondance dans la table de droite.
  • RIGHT JOIN (ou RIGHT OUTER JOIN) : Récupère toutes les lignes de la table de droite, même s'il n'y a pas de correspondance dans la table de gauche.

Exemple d'INNER JOIN :
SELECT utilisateurs.nom, utilisateurs.prenom, commandes.date_commande
FROM utilisateurs
INNER JOIN commandes ON utilisateurs.id_utilisateur = commandes.id_utilisateur;
Cela renvoie les utilisateurs avec leurs commandes, mais uniquement pour ceux ayant effectué une commande.


Fonctions SQL

SQL dispose de plusieurs fonctions intégrées qui permettent de manipuler les données de manière plus avancée.

6.1. Fonctions d'agrégation

  • COUNT() : Compte le nombre de lignes.
  • SUM() : Calcule la somme d'une colonne numérique.
  • AVG() : Calcule la moyenne d'une colonne numérique.
  • MIN() et MAX() : Trouvent respectivement la valeur minimale et maximale.

Exemple :
SELECT COUNT(*) AS nombre_utilisateurs
FROM utilisateurs;
Cela renvoie le nombre total d'utilisateurs dans la table.

6.2. Fonctions de chaîne de caractères

  • CONCAT() : Concatène deux chaînes de caractères.
  • UPPER() et LOWER() : Convertissent une chaîne en majuscules ou en minuscules.
  • SUBSTRING() : Extrait une sous-chaîne d'une chaîne.

Exemple :
SELECT CONCAT(nom, ' ', prenom) AS nom_complet
FROM utilisateurs;
Cela renvoie le nom complet de chaque utilisateur.


Conclusion

SQL est un langage puissant et essentiel pour la gestion des bases de données relationnelles. Il permet aux utilisateurs de manipuler efficacement les données, de les interroger selon des critères spécifiques et de maintenir des relations entre les différentes entités stockées. Grâce à son utilisation généralisée et à sa flexibilité, SQL reste une compétence essentielle pour tout professionnel de la gestion de données.