0% ont trouvé ce document utile (0 vote)
4 vues11 pages

Requetes SQL

Ce document présente un exposé complet sur les requêtes SQL, couvrant des concepts allant de l'introduction au SQL jusqu'aux requêtes avancées. Il aborde les différentes commandes SQL, la structure des bases de données, les jointures, les sous-requêtes, ainsi que les bonnes pratiques pour optimiser les performances. Des exemples pratiques illustrent chaque concept, rendant le document utile tant pour les débutants que pour les utilisateurs avancés.

Transféré par

djouakaarthur8
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues11 pages

Requetes SQL

Ce document présente un exposé complet sur les requêtes SQL, couvrant des concepts allant de l'introduction au SQL jusqu'aux requêtes avancées. Il aborde les différentes commandes SQL, la structure des bases de données, les jointures, les sous-requêtes, ainsi que les bonnes pratiques pour optimiser les performances. Des exemples pratiques illustrent chaque concept, rendant le document utile tant pour les débutants que pour les utilisateurs avancés.

Transféré par

djouakaarthur8
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

LES REQUÊTES

SQL
Exposé complet — Du débutant à l'avancé

SELECT INSERT UPDATE DELETE JOIN GROUP BY

Mai 2026
Les Requêtes SQL — Exposé complet Page 2

Sommaire
1. Introduction au SQL

2. Structure d'une base de données

3. La requête SELECT

4. Filtrage avec WHERE

5. Tri et limitation (ORDER BY, LIMIT)

6. Les fonctions d'agrégation

7. Les JOIN — Jointures

8. Sous-requêtes

9. Requêtes de modification (INSERT, UPDATE, DELETE)

10. Création de tables (DDL)

11. Index et performances

12. Conseils et bonnes pratiques

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 3

1. Introduction au SQL
Le SQL (Structured Query Language) est le langage standard utilisé pour communiquer avec les bases de
données relationnelles. Créé dans les années 1970 par IBM et normalisé par l'ANSI, il permet de stocker,
manipuler et récupérer des données de façon déclarative.

SQL se divise en plusieurs sous-langages :

DQL Data Query Language SELECT

DML Data Manipulation Language INSERT, UPDATE, DELETE

DDL Data Definition Language CREATE, ALTER, DROP

DCL Data Control Language GRANT, REVOKE

TCL Transaction Control Language COMMIT, ROLLBACK

2. Structure d'une base de données


Une base de données relationnelle est organisée en tables (aussi appelées relations). Chaque table est
composée de colonnes (attributs) et de lignes (enregistrements ou tuples).

Exemple : table employes

id nom departement salaire date_embauche

1 Alice Martin Informatique 52 000 € 2020-03-15

2 Bob Dupont Marketing 45 000 € 2019-07-01

3 Claire Morel Informatique 58 000 € 2018-01-20

4 David Roux Finance 61 000 € 2021-11-05

5 Emma Leroy Marketing 47 500 € 2022-04-18

3. La requête SELECT
La requête SELECT est la plus utilisée en SQL. Elle permet de lire et d'extraire des données depuis une
ou plusieurs tables.

Syntaxe générale
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition
ORDER BY colonne [ASC | DESC]
LIMIT n;

Structure de base d'une requête SELECT

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 4

Exemples pratiques
-- Sélectionner toutes les colonnes
SELECT * FROM employes;

-- Sélectionner des colonnes spécifiques


SELECT nom, salaire FROM employes;

-- Alias de colonnes
SELECT nom AS 'Nom complet', salaire AS 'Rémunération'
FROM employes;

-- Valeurs distinctes
SELECT DISTINCT departement FROM employes;

Exemples de requêtes SELECT

■ Conseil
Évitez SELECT * en production : listez explicitement les colonnes nécessaires pour améliorer les
performances et la lisibilité.

4. Filtrage avec WHERE


La clause WHERE filtre les lignes retournées selon une ou plusieurs conditions. Les opérateurs
disponibles sont nombreux :

Opérateur Description Exemple

= Égalité salaire = 52000

<>, != Différence departement != 'Finance'

<, >, <=, >= Comparaison salaire >= 50000

BETWEEN Intervalle inclusif salaire BETWEEN 40000 AND 60000

IN Liste de valeurs departement IN ('IT','RH')

LIKE Motif textuel nom LIKE 'A%'

IS NULL Valeur nulle manager IS NULL

AND / OR Combinaison logique ... AND ... OR ...

NOT Négation NOT (salaire > 60000)

-- Employés du département Informatique avec salaire > 50 000


SELECT nom, salaire
FROM employes
WHERE departement = 'Informatique'
AND salaire > 50000;

