SQL
La commande
select
2017-2018
 L’utilisation la plus courante de SQL consiste a lire des
données issues de la base de données. Cela s’effectue grâce a
la commande SELECT, qui retourne des enregistrements dans
un tableau de résultat. Cette commande peut sélectionner
une ou plusieurs colonnes d’une table.
Introduction
2
SELECT * FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression
LIMIT count
Nous nous proposons d’avoir la base de données
«Personne» qui contient la table «Utilisateur » cette table
contient des informations sur des utilisateurs possédant un
compte dans un site de commerce.
Table Utilisateur
3
On a aussi la table commande qui contient les
informations sur les commandes passés par les utilisateurs.
Table Commande
4
SQL SELECT
Il existe plusieurs commandes qui permettent de mieux
gérer les données que l’ont souhaite lire. Voici un petit aperçu des
quelques fonctionnalités :
 Joindre un autre tableau aux résultats
 Filtrer pour ne sélectionner que certains enregistrements
 Classer les résultats
 Grouper les résultats pour faire uniquement des statistiques
5
Expression des
projections
Expression de projection
La projection d’une table en vue de l’obtention d’un
ensemble de colonnes de cette table se fait simplement en
spécifiant les noms des colonnes désirées.
7
Syntaxe:
SELECT ma_colonne FROM nom_du_tableau
Si l’ont veut avoir la liste de toutes les villes des utilisateurs, il
suffit d’effectuer la requête suivante :
SELECT ville FROM utilisateur
Exemple: Obtenir une seule colonne
8
SQL DISTINCT
Pour éviter des redondances dans les résultats il faut
simplement ajouter DISTINCT après le mot SELECT.
Syntaxe:
SELECT DISTINCT ma_colonne FROM nom_du_tableau
9
Permet d’attribuer un autre nom a une table dans
une requête SQL. Cela peut aider à avoir des noms plus
courts, plus simples et plus facilement compréhensibles.
Alias sur une colonne:
SELECT colonne1 AS c1, colonne2 AS c2 FROM `table`
Alias sur une table:
SELECT * FROM `nom_table` AS t1
Alias sur une table ou colonne
10
Expression des
restrictions
“
Expression des restrictions
La restriction se fait à travers la commande WHERE
qui permet d’extraire les lignes d’une base de données qui
respectent une condition. Cela permet d’obtenir uniquement
les informations désirées.
Syntaxe :
SELECT nom_colonnes FROM nom_table WHERE condition
12
“
Exemple : Expression des restrictions
 Pour obtenir seulement la liste des clients qui habitent a
Paris, il faut effectuer la requête suivante :
SELECT * FROM utilisateur WHERE ville = 'paris‘
13
“
Opérateurs de comparaisons
 Il existe plusieurs operateurs de comparaisons. La liste
ci-jointe présente quelques uns des operateurs les plus
couramment utilisés.
Opérateur Description
= Egale
<>,!= Pas égale
< , > , >= , <= Inférieur , supérieur, supérieur ou égale, inférieur ou égal
IN Liste de plusieurs valeurs possibles
BETWEEN Valeur comprise dans un intervalle donnée (utile pour les
nombres ou dates)
LIKE Recherche en spécifiant le début, milieu ou fin d'un mot.
IS NULL , IS NOT NULL Valeur est nulle , Valeur n'est pas nulle
14
“
Exemple : Expression des restrictions
« NOT BETWEEN »
 Filtrer entre 2 entiers :
