Les fonctions
description
Transcript of Les fonctions
![Page 1: Les fonctions](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/1.jpg)
Les fonctions
![Page 2: Les fonctions](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/9.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/11.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/12.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/13.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/14.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/15.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/16.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/17.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/18.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/19.jpg)
Les fonctionsde groupes
(Aggregate functions)
![Page 20: Les fonctions](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/20.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/21.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/22.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/23.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/24.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/25.jpg)
Les fonctions de groupes ignorent les «NULL»◦ sauf COUNT(*)
COUNT(*)◦ retourne le nombre de rangées.
25
Valeurs NULL
![Page 26: Les fonctions](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/26.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/27.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/28.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/29.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/30.jpg)
Permet de sélectionner les groupes
30
HAVING
10,commis 10,gestion 20,commis 20,gestion
![Page 31: Les fonctions](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/31.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/32.jpg)
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](https://reader036.fdocuments.fr/reader036/viewer/2022062521/56816631550346895dd99aea/html5/thumbnails/33.jpg)
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