SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias...

Preview:

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

Recommended