Upload
tilde-lafon
View
131
Download
0
Embed Size (px)
Citation preview
Les interrogations
simples
IV-2
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias }
[ ASC | DESC ] [NULLS FIRST | NULLS LAST ]
[,...] ] ;
{ } choisir un élément dans la liste [ ] optionnel [,...] l’élément précédent peut être répété ASC souligné, indique une valeur par
défaut si en MAJUSCULE écrire ce mot tel quel si en minuscule substituer une valeur
appropriée si en Italique, c’est un identifiant.
Syntaxe de SELECT
IV-3
SELECT sur toutes les colonnes
Sélection de toutes les colonnes:
* : indique que l'on désire toutes les colonnes.
id nom ville
40 Comptabilité Montréal
30 Ventes Québec
20 Recherches Sherbrooke
Table departement
SELECT *
FROM departement;
Id nom ville
40 Comptabilité Montréal
30 Ventes Québec
20 Recherches Sherbrooke
IV-4
Une expression est :◦ une colonne, une constante ou une
fonction
ou◦ un ensemble d’une ou plusieurs
colonnes, constantes et/ou fonctions combinées au moyen d’opérateurs.
Exemple : ◦ SELECT id_employe + 5 FROM employe;
Opérateurs :◦ Arithmétiques : + - * / ()◦ Caractères: || (concaténation)◦ Dates : + -
Les expressions
IV-5
SELECT sur une colonne Si l’on ne désire qu’une
colonne en particulier :
SELECT nom
FROM departement;
nom
Comptabilité
Ventes
Recherches
IV-6
Select sur plusieurs colonnes Pour sélectionner plusieurs
colonnes :
SELECT nom,ville
FROM departement;
nom ville
Comptabilité Montréal
Ventes Québec
Recherches Sherbrooke
IV-7
Faire afficher la liste de tous les employés ainsi que leur salaire actuel et une prévision de leur salaire augmenté de 15%.
SELECT nom, salaire, salaire*1.15
FROM employe
Utilisation d’expressionavec opérateur arithmétique
nom salaire salaire*1.15
Roy 5000,00 5750,00Cabana 2450,00 2817,50Bourque 2850,00 3277,50 .... .... ....
IV-8
Si on utilise un « alias de colonne » il sera utilisé comme entête dans le rapport
SELECT nom, salaire, salaire*1.15 calcul
FROM employe;
Utilisation d'alias
nom salaire calcul
Roy 5000,00 5750,00Cabana 2450,00 2817,50Bourque 2850,00 3277,50 .... .... ....
On peut utiliser un alias complexe (espace, accent, case ou mot réservé) si on utilise les " ".◦ Exemple :
SELECT
Nom “Nom du département”FROM
departement;
9
Utilisation d’alias
nom ville
Comptabilité Montréal
Ventes Québec
Recherches Sherbrooke
Pour sélectionner des rangées en particuliers :
SELECT
nom,ville
FROMdepartement
WHEREville = 'Montréal';
10
Clause WHERESélection des rangées
nom ville
Comptabilité Montréal
Ventes Québec
Recherches Sherbrooke
nom ville
Comptabilité Montréal
IL est possible qu’un SELECT ne retourne aucune rangée.
Afin de sélectionner une seule rangée, une méthode efficace est de faire un WHERE sur la clé primaire.
11
WHERE (suite)
Condition simple: se compose d’une expression, d’un opérateur de comparaison (ou autre) et d’une expression.
Opérateurs de comparaison : =, <>, <, >, <=, >= (<> , != et ^= testent l’inégalité)
Autres : IN (liste) BETWEEN min AND max
LIKE masque IS NULL
Exemple : SELECT
nomFROM
employeWHERE
id >= 10;
12
Condition simple
Permet de vérifier si une valeur fait partie d'une liste de valeurs, d’un ensemble
SELECT nom
FROMdepartement
WHERE ville IN ('Montréal','Québec','Longueuil');
13
L'opérateur IN
Attention de ne pas confondre le = et le IN.
Le = ne fonctionne que pour une comparaison avec une valeur.
Exemple :…WHERE
id= 10 ANDsalaire = commission;
14
Opérateur IN versus =
SELECT nom
FROM departement
WHERE id BETWEEN 30 AND 70;
est équivalent à
…WHERE
id >= 30 AND id<= 70;
Donc le BETWEEN est inclusif.
15
BETWEEN ... AND ...
Syntaxe: LIKE Masque Les masques: % : signifie n'importe quelle chaîne de caractères _ : signifie n'importe quel caractère autre : signifie le caractère indiqué.
Pour avoir la liste des employés dont le nom commence par la lettre R (la case est
importante):
SELECT nom
FROM employe
WHERE nom LIKE 'R%';
16
L'opérateur LIKE
Pour les employés dont le nom se termine par A:
SELECT idFROMemployeWHERE nom LIKE '%A';
Pour la liste des employés dont le nom commence par la lettre J suivie d'exactement 3 caractères:
SELECT nom
FROM employe
WHERE nom LIKE 'J_ _ _';
IV-17
L'opérateur LIKE (suite)
NULL signifie absence de valeur (ou valeur inconnue) Ne pas confondre 0 (zéro) et
NULL
2 + 0 => 2 2 + NULL => NULL
18
L'opérateur IS NULL
Afficher la liste de tous les employés qui n'ont pas de commission
SELECT nom
FROMemploye
WHERE commission IS NULL;
Afficher la liste de tous les employés qui touchent une commission
SELECT nom
FROMemploye
WHERE commission IS NOT NULL;
19
Exemple IS NULL
valeur de A condition résultat
10 A IS NULL faux
10A IS NOT
NULLvrai
nul A IS NULL vrai
nulA IS NOT
NULLfaux
10 A = NULLinconnu (faux)
10 A <> NULLinconnu (faux)
nul A = NULLinconnu (faux)
nul A <> NULLinconnu (faux)
20
NULL et les opérateurs de comparaisons
Il est parfois utile qu’une requête puisse retourner une valeur prédéterminée lorsque le champ d’une colonne est nul.
NVL(Nom_Colonne, Valeur) ◦ Nom_Colonne: le nom de la colonne de la table.◦ Valeur : valeur retournée si le champ est nul.
Exemple :
SELECT NVL(commission,0)
FROM employe;
Retournera soit la commission ou 0 si la commission est nulle.
21
Fonction NVL
SELECT nom
FROM employe
WHERE NVL(commission,0) < 1000;
Retournera le nom des employésdont la commission est inférieureà1000.
22
Exemple fonction NVL
Opérateurs sur les dates : on peut additionner ou soustraire des jours à une date : + et –
'6-mar-87' + 2 = '8-mar-87' '6/03/87' - 4 = '2/03/87'
On peut soustraire les dates ‘03-01-93' - ‘25-12-92' = 9
Le résultat est en jours.
On peut entrer une date en spécifiant le format:
SELECT nom
FROMemploye
WHERE date_embauche =
(TO_DATE(’03/11/1989’, ‘DD/MM/YYYY’));
23
Calcul sur les dates
On peut spécifier le format d’affichage d’une date :
Exemple :
SELECT TO_CHAR(date_embauche, ‘DD/MM/YYYY’)
FROMemploye
WHERE employe= 7980;
24
Format d’affichage des dates
Voici deux conditions simples utilisées avec AND, OR
SELECT nom
FROM employe
WHERE id_department = 20 ANDposte != ‘Commis’)
OU
SELECT nom
FROM employe
WHERE (id_departement = 20 AND Poste != ‘Commis’)OR(id_departement = 30 AND Poste != ‘Vendeur’);
25
Select avec conditions multiples
26
NULL et les opérateurs logiques
vrai
NOT VRAI FAUX NUL
Faux vrai nul
AND VRAI FAUX NUL
VRAI vrai faux nul
FAUX faux faux faux
NUL nul faux nul
OR VRAI FAUX NUL
VRAI vrai vrai vrai
FAUX vrai faux nul
NUL vrai nul nul
Faire afficher la liste des employés qui touchent une commission plus élevée que 5% de leur salaire.
SELECT nom
FROM employe
WHERE commission> 0.05 * salaire
Opérateurs : + - * / ()
27
Expressions numériquesdans la clause WHERE
Dans la BD, les rangées d’une table sont dans un ordre quelconque. ORDER BY permet de les classer.
SELECT
*FROM
departementWHERE
id > 10ORDER BY
nom
28
Ordre des rangées
Id nom ville
40 Comptabilité Montréal
30 Ventes Québec
20 Recherches Sherbrooke
Id nom ville
40 Comptabilité Montréal
20 Recherches Sherbrooke
30 Ventes Québec
Attention, l’allias peut être utilisé dans le ORDER BY mais pas ailleurs.
Exemple:
SELECT nom "NomDept"
FROM departement
ORDER BY "NomDept";
29
Alias et ORDER BY
Faire afficher la liste des employés, leur salaire, leur commission et le pourcentage du salaire qui vient de la commission pour les employés qui touchent une commission plus élevée que 5% de leur salaire. Faire afficher en ordre décroissant du pourcentage du salaire.
SELECT nom,salaire,commission,commission/salaire
FROM employe
WHERE commission > 0.05 * salaire
ORDER BY commission/salaire DESC;
DESC = descendant, ASC = Ascendant
30
Expressions numériquesdans la clause ORDER BY
La liste de valeurs peut être le résultat d'un SELECT (SELECT imbriqué).
SELECT id
FROM employe
WHERE id_departement IN
(SELECT id FROM departementWHERE ville =‘Montréal’);
31
L'opérateur IN et les SELECT imbriqués