Télécharger la présentation
1
Les fonctions
2
Introduction Syntaxe: Exemple : SUBSTR(nom, 1,4)
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;
3
Types de 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
4
Fonctions caractères 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;
5
Fonctions caractères retournant des caractères
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).
6
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.
7
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.
8
Fonctions de caractères retournant des nombres
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.
9
Exemple de fonctions caractères
Produire la liste des commis avec leur salaire SELECT INITCAP(Nom) Employé, ‘$’ || LPAD(salaire,6, ’*’) Salaire FROM employe WHERE LOWER(poste) = 'commis'; Employé Salaire Admin $**1100 Bertrand $***950 Parent $**1300 Rivest $***800
10
Fonctions numériques C'est l'ensemble des fonctions qui traitent
des 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;
11
Fonctions numériques FONCTION n,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)
12
Fonctions de conversions
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.
13
Formats de dates 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/93 TO_CHAR ( DATEMBAUCHE , 'DAY, "le" DD MONTH YYYY') retourne : mardi, le 16 mars 1993
14
Traitement des heures 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.
15
Les fonctions de dates 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’
16
Les fonctions de date Fonction Valeur retournée ADD_MONTHS
date : 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 La date est tronquée à la précision spécifiée par format.
17
Les formats de précision utilisés avec ROUND et TRUNC
Description CC,SCC Siècle YYYY,SYYYY YEAR, 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 Jour DAY, DY, D Date du premier jour de la semaine (un dimanche)
18
Autres fonctions NVL(Colonne,n)
La fonction NVL permet de remplacer une valeur nulle par une valeur donnée. Exemple: SELECT nom FROM employe WHERE salaire+ NVL(Comm,0)>100; SOUNDEX(ch) Le mot dont l’intonation ressemble à celle spécifiée. Exemple : WHERE SOUNDEX(nom) = SOUNDEX(‘bourie’); Retournera Bourry si présent dans la base de données car se prononce comme ‘bourie’
19
Les fonctions de groupes (Aggregate functions)
20
Fonctions de groupes Fonctions qui retournent une seule valeur pour un ensemble de rangées. Fonction de groupes Fonction de lignes SELECT SUM(salaire) FROM employe SELECT ROUND(salaire,-2) FROM employe
21
Fonction groupe et WHERE
WHERE spécifie quelles rangées doivent être retenues. SELECT SUM(salaire) FROM employe WHERE id_departement= 20;
22
Uniformité de la sélection
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;
23
Les principales fonctions de groupes
AVG la moyenne COUNT le nombre de lignes MAX le maximum MIN le minimum SUM la somme
24
DISTINCT et ALL DISTINCT ALL (par défaut) ALL DISTINCT
des valeurs identiques ne sont utilisées qu’un seul fois. ALL (par défaut) toutes les valeurs sont utilisées ALL DISTINCT
25
Valeurs NULL Les fonctions de groupes ignorent les «NULL» COUNT(*)
sauf COUNT(*) COUNT(*) retourne le nombre de rangées.
26
GROUP BY 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 employe GROUP BY id_departement
27
Valeur de groupe Le critère de formation de groupes peut être utilisé dans un résultat de SELECT SELECT id_departement, SUM(salaire) FROM employe GROUP BY id_departement; Dept 10 Dept 20 Dept 30 8750 10875 9400
28
GROUP BY avec critères multiples
Pour avoir le nombre d’employés par poste et par département: SELECT id_departement, poste, COUNT(*) FROM employe GROUP BY id_departement, poste
29
Fonction de groupe sans GROUP BY
Si l’on exécute l’instruction suivante: SELECT AVG(salaire) FROM employe; Puisqu’il n’y a pas de GROUP BY de spécifier, l’ensemble de référence sera tous les enregistrements de la table employe.
30
HAVING Permet de sélectionner les groupes 10,commis 10,gestion
31
Exemple SELECT id_departement, SUM(salaire) FROM employe GROUP BY
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;
32
WHERE et HAVING WHERE permet de spécifier les rangées à considérer.
HAVING permet de spécifier les groupes à considérer.
33
Exemple 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;
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.