Si l’ont souhaite obtenir tous les résultats dont l’identifiant n’est
pas situe entre 4 et 10, il faudra alors utiliser la requête suivante :
SELECT * FROM utilisateur WHERE id NOT BETWEEN 4 AND 10
15
“
Exemple : Expression des restrictions « LIKE »
Si on souhaite obtenir la liste des utilisateurs dont leurs prénoms
contiennent exactement n’importe quelles deux lettres au début
suivit par ‘me’.
SELECT * FROM utilisateur WHERE prénom LIKE ‘__me%’
16
“
Tri et présentation des résultats
SQL permet de trier les tuples obtenus par la requête
selon différents critères grâce à la clause ORDER BY. Les mots
clés ASC et DESC permettent de préciser si le tri est croissant ou
décroissant .
Syntaxe :
La syntaxe a utiliser pour utiliser l’operateur Order by est la
suivante :
SELECT * FROM table order by nom_colonne desc|asc
17
Expression
des jointures
Expression des jointures
Les jointures en SQL permettent d’associer plusieurs
tables dans une même requête. Cela permet d’exploiter la
puissance des bases de données relationnelles pour obtenir
des résultats qui combinent les données de plusieurs tables de
manière efficace.
19
Expression des jointures
Les jointures se font en spécifiant les tables sur lesquelles la jointure sera
faite dans la liste des tables utilisées et en spécifiant la qualification de jointure
utilisée.
INNER JOIN jointure interne pour retourner les enregistrements quand la condition est vrai dans les 2
tables.
CROSS JOIN permet de joindre chaque lignes d’une table avec chaque lignes d’une seconde table.(
produit cartésien)
LEFT JOIN jointure externe pour retourner tous les enregistrements de la table de gauche même si la
condition n’est pas vérifié dans l’autre table.
FULL JOIN jointure externe pour retourner les résultats quand la condition est vrai dans au moins une
des 2 tables.
SELF JOIN permet d’effectuer une jointure d’une table avec elle-même comme si c’était une
autre table.
NATURAL JOIN jointure naturelle entre 2 tables s’il y a au moins une colonne qui porte le
même nom entre les 2 tables SQL
UNION JOIN Jointure d’union
20
Exemple : Expression des jointures
Le résultat d’une jointure naturelle est la création d’un
tableau avec autant de lignes qu’il y a de paires correspondant
à l’association des colonnes de même nom.
Syntaxe :
SELECT * FROM table1 NATURAL JOIN table2
21
Les fonctions
des statistiques
et les
regroupements
Les fonctions statistiques
 SQL offre la possibilité de récupérer des données chiffrées sur
les table ou des parties de table .
 Il est par exemple possible d’obtenir le nombre des tuples
répondant à un critère , la valeur moyenne d’une colonne , la
valeur maximale ou minimale et la somme d’une colonne .
23
Exemple : Les fonctions statistiques
Syntaxe :
La syntaxe a utiliser pour utiliser les fonctions statiques est la
suivante :
SELECT SUM(nom_champ) FROM table
24
Les Regroupements : GROUP BY
Ils est souvent intéressant de regrouper les données
d’une table en sous-tables pour y faire des opérations par
groupes . Par exemple compter les commandes par fournisseur .
Ceci se fait avec la clause GROUP BY suivie de la colonne à
partitionner .
25
Syntaxe :
SELECT * FROM table GROUP BY nom_champ
Les Regroupements : Having
La condition HAVING en SQL est presque similaire à
WHERE à la seule différence que HAVING permet de filtrer en
utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN() ou
MAX().
26
Syntaxe :
L’utilisation de HAVING s’utilise de la manière suivante :
SELECT colonne1, SUM(colonne2) FROM nom_table GROUP BY
colonne1 HAVING fonction(colonne2) operateur valeur
Exemple : Les Regroupements
27
SELECT id, SUM(prix_total) AS prix_personne FROM
commande GROUP BY id HAVING sum(prix_total) > 330;
Conclusion
29
L’obtention des données se fait exclusivement
par l’ordre SELECT, La syntaxe minimale de cet ordre
est SELECT <nom de la colonne> from <nom de la
table>, Comme on a déjà vu que ça peut être enrichie
par de très nombreuse clauses permettant notamment
d’exprimer plusieurs fonctionnalités. On peut ajouter
après WHERE une autre requête sql et cette
fonctionnalité est appelée les sous requêtes.
30
Exercice
Soit le schéma relationnel de la base de données « pilotes-avions-vols »
PILOTE (NumPilote, NomPilote, PrénomPilote, Ville, Salaire)
AVION (NumAvion, NomAvion, Capacité, Localisation)
VOL (NumVol, NumPilote, NumAvion, VilleDépart, VilleArrivé,
HeureDépart, Heurearrivé)
Exprimer les rêquetes sql suivantes :
 Caractérestiques ( NumVol, VilleDépart, VilleArrivée, HeureDépart,
HeureArrivée, NomAvion, NomPilote) du vol numéro 714
Question 1:
31
Correction question 1:
SELECT NumVol, VilleDépart, Villearrivé, HeureDépart,
HeureArrivée, NomAvion, NomPilote
From AVION a, PILOTE p, VOL v
WHERE p.NumPilote = v.NumPilote
AND a.NumAvion = v.NumAvion
AND NumVol=714;
32
QUESTION 2:
 Caractérestiques (NumAvion, NomAvion, Capacité,
Localisation) des avions localisés dans même ville
que le pilote « Ben Saleh »
33
Correction question 2:
SELECT NumAvion, NomAvion, Capacité, Localisation
From AVION a, PILOTE p
WHERE a.localisation = p.ville
AND Nompilote = ‘Ben Saleh’;
Presentation sql

