les fonctions

33
Les fonctions

Upload: cissy

Post on 24-Feb-2016

26 views

Category:

Documents


0 download

DESCRIPTION

Les fonctions. Introduction. Syntaxe : nom_fonction (arg1, arg2, …) Exemple : SUBSTR(nom, 1,4) Ceci retourne les 4 premier caractères Frederic  Fred Une fonction peut être utilisée là où l’on peut utiliser un nom de colonne SELECT nom FROM employe WHERE LENGTH(nom) = 6;. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Les fonctions

Les fonctions

Page 2: Les fonctions

2

Introduction

Syntaxe:◦ nom_fonction (arg1, arg2, …)

Exemple : SUBSTR(nom, 1,4)◦ Ceci retourne les 4 premier caractères

Frederic Fred Une fonction peut être utilisée là

où l’on peut utiliser un nom de colonne

SELECTnom

FROMemploye

WHERELENGTH(nom) = 6;

Page 3: Les fonctions

Il y a deux grands types de fonctions :◦ Fonctions individuelles qui s’appliquent à

des données. Exemple : LENGTH(nomColonne)

◦ Fonctions de groupes basées sur des regroupements de lignes. Exemple: SUM(nomColonne)

Selon le type de données, les fonctions individuelles sont subdivisées en:◦ Fonctions numériques◦ Fonction de caractères

Retournant des nombres Retournant des caractères

◦ Fonction de dates◦ Autres

3

Types de fonctions

Page 4: Les fonctions

C'est l'ensemble des fonctions qui traitent des chaînes de caractères.

Il y en a une vingtaine. Exemples:

CHR(n) retourne le caractère dont le code ASCII est n en décimal.

SELECT CHR(75)FROM DUAL;

Retourne le caractère K.

Note : la table DUAL est une utilisée lors d’une interrogation sans table. Ex: SELECT sysdate FROM DUAL;

4

Fonctions caractères

Page 5: Les fonctions

Fonctions caractères retournant des caractères

FONCTION Valeur retournée

CHR(n) Caractère équivalent à la valeur ASCII n.

CONCAT(ch1,ch2) Concaténation de ch1 avec ch2.

INITCAP(ch) La première lettre de ch est capitalisée.

LOWER (ch) Transforme tous les caractères en minuscule.

LPAD(ch1,n[,ch2])Left padding( L=left pour gauche)

ch1 est précédé de k fois ch2 sur une longueur totale de n positions (k sera donc fonction de n, ch1 et ch2).

5

Page 6: Les fonctions

Fonctions caractères retournant des caractères

LTRIM (ch,[,chaîne])( L=left pour gauche)

La première lettre de ch est enlevée si elle existe dans la chaîne. Le procédé continue jusqu'à ce qu'on rencontre une lettre n'existant pas dans la chaîne.

REPLACE(ch,ch1,ch2) Remplace toute occurrence de ch1 dans ch par ch2.

RPAD(ch1,n[,ch2])R=right pour droite

ch1 est suivi de k fois ch2 sur une longueur totale de n positions (k sera donc fonction de n, ch1 et ch2).

RTRIM (ch,[,chaîne])(R=right pour droite)

La dernière lettre de ch est enlevée si elle existe dans la chaîne. Le procédé continue jusqu'à ce qu'on rencontre une lettre n'existant pas dans la chaîne.

V-6

Page 7: Les fonctions

Fonctions caractères retournant des caractères

SUBSTR(ch,m[,n])

Affiche n caractères de ch, commençant par le m ième caractère.

TRANSLATE(ch,ancienne,nouvelle)

Remplace toute occurrence de ancienne dans ch par nouvelle (sert à encoder des données)

UPPER(ch) Tous les caractères de ch sont mis en majuscule.

7

Page 8: Les fonctions

Fonctions de caractères retournant des nombres

FONCTION Valeur retournée

ASCII(ch) Valeur décimale du caractère.

LENGTH(ch) Longueur de ch en caractères.

INSTR(ch1,ch2¸[,n[,M]])

Position de la m ième occurrence de ch2 dans ch1, à partir du n iène caractère.

8

Page 9: Les fonctions

Produire la liste des commis avec leur salaire

SELECT INITCAP(Nom) Employé,

‘$’ || LPAD(salaire,6, ’*’) Salaire FROM

employe WHERE

LOWER(poste) = 'commis';

9

Exemple de fonctions caractères

Employé SalaireAdmin $**1100Bertrand $***950Parent $**1300Rivest $***800

