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

Le Langage SQL Pour Ect2

Transféré par

Abdellatif Elaayadi
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 DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
52 vues11 pages

Le Langage SQL Pour Ect2

Transféré par

Abdellatif Elaayadi
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 DOC, PDF, TXT ou lisez en ligne sur Scribd

M.

AIT AAMMI HADI Page 1 sur 11


Le Langage SQL

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).

Le langage d’interrogation des données

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

SELECT [distinct] { * | [nom_table.]nom_champ1 [nom_table.]nom_champ2 …]}


FROM nom_table [, nom_table [, …] ]
[ WHERE conditions ]
[ GROUP by nom_champ1 [, nom_champ2 , [, … ] ]
[ HAVING conditions ]
[ ORDER by nom_champ1 (desc] [, nom_champ2 (asc] ... ]

On peut ajouter des commentaires de la façon suivante :


/* placez ici votre commentaire */

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.

Select nomcli, telcli from clients  ;

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).

Exemple : sélectionnez le numéro, le nom du produit, le prix de vente et la quantité dans le


stock pour tous les produits. La liste doit être ordonnée par ordre croissant du code produit.
---------------
Select distinct * from lignecommandes

NUMCOM DATECOM NUMCLI


--------- -------- ---------
M. AIT AAMMI HADI Page 3 sur 11
1 02/05/01 100
2 02/05/01 100
2 03/05/01 101
3 02/05/01 100
3 03/05/01 100

5 ligne(s) sélectionnée(s).

Cette requête permet d’afficher une seule fois une commande passée par un client.

4. SELECTION DES LIGNES


Vous pouvez en utilisant la clause where spécifier les lignes à afficher. Toutes les lignes
qui vérifient la ou les conditions spécifiées dans la clause seront affichées.
Conditions simples :
On peut utiliser une seule condition en utilisant les opérateurs de comparaison suivants :
Opérateur Signification
= Egal
!= Différent
> et >= Supérieur et supérieur ou égal
< et <= Inférieur et inférieur ou égal
Expr1 between expr2 and expr3
Between
Compris entre une valeur et une autre les bornes sont comprises
Expr1 in (expr2, expr3, …) Vrai si expr1 se trouve dans la liste
In
entre parenthèse.
Expr like chaîne
Chaîne est une chaîne de caractères pouvant
contenir un joker
like
_ (Sous-tiret) remplace un seul caractère

% Remplace 0 ou plusieurs caractères.

Exemple : Affichez le client ayant comme nom Ali.

Select * from clients where nomcli = ‘Ali’

NUMCLI NOMCLI ADRESCLI TELCLI FAXCLI VILLE


--------- -------------- -------------------- ---------- ---------- ------
100 Ali 12, Rue1 Rabat 10-10-10 10-10-11 RABAT

Exemple : Affichez tous les clients dont le nom contient la lettre ‘a’

Select * from clients where nomcli like ‘%a%’


NUMCLI NOMCLI TELCLI FAXCLI VILLE
--------- -------------------- ---------- ---------- --------
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
M. AIT AAMMI HADI Page 4 sur 11
116 Aicha 037787974 037787975 SALE
201 Farid 037457889 037457890 Rabat

6 ligne(s) sélectionnée(s).

Exemple : Affichez tous les clients ayant la lettre ‘o’ en deuxième position dans leur nom.

Select * from clients where nomcli like ‘_o%’


NUMCLI NOMCLI TELCLI FAXCLI VILLE
--------- -------------------- ---------- ---------- --------
101 Mohamed 20-20-20 20-20-21 KENITRA
112 Souad 10-10-16 10-10-17 KENITRA

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

L’opérateur not placé devant une condition inverse son sens.


L’opérateur and est prioritaire par rapport à l’opérateur or, mais les parenthèses peuvent être
utilisées pour forcer l’évaluation d’une expression avant l’autre.

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.

Exemple : affichez les articles par ordre croissant du nom.

Select numprod, nomprod, quantite, prixvente


from produits
where numprod between 501 and 503
order by nomprod
ou
Select numprod, nomprod, quantite, prixvente
from produits
where numprod between 501 and 503
order by 2

NUMPROD NOMPROD QUANTITE PRIXVENTE


--------- -------------------- --------- ---------
501 fromage 1000 1100
502 lait 200 270
503 oeufs 1000 70

Exercice : Affichez les commandes triées par numéro du client croissant et numéro du produit
décroissant.

Select numcom, numcli, numprod, quantite


from commandes
order by numcli, numprod desc
M. AIT AAMMI HADI Page 6 sur 11
NUMCOM NUMCLI NUMPROD QUANTITE
--------- --------- --------- ---------
3 100 504 8
3 100 503 25
1 100 502 15
3 100 502 10
1 100 501 10
3 100 501 12
2 100 500 7
2 101 504 4
2 101 503 20

9 ligne(s) sélectionnée(s).

6. Jointure des tables


La jointure est l’opération qui permet de combiner des informations provenant de plusieurs tables.
Elle consiste à obtenir dans une même ligne, des informations venant de plusieurs tables.
La jointure se fait explicitement et d’une manière très simple dans une requête sql.
Select …
From table1, table2 …
La deuxième ligne indique que les colonnes seront sélectionnées à partir de table1, de table2, ...
Si les conditions de sélection ne sont pas précisées, le résultat sera composé de toutes les
combinaisons possibles d’une ligne prise dans la première table avec toutes les lignes de la
deuxième table. Le résultat sera donc le produit cartésien et ne correspondra pas sûrement au
résultat souhaité.
Il faut donc ajouter à la requête précédente, les conditions de jointure entre un champ de la
première table et un autre champ de la deuxième table.
Select …
From table1, table2 …
Where table1.champ1 = table2.champ2 ...
Exemple : on veut afficher en même temps les numéros et les noms des clients ayant passés
une commande.

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]