-- Noms commençant par 'A' ou 'C'

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 5

SELECT nom FROM employes


WHERE nom LIKE 'A%' OR nom LIKE 'C%';

-- Salaires dans un intervalle


SELECT nom, salaire FROM employes
WHERE salaire BETWEEN 45000 AND 60000;

Exemples de filtrage WHERE

5. Tri et limitation
ORDER BY trie les résultats selon une ou plusieurs colonnes. LIMIT restreint le nombre de lignes
retournées (utile pour la pagination).

-- Trier par salaire décroissant


SELECT nom, salaire FROM employes
ORDER BY salaire DESC;

-- Multi-critères : département ASC, salaire DESC


SELECT nom, departement, salaire FROM employes
ORDER BY departement ASC, salaire DESC;

-- Les 3 mieux payés


SELECT nom, salaire FROM employes
ORDER BY salaire DESC
LIMIT 3;

-- Pagination : page 2 (enregistrements 6 à 10)


SELECT nom FROM employes
ORDER BY id
LIMIT 5 OFFSET 5;

Tri et pagination

6. Fonctions d'agrégation et GROUP BY


Les fonctions d'agrégation calculent une valeur unique à partir d'un ensemble de lignes. Elles s'utilisent
souvent avec GROUP BY pour regrouper les données, et HAVING pour filtrer les groupes.

Fonction Description

COUNT(*) Nombre total de lignes

COUNT(col) Lignes dont col n'est pas NULL

SUM(col) Somme des valeurs

AVG(col) Moyenne des valeurs

MIN(col) Valeur minimale

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 6

MAX(col) Valeur maximale

-- Nombre total d'employés


SELECT COUNT(*) AS total FROM employes;

-- Salaire moyen par département


SELECT departement,
COUNT(*) AS nb_employes,
AVG(salaire) AS salaire_moyen,
MAX(salaire) AS salaire_max
FROM employes
GROUP BY departement;

-- Départements avec salaire moyen > 50 000


SELECT departement, AVG(salaire) AS moy
FROM employes
GROUP BY departement
HAVING AVG(salaire) > 50000
ORDER BY moy DESC;

Fonctions d'agrégation et GROUP BY / HAVING

■■ Attention — WHERE vs HAVING


WHERE filtre les lignes AVANT le regroupement. HAVING filtre les groupes APRÈS le regroupement. On
ne peut pas utiliser une fonction d'agrégation dans WHERE.

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 7

7. Les JOIN — Jointures


Les jointures permettent de combiner des données provenant de plusieurs tables en les reliant via des
colonnes communes (généralement des clés étrangères).

Type Description

INNER JOIN Retourne uniquement les lignes correspondantes dans les deux tables

LEFT JOIN Toutes les lignes de la table gauche + correspondances à droite (NULL sinon)

RIGHT JOIN Toutes les lignes de la table droite + correspondances à gauche (NULL sinon)

