• Aucun résultat trouvé

Vous pouvez substituer la valeur nulle par une autre valeur avec la fonction NVL( )

N/A
N/A
Protected

Academic year: 2022

Partager "Vous pouvez substituer la valeur nulle par une autre valeur avec la fonction NVL( )"

Copied!
40
0
0

Texte intégral

(1)

Fonction NVL Fonction NVL

Vous pouvez substituer la valeur nulle par une autre valeur avec la fonction NVL( )

Afficher zéro à la place des valeurs vides dans la colonne mgr de la table EMP

Même type

(2)

Fonction DECODE Fonction DECODE

Facilite la recherche conditionnelle, jouant le rôle de CASE ou IF-THEN-ELSE

Syntaxe

DECODE (Colonne|Expression, recherche1, résultat1 [, recherche2, résultat2,…,]

[, Sinon])

(3)

Fonction DECODE Fonction DECODE

On souhaite consulter le nouveau salaire des

employés:

10% de plus pour les analystes

50% pour le président 20% pour les managers

IF job='ANALYSTE' THEN sal=sal*1.1 IF job='PRESIDENT' THEN sal=sal*1.5 IF job='MANAGER' THEN sal=sal*1.2 ELSE sal = sal

(4)

Imbrication des fonctions Imbrication des fonctions

mono mono - - lignes lignes

Le niveau d'imbrication des fonctions mono-lignes est illimité

Les fonctions imbriquées sont évaluées de l'intérieur vers l'extérieur

F3(F2(F1(paramètre1), paramètre2), paramètre3)

Etape 1

Etape 2

Etape 3

(5)

Imbrication des fonctions Imbrication des fonctions

mono mono - - ligne ligne

Remplacer les données vide du champ mgr

par "Pas de Manager"

(6)

Fonctions

Fonctions multi multi - - ligne ligne

Agissent sur des groupes de lignes Donnent un résultat par groupe

Un groupe peut-être une table ou un

ensemble de lignes dans une table

(7)

Fonctions

Fonctions multi multi - - ligne ligne

EMPEMP

“maximum “maximum salary

salary in in thethe EMP tableEMP table”” DEPTNO SAL

--- --- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250

MAX(SAL) --- 5000

(8)

Types de fonctions Types de fonctions

Variance de expr en ignorant les valeurs Null VARIANCE([DISTINCT|ALL]expr)

Somme de valeurs de expr, en ignorant les valeurs Null SUM ([DISTINCT|ALL]expr)

Valeur maximale de expr en ignorant les valeurs Null MAX([DISTINCT|ALL]expr)

Ecart-type de expr en ignorant les valeurs Null STDDEV ([DISTINCT|ALL]expr)

Valeur minimale de expr en ignorant les valeurs Null MIN([DISTINCT|ALL]expr)

Nombre de ligne où expr est différent de Null. *

comptabilise toutes les lignes sélectionnées y compris les doublons et les lignes Null

COUNT({*|[DISTINCT|ALL]expr})

Valeur moyenne de col en ignorant les valeurs Null AVG([DISTINCT|ALL]col)

Description Fonction

Conseils

Avec DISTINCT, la fonction ne prend en compte que les valeurs distinctes.

Avec ALL, la fonction tient compte de toutes les valeurs y compris les doublons

(9)

Fonctions AVG, SUM, Fonctions AVG, SUM, VARIANCE et STDDEV VARIANCE et STDDEV

S'utilisent avec des données numériques

Afficher le salaire moyenne et la somme des salaires

AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) --- --- --- --- 1400 1600 1250 5600 SQL> SELECT AVG(sal), MAX(sal),

2 MIN(sal), SUM(sal) 3 FROM emp

4 WHERE job LIKE 'SALES%';

(10)

Fonctions AVG, SUM, Fonctions AVG, SUM, VARIANCE et STDDEV VARIANCE et STDDEV

Attention aux valeurs nulles ignorées dans AVG

SQL> SELECT AVG(comm) 2 FROM emp;

AVG(COMM) ---

550

(11)

Fonctions AVG, SUM, Fonctions AVG, SUM, VARIANCE et STDDEV VARIANCE et STDDEV

Attention aux valeurs nulles ignorées dans AVG

SQL> SELECT AVG(NVL(comm,0)) 2 FROM emp;

AVG(NVL(COMM,0)) --- 157.14286

(12)

Fonctions MIN et MAX Fonctions MIN et MAX

S'utilisent avec tous types de données

Afficher le nom des employés qui apparaissent en premier et en dernier dans le classement alphabétique

SQL> SELECT MIN(hiredate), MAX(hiredate) 2 FROM emp;