NUMCLI NOMCLI NUMCOM NUMPROD QUANTITE


--------- -------------------- --------- --------- ---------
100 Ali 1 501 10
100 Ali 1 502 15
101 Mohamed 2 503 20
101 Mohamed 2 504 4
100 Ali 2 500 7
M. AIT AAMMI HADI Page 7 sur 11
100 Ali 3 501 12
100 Ali 3 502 10
100 Ali 3 503 25
100 Ali 3 504 8
Si la condition de jointure [Link] = [Link] n’est pas spécifiée, le
résultat sera un produit cartésien entre les deux tables. Supprimez cette condition, exécutez
la requête puis comparez le résultat obtenu avec celui de l’exemple 12.

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 :

Select [Link], nomcli, numcom, numprod,quantite


From clients, commandes
Where [Link] = [Link]

NUMCLI NOMCLI NUMCOM NUMPROD QUANTITE


--------- -------------------- --------- --------- ---------
100 Ali 1 501 10
100 Ali 1 502 15
100 Ali 2 500 7
100 Ali 3 501 12
100 Ali 3 503 25
100 Ali 3 504 8
100 Ali 3 502 10
101 Mohamed 2 503 20
101 Mohamed 2 504 4

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.

7. Synonyme local d’une table.


Un synonyme local peut être donné à une table dans un select afin de simplifier l’écriture de
la requête.
Ce nom pourra être utilisé dans le select pour préfixer les noms des champs.
La requête de l’exemple 12 pourra donc s’écrire plus simplement :
Select [Link], nomcli, numcom, numprod, quantite
From clients c, commandes co
Where [Link] = [Link]

8. Les colonnes calculées.


Dans un select on peut écrire une expression exactement comme on le fait pour une colonne.
L’expression peut être :
Une constante.
Des opérations sur des colonnes.
Des fonctions.
M. AIT AAMMI HADI Page 8 sur 11
Les opérations sur les colonnes sont effectuées grâce aux opérateurs arithmétiques
(+,-,* et /) il faut cependant respecter la priorité des opérateurs dans le cas ou l’expression
contient plusieurs opérateurs l’addition et la soustraction ont une priorité faible par rapport à
la multiplication et la division. L’emploi des parenthèses permet de changer cette priorité.
Exemple : affichez le numéro des produits commandés ainsi que le prix de vente, la quantité
et le prix total.
Select [Link], prixvente, [Link], [Link]*prixvente
From commandes c, produits p
Where [Link] = [Link]

NUMPROD PRIXVENTE QUANTITE [Link]*PRIXVENTE


--------- --------- --------- --------------------
501 1100 10 11000
502 270 15 4050
503 70 20 1400
504 50 4 200
500 110 7 770
501 1100 12 13200
502 270 10 2700
503 70 25 1750
504 50 8 400
500 110 12 1320
501 1100 40 44000

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.

9. Les fonctions arithmétiques intégrées à Oracle 


Fonction Signification
Power(n, m) Elève n à la puissance m
Round(n [,d]) Arrondit n d chiffres après la virgule par défaut d=0
Round(5,776 , 2) donne 5.78
Trunc(n [,d]) Tronque n à d chiffres après la virgule par défaut d=0
Trunc(5,776 , 2) donne 5.77
Abs(n) Donne la valeur absolue de n
Sign(n) 1 si n est positif
0 si n est égale à 0
-1 si n est négatif
Mod(n, m) Donne le reste de la division de n par m.
Sqrt(n) Donne la racine carrée de n
M. AIT AAMMI HADI Page 9 sur 11

10. Exercice :
Réalisez une facture pour le client 101. votre facture doit ressembler à celle-ci :

| NOM | PRODUITS | PRIX | QUANTITE | TOTAL |


- ---------- - -------------- - -------- - --------- - --------- -
| Ali | pain | 0110.00 | 5 | 550.00 |
| Ali | fromage | 1100.00 | 10 | 11000.00 |
| Ali | lait | 0270.00 | 15 | 4050.00 |

11. OPERATIONS DE CALCUL

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.

12. Les opérateurs ensemblistes

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 :

Select1 union (select2 intersect select3)

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

Vous aimerez peut-être aussi