Page 10: Les fonctions

C'est l'ensemble des fonctions qui traitentdes nombres

Il y en a une vingtaine. Exemples:

◦ ABS (n) : retourne la valeur absolue de n.◦ ROUND(n,m) : retourne la valeur de n arrondie à

10-m position. Par défaut, arrondi à l’unité (m=0)

◦ Valeur de m et correspondance: -1 : dizaine, -2 : centaine, -3 : milliers 1 : dixième, 2 : centième, 3 : millième

Exemple:◦ Produire la liste des employés avec leur salaire arrondi

aux milliers de dollars.

SELECT nom, ROUND ( salaire , -3 ) FROM employe;

10

Fonctions numériques

Page 11: Les fonctions

Fonctions numériques

FONCTIONn,m et x =

nombre

Valeur retournée

ABS(n) Valeur absolue de n.CEIL(n) L’entier

immédiatement supérieur ou égal à n.

FLOOR(n) L’entier immédiatement inférieur ou égal à n.

MOD(m,n) Le reste de la division de m par n (modulo).

POWER(m,n) m à la puissance n.

ROUND(n,[x]) n est arrondi au 10-x ième. Par défaut x=0 (arrondit à l'entier)

SIGN(n) Le signe (+ ou -) de n.

SQRT(n) La racine carrée de n, retourne NULL si n<0.

TRUNC(n,[x]) n est tronqué au 10-x ième. Par défaut x=0 (tronque à l'entier) 11

Page 12: Les fonctions

Il s'agit d'un ensemble de fonctions qui permettent de convertir des données d'un type à un autre.

Il y en a 9. Exemples:

◦ TO_CHAR( date , format ) converti une date en chaîne de

caractères.

◦ TO_DATE( char , format ) converti une chaîne de caractères

valides en date.

12

Fonctions de conversions

Page 13: Les fonctions

Dans les fonctions TO_CHAR et TO_DATE on peut utiliser 30 spécifications pour indiquer un format de date.

Les principales spécifications sont: YYYY,YYY,YY ou Y spécifie l'année de la

date avec 4,3,2 ou 1 chiffres.

MM spécifie le numéro du mois MONTH spécifie le nom du mois MON spécifie les 3 premières lettres du

nom du mois DAY spécifie le nom du jour DD spécifie le numéro de la journée

dans le mois "texte" Le texte sera reproduit tel quel.

Exemples:TO_CHAR ( date_embauche, 'DD/MM/YY' )

retourne : 16/03/93TO_CHAR ( DATEMBAUCHE , 'DAY, "le" DD MONTH YYYY')

retourne : mardi, le 16 mars 1993

13

Formats de dates

Page 14: Les fonctions

L'heure est une donnée qui fait partie de la date.

Lors d’une conversion automatique l’heure n’est pas affichée.

Les spécifications à utiliser pour manipuler les heures sont:

HH pour l'heure de 1 à 12, HH24 pour l'heure de 1 à 24, MI pour les minutes de 0 à 59, SS pour les secondes de 0 à 59.

Exemples: TO_CHAR ( date , 'DD/MM/YY

HH24:MI:SS‘ ) Retourne, par exemple :

17/03/11 14:08:16

L’insertion d’une date avec SYSDATE inclut l’heure à laquelle s’est fait l’enregistrement.

14

Traitement des heures

Page 15: Les fonctions

C'est l'ensemble des fonctions qui traitent des dates.

Il y en a une dizaine.

Exemples:◦ ADD_MONTHS (date, n)

ajoute n mois à la date.

◦ LAST_DAY (date) retourne la date du dernier jour du

mois de la 'date'.

SELECT LAST_DAY(’01/01/2011’) FROM DUAL;Retourne le ’31/01/2011’

15

Les fonctions de dates

Page 16: Les fonctions

Les fonctions de date

Fonctiondate : une date

Valeur retournée

ADD_MONTHS(date, n_mois)

Ajoute n mois à la date et retourne une date comme résultat.

LAST_DAY(date)

Dernier jour du mois de la ‘date’.

NEXT_DAY(date,char)

Calcule la date du premier jour de la semaine indiqué par char qui suit la date. Char doit correspondre à un jour de la semaine (exemple ‘lundi’).

SYSDATE Date courante du système.ROUND(date,

[,format])

La date est arrondie jusqu'à la précision spécifiée par format.

TRUNC(date,

[,format])

La date est tronquée à la précision spécifiée par format.

16

Page 17: Les fonctions

Les formats de précision utilisés avec ROUND et TRUNC

Précision DescriptionCC,SCC SiècleYYYY,SYYYYYEAR, SYEAR,YYY, YY,Y

Année

Q Trimestre (Quart de l'année: de 1 à 4)Janvier à mars = 1

MONTH, MON, MM Mois (arrondi à partir du 16e jour)

DDD, DD, J JourDAY, DY, D Date du premier jour

de la semaine (un dimanche)

17

Page 18: Les fonctions

18

Autres fonctionsNVL(Colonne,n) La fonction NVL permet de

remplacer une valeur nulle par une valeur donnée.Exemple:

SELECT nomFROM employeWHERE salaire+ NVL(Comm,0)>100;

SOUNDEX(ch) Le mot dont l’intonation ressemble à celle spécifiée.

Exemple :SELECT nomFROM employeWHERE SOUNDEX(nom) = SOUNDEX(‘bourie’);

Retournera Bourry si présent dans la base de données car se prononce comme ‘bourie’

Page 19: Les fonctions

Les fonctionsde groupes

(Aggregate functions)

Page 20: Les fonctions

Fonctions qui retournent une seule valeur pour un ensemble de rangées.

Fonction de groupes

Fonction de lignes

20

Fonctions de groupes

SELECT SUM(salaire) FROM employe

SELECT ROUND(salaire,-2) FROM employe

Page 21: Les fonctions

WHERE spécifie quelles rangées doivent être retenues.

21

Fonction groupe et WHERE

SELECT SUM(salaire)FROM employeWHERE id_departement= 20;

Page 22: Les fonctions

Un SELECT ne peut retourner des résultats individuels et des résultats de fonction de groupes

La requête suivante engendrera une erreur:

SELECT nom, SUM(salaire)FROM employe;

22

Uniformité de la sélection

Page 23: Les fonctions

AVG la moyenne COUNT le nombre de

lignes MAX le maximum MIN le minimum SUM la somme

23

Les principalesfonctions de groupes

Page 24: Les fonctions

DISTINCT◦ des valeurs identiques ne sont

utilisées qu’un seul fois. ALL (par défaut)

◦ toutes les valeurs sont utilisées

24

DISTINCT et ALL

ALL

DISTINCT

Page 25: Les fonctions

Les fonctions de groupes ignorent les «NULL»◦ sauf COUNT(*)

COUNT(*)◦ retourne le nombre de rangées.

25

Valeurs NULL

Page 26: Les fonctions

GROUP BY permet de former des groupe de rangées

Les fonctions de groupes retournent une valeur pour chaque groupe

Pour avoir la somme des salaires, par département :

SELECT SUM(salaire)FROM employeGROUP BY id_departement

26

GROUP BY

Page 27: Les fonctions

Le critère de formation de groupes peut être utilisé dans un résultat de SELECT

SELECTid_departement,SUM(salaire)

FROM employe

GROUP BY id_departement;

27

Valeur de groupe

Dept 10 Dept 20 Dept 30

8750 10875 9400

Page 28: Les fonctions

Pour avoir le nombre d’employés par poste et par département:

SELECTid_departement,poste,COUNT(*)

FROMemploye

GROUP BYid_departement, poste

28

GROUP BYavec critères multiples

Page 29: Les fonctions

Si l’on exécute l’instruction suivante:SELECT

AVG(salaire)FROM

employe;

Puisqu’il n’y a pas de GROUP BY despécifier, l’ensemble de référence

seratous les enregistrements de la tableemploye.

29

Fonction de groupe sans GROUP BY

Page 30: Les fonctions

Permet de sélectionner les groupes

30

HAVING

10,commis 10,gestion 20,commis 20,gestion

Page 31: Les fonctions

Obtenir le numéro du département la somme des salaires pour les départements dont la somme des

salaires est > $9 000

SELECT id_departement, SUM(salaire)

FROM employe

GROUP BY id_departement

HAVING SUM(salaire) > 9000;

31

Exemple

Page 32: Les fonctions

WHERE permet de spécifier les rangées à considérer.

HAVING permet de spécifier les groupes à considérer.

32

WHERE et HAVING

Page 33: Les fonctions

Obtenir la somme des salaires des employés (excluant les commis)

pour les départements dont la somme des salaires (excluant les commis) est > $8,000.

SELECT id_departement, SUM(salaire)

FROM employe

WHERE poste != ‘commis’

GROUP BY id_departement

HAVING SUM(salaire) > 8000;

33

Exemple