FULL JOIN Toutes les lignes des deux tables (NULL où il n'y a pas de correspondance)

CROSS JOIN Produit cartésien : toutes les combinaisons possibles

-- Tables utilisées : employes et departements


-- departements : id, nom_dept, budget

-- INNER JOIN : employés avec leur département


SELECT [Link], d.nom_dept, [Link]
FROM employes e
INNER JOIN departements d ON e.departement_id = [Link];

-- LEFT JOIN : tous les employés, même sans département


SELECT [Link], d.nom_dept
FROM employes e
LEFT JOIN departements d ON e.departement_id = [Link];

-- Jointure multiple (3 tables)


SELECT [Link], d.nom_dept, [Link] AS projet
FROM employes e
INNER JOIN departements d ON e.departement_id = [Link]
INNER JOIN projets p ON p.responsable_id = [Link];

Exemples de jointures

8. Sous-requêtes (Subqueries)
Une sous-requête est une requête imbriquée dans une autre. Elle peut apparaître dans SELECT, FROM,
WHERE ou HAVING.

-- WHERE : employés gagnant plus que la moyenne


SELECT nom, salaire
FROM employes
WHERE salaire > (SELECT AVG(salaire) FROM employes);

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 8

-- IN : employés dans des départements avec budget > 100 000


SELECT nom FROM employes
WHERE departement_id IN (
SELECT id FROM departements WHERE budget > 100000
);

-- EXISTS : vérifier l'existence


SELECT nom FROM employes e
WHERE EXISTS (
SELECT 1 FROM projets p WHERE p.responsable_id = [Link]
);

-- Sous-requête dans FROM (table dérivée)


SELECT dept, moy_salaire
FROM (SELECT departement AS dept, AVG(salaire) AS moy_salaire
FROM employes GROUP BY departement) AS stats
WHERE moy_salaire > 50000;

Exemples de sous-requêtes

9. Requêtes de modification
Le DML (Data Manipulation Language) permet d'insérer, modifier et supprimer des données.

INSERT — Insertion
-- Insérer une ligne
INSERT INTO employes (nom, departement, salaire, date_embauche)
VALUES ('Sophie Bernard', 'Informatique', 55000, '2024-09-01');

-- Insérer plusieurs lignes


INSERT INTO employes (nom, departement, salaire)
VALUES ('Paul Girard', 'RH', 42000),
('Lucie Blanc', 'Finance', 59000),
('Marc Noir', 'Marketing',48000);

-- Insérer depuis une autre table


INSERT INTO employes_archive
SELECT * FROM employes WHERE date_embauche < '2020-01-01';

UPDATE — Mise à jour


-- Augmenter le salaire d'un employé
UPDATE employes
SET salaire = 57000

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 9

WHERE nom = 'Alice Martin';

-- Augmentation générale de 5% pour l'Informatique


UPDATE employes
SET salaire = salaire * 1.05
WHERE departement = 'Informatique';

DELETE — Suppression
-- Supprimer un enregistrement
DELETE FROM employes WHERE id = 5;

-- Supprimer selon une condition


DELETE FROM employes
WHERE date_embauche < '2018-01-01'
AND salaire < 40000;

-- Vider une table (TRUNCATE est plus rapide)


TRUNCATE TABLE employes_archive;

■■ Danger
Toujours inclure une clause WHERE dans UPDATE et DELETE. Sans WHERE, TOUTES les lignes de la
table sont modifiées ou supprimées ! Testez d'abord avec SELECT pour vérifier les enregistrements
ciblés.

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 10

10. Création de tables (DDL)


-- Créer une table avec contraintes
CREATE TABLE employes (
id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(100) NOT NULL,
email VARCHAR(200) UNIQUE,
departement VARCHAR(50),
salaire DECIMAL(10,2) DEFAULT 0.00,
date_embauche DATE,
manager_id INT,
FOREIGN KEY (manager_id) REFERENCES employes(id)
);

-- Modifier une table


ALTER TABLE employes ADD COLUMN telephone VARCHAR(20);
ALTER TABLE employes MODIFY salaire DECIMAL(12,2);
ALTER TABLE employes DROP COLUMN telephone;

-- Supprimer une table


DROP TABLE IF EXISTS employes_archive;

Définition de tables avec CREATE TABLE

11. Index et performances


Un index est une structure de données qui accélère les requêtes de lecture. Il est indispensable sur les
colonnes fréquemment utilisées dans WHERE, JOIN ou ORDER BY.

-- Créer un index simple


CREATE INDEX idx_departement ON employes(departement);

-- Index composite (plusieurs colonnes)


CREATE INDEX idx_dept_sal ON employes(departement, salaire);

-- Index unique
CREATE UNIQUE INDEX idx_email ON employes(email);

-- Supprimer un index
DROP INDEX idx_departement ON employes;

-- Analyser une requête


EXPLAIN SELECT * FROM employes WHERE departement = 'Finance';

Gestion des index

12. Bonnes pratiques

© 2026 — Document pédagogique SQL


Les Requêtes SQL — Exposé complet Page 11

■ Nommer clairement tables et colonnes (snake_case recommandé)

■ Lister explicitement les colonnes dans SELECT (éviter *)

■ Utiliser des alias lisibles (AS) pour les colonnes calculées

■ Toujours spécifier WHERE dans UPDATE et DELETE

■ Indenter et formater les requêtes longues pour la lisibilité

■ Utiliser des transactions (BEGIN/COMMIT) pour les opérations critiques

■ Créer des index sur les colonnes de jointures et de filtres fréquents

■ Utiliser EXPLAIN pour analyser et optimiser les requêtes lentes

■ Paramétrer les requêtes (requêtes préparées) pour éviter les injections SQL

■ Ne pas stocker des données multivaluées dans une seule colonne

■ Ne pas utiliser de noms réservés SQL comme noms de colonnes

■ Ne pas négliger les index sur les clés étrangères

■ Injection SQL — Sécurité critique


Ne jamais construire des requêtes SQL en concaténant directement des données utilisateur. Utilisez
toujours des requêtes paramétrées ou des ORM pour prévenir les attaques par injection SQL.

Ce document couvre les fondamentaux des requêtes SQL. Pour aller plus loin, explorez les CTE
(Common Table Expressions), les fonctions de fenêtrage (WINDOW FUNCTIONS), les procédures
stockées et les triggers.

© 2026 — Document pédagogique SQL

Vous aimerez peut-être aussi