Presentation sql

  • 1.
  • 2.
     L’utilisation laplus courante de SQL consiste a lire des données issues de la base de données. Cela s’effectue grâce a la commande SELECT, qui retourne des enregistrements dans un tableau de résultat. Cette commande peut sélectionner une ou plusieurs colonnes d’une table. Introduction 2 SELECT * FROM table WHERE condition GROUP BY expression HAVING condition { UNION | INTERSECT | EXCEPT } ORDER BY expression LIMIT count
  • 3.
    Nous nous proposonsd’avoir la base de données «Personne» qui contient la table «Utilisateur » cette table contient des informations sur des utilisateurs possédant un compte dans un site de commerce. Table Utilisateur 3
  • 4.
    On a aussila table commande qui contient les informations sur les commandes passés par les utilisateurs. Table Commande 4
  • 5.
    SQL SELECT Il existeplusieurs commandes qui permettent de mieux gérer les données que l’ont souhaite lire. Voici un petit aperçu des quelques fonctionnalités :  Joindre un autre tableau aux résultats  Filtrer pour ne sélectionner que certains enregistrements  Classer les résultats  Grouper les résultats pour faire uniquement des statistiques 5
  • 6.
  • 7.
    Expression de projection Laprojection d’une table en vue de l’obtention d’un ensemble de colonnes de cette table se fait simplement en spécifiant les noms des colonnes désirées. 7 Syntaxe: SELECT ma_colonne FROM nom_du_tableau
  • 8.
    Si l’ont veutavoir la liste de toutes les villes des utilisateurs, il suffit d’effectuer la requête suivante : SELECT ville FROM utilisateur Exemple: Obtenir une seule colonne 8
  • 9.
    SQL DISTINCT Pour éviterdes redondances dans les résultats il faut simplement ajouter DISTINCT après le mot SELECT. Syntaxe: SELECT DISTINCT ma_colonne FROM nom_du_tableau 9
  • 10.
    Permet d’attribuer unautre nom a une table dans une requête SQL. Cela peut aider à avoir des noms plus courts, plus simples et plus facilement compréhensibles. Alias sur une colonne: SELECT colonne1 AS c1, colonne2 AS c2 FROM `table` Alias sur une table: SELECT * FROM `nom_table` AS t1 Alias sur une table ou colonne 10
  • 11.
  • 12.
    “ Expression des restrictions Larestriction se fait à travers la commande WHERE qui permet d’extraire les lignes d’une base de données qui respectent une condition. Cela permet d’obtenir uniquement les informations désirées. Syntaxe : SELECT nom_colonnes FROM nom_table WHERE condition 12
  • 13.
    “ Exemple : Expressiondes restrictions  Pour obtenir seulement la liste des clients qui habitent a Paris, il faut effectuer la requête suivante : SELECT * FROM utilisateur WHERE ville = 'paris‘ 13
  • 14.
    “ Opérateurs de comparaisons Il existe plusieurs operateurs de comparaisons. La liste ci-jointe présente quelques uns des operateurs les plus couramment utilisés. Opérateur Description = Egale <>,!= Pas égale < , > , >= , <= Inférieur , supérieur, supérieur ou égale, inférieur ou égal IN Liste de plusieurs valeurs possibles BETWEEN Valeur comprise dans un intervalle donnée (utile pour les nombres ou dates) LIKE Recherche en spécifiant le début, milieu ou fin d'un mot. IS NULL , IS NOT NULL Valeur est nulle , Valeur n'est pas nulle 14
  • 15.
    “ Exemple : Expressiondes restrictions « NOT BETWEEN »  Filtrer entre 2 entiers : Si l’ont souhaite obtenir tous les résultats dont l’identifiant n’est pas situe entre 4 et 10, il faudra alors utiliser la requête suivante : SELECT * FROM utilisateur WHERE id NOT BETWEEN 4 AND 10 15
  • 16.
    “ Exemple : Expressiondes restrictions « LIKE » Si on souhaite obtenir la liste des utilisateurs dont leurs prénoms contiennent exactement n’importe quelles deux lettres au début suivit par ‘me’. SELECT * FROM utilisateur WHERE prénom LIKE ‘__me%’ 16
  • 17.
    “ Tri et présentationdes résultats SQL permet de trier les tuples obtenus par la requête selon différents critères grâce à la clause ORDER BY. Les mots clés ASC et DESC permettent de préciser si le tri est croissant ou décroissant . Syntaxe : La syntaxe a utiliser pour utiliser l’operateur Order by est la suivante : SELECT * FROM table order by nom_colonne desc|asc 17
  • 18.
  • 19.
    Expression des jointures Lesjointures en SQL permettent d’associer plusieurs tables dans une même requête. Cela permet d’exploiter la puissance des bases de données relationnelles pour obtenir des résultats qui combinent les données de plusieurs tables de manière efficace. 19
  • 20.
    Expression des jointures Lesjointures se font en spécifiant les tables sur lesquelles la jointure sera faite dans la liste des tables utilisées et en spécifiant la qualification de jointure utilisée. INNER JOIN jointure interne pour retourner les enregistrements quand la condition est vrai dans les 2 tables. CROSS JOIN permet de joindre chaque lignes d’une table avec chaque lignes d’une seconde table.( produit cartésien) LEFT JOIN jointure externe pour retourner tous les enregistrements de la table de gauche même si la condition n’est pas vérifié dans l’autre table. FULL JOIN jointure externe pour retourner les résultats quand la condition est vrai dans au moins une des 2 tables. SELF JOIN permet d’effectuer une jointure d’une table avec elle-même comme si c’était une autre table. NATURAL JOIN jointure naturelle entre 2 tables s’il y a au moins une colonne qui porte le même nom entre les 2 tables SQL UNION JOIN Jointure d’union 20
  • 21.
    Exemple : Expressiondes jointures Le résultat d’une jointure naturelle est la création d’un tableau avec autant de lignes qu’il y a de paires correspondant à l’association des colonnes de même nom. Syntaxe : SELECT * FROM table1 NATURAL JOIN table2 21
  • 22.
  • 23.
    Les fonctions statistiques SQL offre la possibilité de récupérer des données chiffrées sur les table ou des parties de table .  Il est par exemple possible d’obtenir le nombre des tuples répondant à un critère , la valeur moyenne d’une colonne , la valeur maximale ou minimale et la somme d’une colonne . 23
  • 24.
    Exemple : Lesfonctions statistiques Syntaxe : La syntaxe a utiliser pour utiliser les fonctions statiques est la suivante : SELECT SUM(nom_champ) FROM table 24
  • 25.
    Les Regroupements :GROUP BY Ils est souvent intéressant de regrouper les données d’une table en sous-tables pour y faire des opérations par groupes . Par exemple compter les commandes par fournisseur . Ceci se fait avec la clause GROUP BY suivie de la colonne à partitionner . 25 Syntaxe : SELECT * FROM table GROUP BY nom_champ
  • 26.
    Les Regroupements :Having La condition HAVING en SQL est presque similaire à WHERE à la seule différence que HAVING permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN() ou MAX(). 26 Syntaxe : L’utilisation de HAVING s’utilise de la manière suivante : SELECT colonne1, SUM(colonne2) FROM nom_table GROUP BY colonne1 HAVING fonction(colonne2) operateur valeur
  • 27.
    Exemple : LesRegroupements 27 SELECT id, SUM(prix_total) AS prix_personne FROM commande GROUP BY id HAVING sum(prix_total) > 330;
  • 28.
  • 29.
    29 L’obtention des donnéesse fait exclusivement par l’ordre SELECT, La syntaxe minimale de cet ordre est SELECT <nom de la colonne> from <nom de la table>, Comme on a déjà vu que ça peut être enrichie par de très nombreuse clauses permettant notamment d’exprimer plusieurs fonctionnalités. On peut ajouter après WHERE une autre requête sql et cette fonctionnalité est appelée les sous requêtes.
  • 30.
    30 Exercice Soit le schémarelationnel de la base de données « pilotes-avions-vols » PILOTE (NumPilote, NomPilote, PrénomPilote, Ville, Salaire) AVION (NumAvion, NomAvion, Capacité, Localisation) VOL (NumVol, NumPilote, NumAvion, VilleDépart, VilleArrivé, HeureDépart, Heurearrivé) Exprimer les rêquetes sql suivantes :  Caractérestiques ( NumVol, VilleDépart, VilleArrivée, HeureDépart, HeureArrivée, NomAvion, NomPilote) du vol numéro 714 Question 1:
  • 31.
    31 Correction question 1: SELECTNumVol, VilleDépart, Villearrivé, HeureDépart, HeureArrivée, NomAvion, NomPilote From AVION a, PILOTE p, VOL v WHERE p.NumPilote = v.NumPilote AND a.NumAvion = v.NumAvion AND NumVol=714;
  • 32.
    32 QUESTION 2:  Caractérestiques(NumAvion, NomAvion, Capacité, Localisation) des avions localisés dans même ville que le pilote « Ben Saleh »
  • 33.
    33 Correction question 2: SELECTNumAvion, NomAvion, Capacité, Localisation From AVION a, PILOTE p WHERE a.localisation = p.ville AND Nompilote = ‘Ben Saleh’;

