Le Langage SQL Pour Ect2
Le Langage SQL Pour Ect2
INTRODUCTION
SQL est un langage qui permet à lui seul de faire toutes les manipulations possibles d’une base
de données Oracle. Il est à la fois :
Un langage d’interrogation de la base des données (LID).
Un langage de manipulation de la base de données (LMD).
Un langage de définition de la base de données (LDD)
Un langage de contrôle de la base de données (LCD).
1. INTRODUCTION
L’ordre select est destiné a afficher des informations provenant d’une ou de plusieurs tables. Il
permet :
La sélection de toutes les colonnes ou de quelques-unes unes seulement.
La sélection des lignes selon le contenu des colonnes.
La réalisation des calculs sur des colonnes et l’utilisation des fonctions
prédéfinies.
Le tri du résultat d’un select selon une ou plusieurs colonnes.
La sélection avec élimination des doublants.
2. SYNTAXE
Pour notre étude, on prend comme exemple la base de données représentée par le schéma suivant :
M. AIT AAMMI HADI Page 2 sur 11
3. SELECTION DES COLONNES :
Exemple : On veut afficher toutes les informations concernant tous les clients se trouvant dans
la table clients.
Select * from clients ;
NUMCLI NOMCLI TELCLI FAXCLI VILLE
--------- -------------------- ---------- ---------- --------
100 Ali 10-10-10 10-10-11 RABAT
101 Mohamed 20-20-20 20-20-21 KENITRA
105 Fatima 50-55-20 50-55-21 RABAT
103 Brahim 10-10-14 10-10-15 SALE
112 Souad 10-10-16 10-10-17 KENITRA
116 aicha 037787974 037787975 SALE
201 Farid 037457889 137457890 Rabat
117 Zhour 137568923 037458923 RABAT
8 ligne(s) sélectionnée(s).
* signifie que tous les champs seront sélectionnés.
Exemple : On veut afficher le nom du client ainsi que son numéro de téléphone.
NOMCLI TELCLI
-------------------- ----------
Ali 10-10-10
Mohamed 20-20-20
Fatima 50-55-20
Brahim 10-10-14
Souad 10-10-16
Aicha 037787974
Farid 037457889
Zhour 137568923
8 ligne(s) sélectionnée(s).
La clause distinct placée devant les noms des colonnes permet d’éliminer les ligne en double.
Exemple : sélectionner toutes les lignes de la table commandes.
Select * from lignecommandes
NUMCOM CODEPROD QUANTITE
--------- --------- ---------
1 501 10
1 502 15
2 503 20
2 504 4
2 500 7
3 501 12
3 502 10
3 503 25
3 504 8
9 ligne(s) sélectionnée(s).
5 ligne(s) sélectionnée(s).
Cette requête permet d’afficher une seule fois une commande passée par un client.
Exemple : Affichez tous les clients dont le nom contient la lettre ‘a’
6 ligne(s) sélectionnée(s).
Exemple : Affichez tous les clients ayant la lettre ‘o’ en deuxième position dans leur nom.
Exemple : affichez le numéro, le nom et le téléphone des clients ayant un numéro supérieur
à 103.
Select numcli, nomcli, telcli from clients where numcli > 103
NUMCLI NOMCLI TELCLI
--------- -------------------- ----------
105 Fatima 50-55-20
112 Souad 10-10-16
116 Aicha 037787974
117 Zhour 137568923
201 Farid 037457889
Exemple : affichez les clients ayant un numéro compris entre 101 et 105.
Select numcli, nomcli, ville
from clients where numcli between 101 and 105
NUMCLI NOMCLI VILLE
--------- -------------------- ---------------
101 Mohamed KENITRA
103 Brahim SALE
105 Fatima RABAT
Exemple : sélectionnez les clients ayant comme nom ‘Ali’, ‘Fatima’ et ‘Souad’.
Select numcli, nomcli, telcli, ville from clients
where nomcli in (‘Ali’, ‘Fatima’, ‘Souad’)
NUMCLI NOMCLI TELCLI VILLE
--------- -------------------- ---------- ---------------
100 Ali 10-10-10 RABAT
105 Fatima 50-55-20 RABAT
112 Souad 10-10-16 KENITRA
L’opérateur not peut être utilisé pour faire la négation de la condition in.
Select numcli, nomcli, telcli, ville from clients
where nomcli not in (‘Ali’, ‘Fatima’, ‘Souad’)
NUMCLI NOMCLI TELCLI VILLE
--------- -------------------- ---------- ---------------
101 Mohamed 20-20-20 KENITRA
103 Brahim 10-10-14 SALE
116 Aicha 037787974 SALE
201 Farid 037457889 Rabat
117 Zhour 137568923 RABAT
M. AIT AAMMI HADI Page 5 sur 11
Conditions Composées :
Les opérateurs logiques AND et OR peuvent être utilisés pour combiner plusieurs
conditions.
Exemple : sélectionnez les deux clients ayant comme numéro 101 et 103.
Select numcli, nomcli from clients where numcli = 101 or numcli = 103
NUMCLI NOMCLI
--------- --------------------
103 Brahim
101 Mohamed
5. LE TRI DU RESULTAT :
Dans une requête select on peut spécifier que le résultat doit être trié dans l’ordre ascendant ou
descendant en fonction d’une ou de plusieurs colonnes.
Les critères de tri sont spécifiés dans la clause ORDR BY placée après la clause where si elle
existe.
On peut désigner une colonne par son nom ou par son numéro.
Par défaut l’ordre de tri est ascendant (ASC) pour le rendre descendant, il faut ajouter le terme
DESC après l’ordre by.
Exercice : Affichez les commandes triées par numéro du client croissant et numéro du produit
décroissant.
9 ligne(s) sélectionnée(s).
Réponse : on sait que les noms des clients existent dans la table clients et les renseignements
concernant les commandes existent dans la table commande.
Il faut donc faire la jointure entre ces 2 tables.
Select [Link], [Link], [Link],
[Link], [Link]
From clients, commandes
Where [Link] = [Link]
Remarque : il faut précéder les noms des champs par le nom de la table à partir de laquelle
ils seront sélectionnés. Dans le cas ou le nom figure dans une seule table cette notation n’est
pas obligatoire. Vous êtes obligé de faire cette notation dans le cas ou deux champs ayant
exactement le même nom figurent dans les deux tables. C’est le cas de numcli. On peut donc
écrire plus simplement :
9 ligne(s) sélectionnée(s).
Exercice : Affichez pour un client donné, une commande dans laquelle figurera son nom
ainsi que les noms, les quantités et les prix de vente des produits commandés.
11 ligne(s) sélectionnée(s).
Exercice : en utilisant la jointure, affichez pour une commande donnée, le nom du client, le
nom de l’article, la quantité, le prix de vente et le total ht.
10. Exercice :
Réalisez une facture pour le client 101. votre facture doit ressembler à celle-ci :
FONCTIONS SIGNIFICATIONS
SUM Trouve la somme des valeurs de la colonne spécifiée
MIN Trouve la valeur minimale de la colonne spécifiée
MAX Trouve la valeur maximale de la colonne spécifiée
AVG Trouve la valeur moyenne des valeurs de la colonne spécifiée
STD Trouve l’écart type des valeurs de la colonne spécifiée
VAR Trouve la variance des valeurs de la colonne spécifiée
COUNT Trouve le nombre de valeurs non nulles dans la colonne spécifiée
NUM Trouve le nombre de valeurs de la colonne spécifiée, y compris celles qui sont
nulles.
Ils permettent de joindre des tables verticalement et donc de combiner dans un résultat unique des lignes
provenant de deux interrogations.
Ces opérateurs sont :
Opérateur Fonction
UNION L’union de requêtes de sélection
INTERSECT L’intersection de requêtes de sélection
MINUS La différence de requêtes de sélection
La syntaxe est la suivante :
Select ….
{ union | intersect | minus }
select …
1- Tous les select doivent avoir le même nombre de colonnes sélectionnées, et leurs types doivent
être un à un identique. Les conversions éventuelles doivent être faites à l’intérieur du select à
l’aide des fonctions de conversion (to_char, to_date, …)
2- Les doublons sont éliminés.
3- On peut combiner plus de deux select de la façon suivante :
L’union (union)
Si une interrogation ramène N lignes et une deuxième ramène M lignes, alors l’union des deux ramènera
N+M lignes moins les doublons.
M. AIT AAMMI HADI Page 10 sur 11
Exemple :
Trouvez les clients qui ont commandé des œufs ainsi que ceux qui habitent salé.
select [Link], nomcli, telcli, 'A commandé des Oeufs'
from clients c, commandes co, produits p
where [Link] = [Link]
and [Link] = [Link]
and upper(nomprod) = 'OEUFS'
UNION
select numcli, nomcli, telcli, 'Habite à Salé’
from clients
where upper(ville) = 'SALE'
NUMCLI NOMCLI TELCLI 'ACOMMANDÉDESOEUFS'
--------- -------------------- ---------- --------------------
100 Ali 10-10-10 A commandé des Oeufs
101 Mohamed 20-20-20 A commandé des Oeufs
103 Brahim 10-10-14 Habite à Salé
116 Aicha 037787974 Habite à Salé
L’intersection (intersect)
L’intersection de plusieurs interrogations ramènera une occurrence de chacune des lignes communes.
Exemple1 :
On veut connaître les clients qui ont passé une commande au moins une fois
select numcli, nomcli, telcli from clients
intersect
select [Link], nomcli, telcli
from clients c, commandes co
where [Link] = [Link]
NUMCLI NOMCLI TELCLI
--------- -------------------- ----------
100 Ali 10-10-10
101 Mohamed 20-20-20
201 Farid 037457889
La différence (minus)
Minus ramène une occurrence de chacune des lignes sélectionnées par la première interrogation et qui ne
sont pas dans la deuxième.
Exemple :
On veut connaître les articles qui n’ont jamais été commandés.
select numprod from produits
minus
select numprod from commandes;
NUMPROD
----------------
504
Exercice : Améliorez l’exemple1 pour qu’il affiche en plus du numéro du produit, le nom, le prix
d’achat et la quantité disponible dans le stock ?
M. AIT AAMMI HADI Page 11 sur 11
1. INTRODUCTION.................................................................................................................................1
2. SYNTAXE.............................................................................................................................................1
3. SELECTION DES COLONNES :.........................................................................................................1
4. SELECTION DES LIGNES..................................................................................................................2
Conditions simples :...................................................................................................................................3
Conditions Composées :............................................................................................................................4
5. LE TRI DU RESULTAT :.....................................................................................................................5
6. Jointure des tables..................................................................................................................................6
7. Synonyme local d’une table...................................................................................................................7
8. Les colonnes calculées...........................................................................................................................7
9. Les fonctions arithmétiques intégrées à Oracle.....................................................................................8
10. Exercice :...........................................................................................................................................9
11. OPERATIONS DE CALCUL...........................................................................................................9
12. Les opérateurs ensemblistes...............................................................................................................9
L’union (union)..........................................................................................................................................9
L’intersection (intersect)..........................................................................................................................10
La différence (minus)...............................................................................................................................10