MIN(HIRED MAX(HIRED --- --- 17-DEC-80 12-JAN-83

(13)

Fonction COUNT Fonction COUNT

Afficher le nombre de commissions pour le département 30

Ramène le nombre de lignes d'une table

Ramène le nombre de lignes non Null

(14)

Op Op é é rateurs Ensemblistes rateurs Ensemblistes

Toutes les lignes sélectionnées par la première requête moins les lignes sélectionnées dans la seconde requête

MINUS

Renvoie toutes les lignes ramenées par les deux requêtes, y compris les doublons

UNION ALL

Renvoie toutes les lignes distinctes ramenées par les deux requêtes UNION

Donne toutes les lignes communes aux deux requêtes INTERSECT

Résultat Opérateur

(15)

R R è è gles des op gles des op é é rateurs rateurs ensemblistes

ensemblistes

Les expressions citées dans la clause SELECT doivent

Être égales en nombre

Avoir des données de même type

Vous pouvez utiliser les fonctions explicites de conversion

Les doublons sont automatiquement éliminés

(sauf avec l'opérateur UNION ALL)

(16)

R R è è gles des op gles des op é é rateurs rateurs ensemblistes

ensemblistes

Les noms de colonnes apparaissent dans le résultat sont ceux de la première requête

Par défaut, le résultat est trié par ordre croissant (sauf avec l'opérateur UNION ALL)

Utilisez des parenthèses pour modifier la

séquence d'exécution

(17)

Sous Sous - - requêtes requêtes

Quels sont les salariés qui gagnent plus que Jones ?

Quels sont les salariés qui ont un salaire supérieur à celui de Jones ?

Requête initiale

? ?

Quel est le salaire de Jones ?

? ?

Sous-requête

(18)

Sous Sous - - requêtes requêtes

Syntaxe

SELECT select_liste FROM table

WHERE expr opérateur

(SELECT select_liste FROM table)

La sous-requête est exécutée une fois avant la requête principale

Le résultat de la sous-requête est utilisé par la

requête principale

(19)

Sous Sous - - requêtes requêtes

Conventions d'utilisations

Placez les sous-requêtes entre parenthèses Placez les sous-requêtes à droite de

l'opérateur de comparaison

N'ajoutez jamais la clause ORDER BY à une sous-requête

Une seule clause ORDER BY est autorisée par

requête

(20)

Types de

Types de sous sous - - requêtes requêtes

Sous-requête mono-ligne

Requête Initiale

Sous req.

Renvoie Renvoie

CLERK CLERK

Sous-requête multi-ligne

CLERK CLERK MANAGER MANAGER

Requête Initiale

Sous req.

Renvoie Renvoie

Sous-requête multi-colonne

Requête Initiale

(21)

Sous Sous - - requêtes requêtes mono mono - - ligne ligne

Ne ramènent qu'une seule ligne

Utilisent des opérateurs de comparaison mono-ligne

Différent de

<>

Inférieur ou égal à

<=

Inférieur à

<

Supérieur ou égal à

>=

Supérieur à

>

Egal à

=

Signification Opérateur

(22)

Sous Sous - - requêtes requêtes mono mono - - ligne ligne

Afficher les employés occupant le même poste que l'employé 7369 et gagnent plus que l'employé 7876

CLERK

1100

(23)

Sous Sous - - requêtes requêtes mono mono - - ligne ligne

Trouver les employés qui touchent un salaire supérieur à la moyenne

(24)

Sous Sous - - requêtes requêtes multi multi - - ligne ligne

Ramènent plusieurs lignes

Utilisent des opérateurs de comparaison multi-ligne

Compare la valeur à toutes les valeurs ramenées par la sous-requête

> ALL ⇒signifie supérieur au maximum

< ALL ⇒signifie inférieur au minimum

ALL

Compare la valeur à chaque valeur ramenée par la sous-requête

< ANY ⇒ signifie inférieur à au moins une des valeurs, donc < au maximum

> ANY ⇒ signifie supérieur à au moins une des valeurs, donc > au minimum

= ANY ⇒équivalent IN

ANY

Egal à un élément quelconque de la liste

IN

Description Opérateur

(25)

Sous Sous - - requêtes requêtes multi multi - - ligne ligne

Afficher les employés dont le salaire est inférieur à celui de

n'importe quel employé 'MANAGER'

(26)

Sous Sous - - requêtes requêtes multi multi - - ligne ligne

Afficher les employés dont le salaire est supérieur au

salaire moyen de tous les départements

(27)

Requêtes de jointure Requêtes de jointure

SELECT table1.column, table2.column FROM table1, table2

WHERE table1.column(+) = table2.column;

SELECT table1.column, table2.column FROM table1, table2

WHERE table1.column(+) = table2.column;

SELECT table1.column, table2.column FROM table1, table2

WHERE table1.column = table2.column(+);

SELECT table1.column, table2.column FROM table1, table2

WHERE table1.column = table2.column(+);

Demi-Demi-JointureJointure DroiteDroite

DemiDemi--JointureJointure GaucheGauche

(28)

Requêtes de jointure Requêtes de jointure

SQL> SELECT e.ename, d.deptno, d.dname 2 FROM emp e, dept d

3 WHERE e.deptno(+) = d.deptno 4 ORDER BY e.deptno;

ENAME DEPTNO DNAME

--- --- --- KING 10 ACCOUNTING CLARK 10 ACCOUNTING ...

40 OPERATIONS 15 rows selected.

(29)

Requête param

Requête param é é tr tr é é e e

Je souhaite que les critères des requêtes soient saisis pendant l’exécution.

...sal = ? …

… deptno = ? … .. ename = ? ...

Utilisateur

Utilisateur

(30)

Requête param

Requête param é é tr tr é é e e

SQL*Plus permet de stocker temporairement des variables

Simple en utilisant le caractère &

Double en utilisant les caractères &&

(31)

Requête param

Requête param é é tr tr é é e e

Afficher le nom des employés situés dans

un département saisi par l'utilisateur

(32)

Requête param

Requête param é é tr tr é é e e

SET VERIFY ON

Permet d'afficher le texte de la commande avant et après la saisie de l'utilisateur

Attention

Placez les valeurs de type caractère et date entre simples

quottes

(33)

Les variables de substitution Les variables de substitution

Peuvent remplacer

Une condition WHERE Une clause ORDER BY Un nom de colonne

Un nom de table

Une expression

Un ordre SELECT

(34)

Les variables de substitution Les variables de substitution

SQL> SELECT empno, ename, job, &column_name

2 FROM emp

3 WHERE &condition

4 ORDER BY &order_column;

Enter value for column_name: salsal

Enter value for condition: sal>=3000sal>=3000 Enter value for order_column: enameename

EMPNO ENAME JOB SAL --- --- --- --- 7902 FORD ANALYST 3000

(35)

Les variables de substitution Les variables de substitution

Spécifier un && si vous voulez réutiliser la valeur de la variable sans interroger

l'utilisateur à chaque fois

SQL> SELECT empno, ename, job, &&column_name

2 FROM emp

3 ORDER BY &column_name;

Enter value for column_name: deptnodeptno

EMPNO ENAME JOB DEPTNO --- --- --- --- 7839 KING PRESIDENT 10 7782 CLARK MANAGER 10 7934 MILLER CLERK 10 ...

(36)

D D é é finition des variables finition des variables utilisateur

utilisateur

Les commandes

ACCEPT lit une chaîne de caractère et la stocke dans une variable

DEFINE crée une variable et lui affecte une valeur

Lit une ligne saisie par l'utilisateur et la stocke dans une variable

ACCEPT

Affiche toutes les variables DEFINE

Affiche la variable, sa valeur et son type DEFINE variable

Crée une variable de type CHAR et lui affecte une valeur

DEFINE variable = valeur

Description Commande

(37)

Command ACCEPT Command ACCEPT

Affiche un message d'invité personnalisé et récupère une valeur saisie par

l'utilisateur

En définissant le type de donnée (CHAR, NUMBER et DATE)

En masquant parfois la saisie des mots de passe

Syntaxe

ACCEPT variable [Type] [FORMAT fmt] [PROMPT invite] [HIDE]

(38)

Command ACCEPT Command ACCEPT

ACCEPT dept PROMPT 'Provide the department name: ' SELECT *

FROM dept

WHERE dname = UPPER('&dept') /

Provide the department name: SalesSales DEPTNO DNAME LOC

--- --- --- 30 SALES CHICAGO

(39)

Commande DEFINE Commande DEFINE

Permet de changer la valeur d'une variable

Permet d'afficher la liste des variables définies

Pour définir vos variables dans

SQL*PLUS, modifier le fichier login.sql

¾ UNDEFINE permet de libérer une variable

(40)

Commande DEFINE Commande DEFINE

DEFINE DEPTNAME = "sales" (CHAR) DEFINE DEPTNAME = "sales" (CHAR) SQL> DEFINE deptname = sales

SQL> DEFINE deptname

SQL> SELECT * 2 FROM dept

3 WHERE dname = UPPER('&deptname');

Références

Documents relatifs

Exprime en fonction de x et sous la forme d'une expression simplifiée l'aire du rectangle

Exprime en fonction de x et sous la forme d'une expression simplifiée l'aire du rectangle

Un verre de forme conique a une hauteur de 17 cm et un rayon de la base de

Pour cela, il a à sa disposition deux planches de longueur 2m et de largeur 1m qui constitueront les côtés latéraux de la maie et une troisième planche de mêmes dimensions

Exprime en fonction de x et sous la forme d’une expression simplifiée l’aire du rectangle

Exprime en fonction de x et sous la forme d’une expression simplifiée l’aire du rectangle

Substituer une lettre par une valeur. 1 Avec

Calcule la distance de freinage d’un véhicule roulant à