Notes de l'éditeur

  • #3 Squelette : cette requête imaginaire sert principale d’aide-mémoire pour savoir dans quel ordre sont utilisé chacun des commandes au sein d’une requête SELECT
  • #5 L’utilisateur_id est un clé etranger qui reference à la table utilsateur
  • #9 Si l’on souhaite obtenir toutes les colonnes d’une table le caractère ‘*’ peut être utilisé avantageusement à la place de la liste des noms de colonnes.
  • #10 L’utilisation de la commande SELECT en SQL permet de lire toutes les données d’une ou plusieurs colonnes. Cette commande peut potentiellement afficher des lignes en doubles.
  • #13 La commande WHERE s’utilise en complément a une requête utilisant SELECT. La façon la plus simple de l’utiliser est la suivante :
  • #14 Le language sql est sensible à la casse il faut faire attention au nom des colonnes et des attributs
  • #16 Le Not betwen a le meme role que l’operateur between sauf que elle retourne des valeurs exterieurs de l’intervalle
  • #17  % remplace plusieurs caractéres
  • #18 Desc pour mentionner que c’est à l’ordre descendant l’ordre est par défaut ascendant
  • #22 jointure naturelle entre 2 tables s’il y a au moins une colonne qui porte le même nom entre les 2 tables SQL, d’ailleurs ici on a changé la colonne utilisateur_id dans la table commande en « id » On se propose ici d’afficher les prénoms , date d’achat num facture et le prix d’achat suite à une réduction de 20% ( la requete select supporte les fonction arrithmétiques)
  • #25 9bal mat9oulou el requete : on se propose ici de déterminer le prix total d’achat par personne d’où additionner les depenses par rapport à l id des utilisateurs. Il est important de noter que les opérations statistiques précédentes ne peuvent pas s’imbriquer . Il est par exemple interdit d’écrire quelque chose comme AVG(SUM(montant)) .
  • #26 A noter : cette commande doit toujours s’utiliser après la commande WHERE et avant la commande HAVING.
  • #27 Cela permet donc de SÉLECTIONNER les colonnes DE la table « nom_table » en GROUPANT les lignes qui ont des valeurs identiques sur la colonne « colonne1″ et que la condition de HAVING soit respectée. Important : HAVING est très souvent utilisé en même temps que GROUP BY bien que ce ne soit pas obligatoire.
  • #28 Cette requette affiche la somme de prix totale qui est supérieur à 330 d’un utilisateur à partir de la table commande et on le regroupant par id