Module 106

Interroger, traiter et assurer la maintenance des bases de données

Jour 4 - Commandes SQL

# Objectifs du jour

Objectifs du jour

  • Création du Mindmap

  • Correction de l'exercice 2.1

  • Commandes SELECT avec WHERE

  • Commandes SELECT avec opérateurs logiques

  • Combiner des enregistrements de plusieurs tables (JOIN)

  • Commandes pour données agrégées (GROUP BY et HAVING)

  • Fonctions d'agrégation comme COUNT, SUM, AVG, MIN, MAX, CONCAT, etc)

Ne pas oublier de démarrer Lanschool !

# Deux vérités, un mensonge

Deux vérités, un mensonge

INF1A

INF1B

  • Création du Mindmap
# Correction exercice

Correction de l'exercice 2.1

  • Voir le corrigé sur le Gitbook des consignes d'exercices

Commandes SQL

# Commandes SQL

Commandes SQL - Syntaxe générale

Attention à l'ordre des éléments :

SELECT 
    colonne1 AS alias1, 
    colonne2 AS alias2, 
    fonction_aggregation(colonne3) AS alias3, 
    CONCAT('Texte ', colonne4) AS alias4
FROM table1
INNER JOIN table2 ON table1.cle_etrangere = table2.cle_primaire
WHERE condition1 
    AND condition2 
    AND colonne5 BETWEEN valeur1 AND valeur2
    AND colonne6 IN (valeur3, valeur4, valeur5)
GROUP BY colonne1, colonne2
HAVING fonction_aggregation(colonne3) > valeur_seuil
ORDER BY colonne1 DESC, colonne2 ASC;

Commandes SQL

# Commandes SQL

Commandes SELECT avec ORDER BY

SELECT colonne1, colonne2, ...
FROM table
ORDER BY colonne1 [ASC|DESC], colonne2 [ASC|DESC], ...;
  • Trie les résultats selon une ou plusieurs colonnes

  • ASC (ascendant) par défaut, DESC pour descendant

  • Exemple :

SELECT nom, age
FROM clients
ORDER BY nom ASC, age DESC;

Commandes SQL

Commandes SELECT avec WHERE

# Commandes SQL

SELECT colonne1, colonne2, ...
FROM table
WHERE condition;
  • Permet de filtrer les résultats selon une condition

  • Opérateurs de comparaison (=, !=, <, >, <=, >=)

  • Exemple :

SELECT nom, age
FROM clients
WHERE age > 18;

Commandes SQL

Commandes SELECT avec opérateurs logiques

Opérateurs logiques principaux

  • AND : les deux conditions doivent être vraies

  • OR : au moins une condition doit être vraie

  • NOT : inverse la condition

Exemple

# Commandes SQL

SELECT nom, age, pays
FROM clients
WHERE age > 18 AND (pays = 'France' OR pays = 'Belgique');

Commandes SQL

Commandes SELECT avec filtres plus complexes

Opérateurs logiques principaux

 

  • LIKE

  • BETWEEN

  • IS NULL / IS NOT NULL

  • IN

# Commandes SQL

SELECT * FROM Employes
WHERE nom LIKE 'Du%';

Exemple LIKE

 

 

Résultat : Dupont, Durand, Dubois, Dufour

Commandes SQL

# Commandes SQL

SELECT * FROM Employes
WHERE age BETWEEN 30 AND 40;

Exemple BETWEEN

 

 

Résultat : Dupont (30), Dufour (35), Dubois (40)

SELECT * FROM Commandes
WHERE date_commande BETWEEN TO_DATE('2024-02-01','YYYY-MM-DD') AND TO_DATE('2024-03-15','YYYY-MM-DD');

Exemple BETWEEN avec dates

 

 

Résultat : Commande entre le 01.02.2024 et le 15.03.2024 (comprises)

Commandes SQL

# Commandes SQL

SELECT * FROM Employes
WHERE fk_departement IS NULL;

Exemple IS NULL

 

 

Résultat : Employés sans département assignés

SELECT * FROM Employes
WHERE fk_departement IS NOT NULL;

Exemple IS NOT NULL

 

 

Résultat : Employés avec un département assignés

Commandes SQL

# Commandes SQL

SELECT * FROM villes
WHERE nom_ville IN ('Lausanne', 'Genève');

Exemple IN

 

 

Résultat : Lausanne et Genêve uniquement

SELECT * FROM Employes
WHERE fk_ville IN (
	SELECT pk_ville_emp
    FROM villes
    WHERE canton_vil = 'JU'
);

Exemple IN avec sous-requête

 

 

 

 

Résultat : Employés avec un département assignés

Exercice 3.1

Exercices sur les requêtes SQL

Exercice de gestion des droits

# Commandes SQL

Commandes SQL

Combiner des enregistrements de plusieurs tables (JOIN)

Syntaxe de base

# Commandes SQL

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

Types de JOIN

  • INNER JOIN : lignes correspondantes dans les deux tables

  • LEFT JOIN : toutes les lignes de la table de gauche

  • RIGHT JOIN : toutes les lignes de la table de droite

  • FULL JOIN : toutes les lignes des deux tables

Exemple

SELECT *
FROM clients
INNER JOIN commandes
ON clients.pk_cli = commandes.fk_cli;

Commandes SQL

UNION et UNION ALL

UNION

  • Combine les résultats de deux requêtes

  • Élimine les doublons

UNION ALL

  • Combine les résultats sans éliminer les doublons

  • Plus rapide que UNION

Exemple

 

# Commandes SQL

SELECT nom, mail FROM clients
UNION
SELECT nom, mail FROM fournisseurs;

Commandes SQL

Commandes pour données agrégées (GROUP BY et HAVING)

GROUP BY

  • Regroupe les lignes ayant les mêmes valeurs

  • Souvent utilisé avec des fonctions d'agrégation

HAVING

  • Filtre les résultats de GROUP BY

  • S'utilise à la place de WHERE pour les groupes

Exemple

 

# Commandes SQL

SELECT pays, COUNT(*) as nombre_pays_clients
FROM clients
GROUP BY pays
HAVING COUNT(*) > 10;

Commandes SQL

Fonctions d'agrégation

Principales fonctions

  • COUNT() : compte le nombre de lignes

  • SUM() : somme des valeurs

  • AVG() : moyenne des valeurs

  • MAX() : valeur maximale

  • MIN() : valeur minimale

Exemple

# Commandes SQL

SELECT 
  pays,
  COUNT(*) as nombre_clients,
  AVG(age) as age_moyen,
  MAX(revenu) as revenu_max
FROM clients
GROUP BY pays;

Exercice 3.2

Exercices sur les requêtes SQL (JOIN, GROUP BY, etc)

Exercice de gestion des droits

# Commandes SQL

Merci de votre attention 😊
Bonne fin de journée !

M106 - Jour 3

By paranor

M106 - Jour 3

  • 190