SQL Module1
SQL Module1
SQL Module1
Module n°1
Ordres SELECT Basiques
PSBDMF!
Programme de Formation de Supinfo
Exemples :
Elles peuvent être stockées sur différents types de support et format comme : des fiches papiers, des tableaux
Excel...ou des bases de données.
Une base de données est une collection organisée d'informations. Elle permet un accès et une administration
plus facile des données.
Pour administrer efficacement une base de données, il est nécessaire de posséder un système de
management de base de données (DBMS : Data Base Management System). Un DBMS permet de stocker,
modifier, supprimer et retrouver les données dans une base de données tout en assurant leur cohérence.
Les objectifs d'un DBMS sont les suivants :
- Indépendance physique
- Indépendance logique
- Manipulation des données par des non informaticiens
- Efficacité des données
- Administration cohérente des données
- Partageabilité des données
- Sécurité des données
- hiérarchique
- en réseau
- relationnelle
- objet relationnelle (la plus récente)
Le modèle relationnel a été proposé par le Dr E.F Codd en juin 1970 dans un article appelé " A relational model
of data for large shared data banks".
Le modèle relationnel est constitué de trois composants :
- une collection d'objets ou de relations (appelées aussi tables),
- un groupe d'opérateurs pour agir sur les tables,
- des règles d'intégrité des données.
Une contrainte d’intégrité est une assertion logique devant être vérifiée en permanence pour maintenir la base
de données dans un état fiable.
Un RDBMS (Relational Data Base Management System) est un DBMS gérant une collection de tables
(appelées aussi relations) dans lesquelles sont stockées et organisées les données.
Le SQL (Structured Query Language) est un langage de programmation Standard ANSI utilisé pour récupérer
et manipuler les données dans une base de données relationnelle.
Une base de données relationnelle contient une ou plusieurs tables (ou relations) bidimensionnelles qui
correspondent au moyen de stockage le plus basique. Une table contiendra des informations qui pourront être
retrouvées à tout moment.
Un champ (field) :
Intersection d'une ligne avec une colonne. Un champ ne peut contenir qu'une seule valeur . Sa valeur peut
être nulle (elle ne contiendra aucune valeur).
Les valeurs d’une clé étrangère correspondent aux valeurs d'une clé primaire dans une autre colonne d’une
table.
Les colonnes qui ne sont ni clé primaire ni clé étrangère contiennent des valeurs qui ne font pas référence à
des valeurs d’une autre colonne d’une table.
Du concept initial à la production, une base de données peut être développée en se basant sur les étapes de
développement d’un système d’information. Cette approche systématique permet de transformer (ou
retranscrire) les informations nécessaires d'une entreprise en une base de donnée opérationnelle.
- La stratégie et l'analyse :
Il s'agit d'étudier et d'analyser les besoins de l'entreprise. Les managers et les utilisateurs doivent être
interrogés afin de connaître les informations nécessaires et de pouvoir ainsi prévoir les spécifications
futures du système. Le modèle du système est créé en transformant les informations et les règles de
l'entreprise en une représentation graphique des besoins de l'entreprise.
- La conception (design) :
Les informations de l'étape précédente serviront à modéliser la base de données. La modélisation
finale est un diagramme relationnel représentant les détails de la structure de la base de données.
- La construction et la documentation :
Il s'agit de la construction d'un prototype du système (création d'une base de test et des objets requis),
de la rédaction d'une documentation d’aide explicative destinée aux utilisateurs finaux et d'un manuel
des opérations effectuées sur le système.
- La transition :
Le prototype est affiné afin qu'il corresponde au plus près aux exigences des utilisateurs. La
conversion des données existantes est réalisée ainsi que toutes les modifications nécessaires sur le
prototype.
- La production :
Le système est fournit aux utilisateurs, et une analyse de ses performances sera effectuée afin de
l'optimiser.
La représentation visuelle contribue dans une large mesure à l’établissement d’un dialogue constructif entre
tous les partenaires qui collaborent pour concevoir ensemble un système d’information.
Le modèle ER est une description du système d’information utilisant un formalisme de représentation précis,
simple et rigoureux, pour la description des données. Ce formalisme est normalisé au plan international par
l’ISO (International Standard Organisation) sous le nom de : modèle « Entité Relation ».
Les modèles sont utilisés pour communiquer, classer par catégories, décrire, spécifier, enquêter, élaborer,
analyser, imiter. Le but est de produire un modèle qui s'adapte à toutes ces utilisations, qui peut être compris
par les utilisateurs finaux et qui contient suffisamment de détails pour permettre au développeur de construire
la base de données.
Le modèle entité-relation (Entity Relationship ER) est utilisé couramment par les concepteurs de base de
données pendant la phase de stratégie et analyse.
- Les entités :
Une entité (ou objet) est un objet pourvu d’une existence propre et conforme aux choix de gestion.
Exemple : employé, département, ordres.
- Les attributs :
Un attribut (ou propriété) est une donnée élémentaire décrivant ou qualifiant une entité ou une relation
entre objets. Un attribut peut être obligatoire ou optionnel. Cette caractéristique est appelée "optionalité
de l’attribut" (optionnality). Exemple : nom de l’employé, salaire de l’employé, commission de
l’employé.
- Les relations :
Une relation est une association nommée entre deux ou plusieurs entités représentant l'optionalité et le
degrés de la relation. Il y a 3 types de degrés :
o 1-1 (un à un)
o 1-n (un à plusieurs)
o n-n (plusieurs à plusieurs)
La combinaison de ces composants dans le modèle ER aboutie à une carte graphique claire et précise de la
base de données permettant de définir l'éventail des informations requises.
Une entité est représentée par un rectangle avec les bords arrondis. Le nom de cette entité doit être singulier,
unique et noté en majuscule. Les synonymes ou raccourcis du nom de l’entité apparaîtront en majuscule dans
des parenthèses.
Un attribut est représenté par un nom singulier en minuscule. Un attribut obligatoire sera précédé du caractère
" * " et ne pourra pas contenir une valeur nulle. Un attribut optionnel sera précédé du caractère " o ". Un attribut
unique (unique identifier UID) est un attribut qui distingue de manière unique chaque occurrence de l'entité. On
désigne ce UID en le faisant précédé du caractère " # ". Si on doit rajouter un second UID le fera précédé des
caractères " (#) ".
Exemple :
EMPLOYEE (EMP)
# numéro
* nom
prénom
adresse
o e-mail
Une relation est représentée par une ligne reliant les deux entités. Chaque extrémité de la relation possède un
nom, une optionalité et un degré.
Le nom de la relation décris l'association entre les deux entités. Le nom doit être un verbe au participe passé.
Le type de la ligne de la relation représente le caractère optionnel de la relation. Une ligne pleine signifie que la
relation est obligatoire (exemple : un employé doit être assigné à un département), alors qu'une ligne
pointillée signifie que la relation est optionnelle (exemple : un département peut être assigné à un employé).
Une ligne peut être à la fois pleine et pointillée, dans ce cas la relation est obligatoire pour une entité et
optionnelle pour l'autre.
Exemple :
Un employé doit être assigné à un département, ce qui signifie que la relation « est assigné
à » entre les entités EMPLOYE et DEPARTEMENT est obligatoire et de degré 1 pour l’entité
EMPLOYE.
Un département peut être composé d’un ou plusieurs employé, ce qui signifie que la
relation « est composé de » entre les entités EMPLOYE et DEPARTEMENT est optionnelle et
de degré n pour l’entité DEPARTEMENT.
Un employé peut être dirigé par un autre employé, ce qui signifie que la relation réflexive
« est dirigé par » sur l’entité EMPLOYE est optionnelle et de degré n du côté de l’entité
EMPLOYE considéré comme l’employé dirigé.
Un employé peut être le manager d'un ou plusieurs employés, ce qui signifie que la relation
réflexive « est le chef de » sur l’entité EMPLOYE est optionnelle et de degré n du coté de
l’entité EMPLOYE considéré comme le manager.
DEPARTEMENT
EMPLOYE (EMP) (DEPT)
Est composé de
Entité source { peut | doit } nom de la relation {un et un seul | un à plusieurs} entité destination
Oracle 8I est une base de données relationnelle objet, elle possède donc un ORDBMS.
SQL (Structured Query Langage) est un langage proche de l'anglais qui permet à des utilisateurs sans notions
de développement de récupérer les données dont ils ont besoin.
Le SQL est utilisé pour définir, retrouver et manipuler les données sur un serveur. Le SQL contient de
nombreux opérateurs qui permettent de partitionner et de combiner les tables.
Le PL/SQL (Procedural Language / Structured Query Language) est un langage procédural qui permet
d'étendre les fonctions du SQL.
SQL*Plus est un environnement qui reconnaît et envoie des requêtes à exécuter au serveur.
SQL*Plus possède son propre langage. Il ne permet pas de modifier les données mais seulement de modifier
l'environnement de SQL*Plus et le formatage des données pour l’affichage.
SELECT what
FROM where ;
On exécute une requête SQL en la terminant par les caractères " ; " ou " / ". (Le caractère " / " permet aussi de
re-exécuter l'ordre SQL stocké dans le buffer).
Pour faciliter la relecture du code SQL, il est fortement conseillé de mettre chaque clause sur des lignes
différentes, de noter les mots réservés en majuscule et les autres mots en minuscule.
Un ordre SELECT sert à extraire des données stockées dans des colonnes issues de tables de la base de
données :
SELECT { * | column, …}
FROM table ;
Le caractère ‘ * ’ placé dans la clause SELECT signifie que toutes les colonnes de toutes les tables de la
clause FROM sont sélectionnées.
L'ordre des colonnes spécifiées dans la clause SELECT correspond à l'ordre des colonnes affichées dans les
résultats.
Les données de type numérique sont automatiquement alignées à droite, et les données de type alpha
numérique ou date automatiquement alignées à gauche.
Exemple :
SQL> SELECT *
2 FROM dept;
Exemple :
DEPTNO LOC
--------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON
4 rows selected.
Les opérateurs arithmétiques peuvent être utilisés pour effectuer des opérations sur les dates ou les nombres.
Les opérateurs arithmétiques disponibles sous Oracle sont les suivants :
Opérateur Description
+ Additionner
- Soustraire
* Multiplier
/ Diviser
Exemple :
Les opérateurs arithmétiques peuvent être utilisés dans toutes les clauses sauf la clause FROM. Les
opérateurs arithmétiques * et / sont prioritaires par rapport aux opérateurs arithmétiques + , – . Les
opérateurs de même priorité sont évalués de gauche à droite.
Exemple :
Des parenthèses peuvent être utilisées pour clarifier les calculs et modifier l'ordre d'évaluation.
Exemple :
Une valeur nulle est une valeur non assignée, inconnue ou inapplicable. Elle n'est pas équivalente à zéro ou à
un espace.
Exemple :
...
14 rows selected.
Æ La valeur de la commission des employés KING et BLAKE est nulle tandis que la
commission de l’employé TURNER est de 0.
Si une expression arithmétique contient une valeur nulle, alors le résultat de l'expression sera nul.
Exemple :
ENAME 12*SAL+COMM
---------- -----------
KING
Un alias de colonne est une chaîne de caractère qui se substitut au nom de la colonne pour le traitement et
l'affichage de la colonne.
L'utilisation des alias de colonne clarifiera et allègera les requêtes SQL lorsque ces dernières se
compliqueront. Il est fortement conseillé de les utiliser.
Si l'alias est composé d’une chaîne de caractères sans espace, il suffira juste de séparer le nom de la colonne
et l'alias par un espace ou bien d'utiliser le mot optionnel AS.
Exemple :
NAME
-------------
...
Pour respecter la casse de l’alias lorsque celui-ci ne compte qu’un seul mot, il suffit de la placer entre
guillemets.
Exemple :
Si l’alias est composé de plusieurs mots, il doit être placé entre guillemets.
Exemple :
La combinaison de caractères " || " est utilisée pour concaténer des colonnes ou des chaînes de caractères à
d'autres colonnes.
Exemple :
Password
---------------
SMITH20
ALLEN30
WARD30
JONES20
MARTIN30
BLAKE30
CLARK10
...
14 rows selected
Des chaînes de caractères peuvent être ajoutées dans une clause SELECT.
Ces chaînes sont constantes et s'affichent pour chaque ligne du résultat. Elles peuvent être du type caractère,
nombre ou date. Les chaînes de type caractères et date doivent être inclues entre simple côtes.
Une chaîne de caractère placée dans un ordre SELECT doit être mise entre simples côtes.
Exemple 1 :
Exemple 2 :
Localisation
-----------------------------------------
SMITH travaille au département 20
ALLEN travaille au département 30
WARD travaille au département 30
JONES travaille au département 20
MARTIN travaille au département 30
BLAKE travaille au département 30
CLARK travaille au département 10
...
14 rows selected
Le mot-clé DISCTINCT élimine les doublons dans le résultat de la requête lors de l'affichage.
Un doublon est un enregistrement qui se répète plusieurs fois.
Le mot-clé DISTINCT est utilisé dans la clause SELECT comme suit :
DEPTNO
---------
10
30
10
20
...
14 rows selected
Æ Certains départements apparaissent plusieurs fois dans le résultat. La requête affiche tous
les doublons.
DEPTNO
---------
10
20
30
3 rows selected .
SQL est un langage qui permet de communiquer avec le serveur Oracle depuis des outils ou des applications.
Le SQL Oracle contient des extensions. Quand un ordre SQL est entré, il est stocké dans une partie de la
mémoire appelée SQL buffer et y reste jusqu'à l'entrée d'un nouvel ordre.
SQL*Plus est un outil Oracle qui reconnaît et soumet les ordres SQL au serveur Oracle pour l'exécution.
SQL*Plus possède son propre langage.
Caractéristiques de SQL :
- SQL peut être utilisé par des utilisateurs ayant peu voir aucune expérience en programmation.
- SQL est un langage non procédural.
- SQL réduit le temps pour créer et maintenir les systèmes.
- SQL est un langage proche de l'anglais.
Caractéristiques de SQL*Plus :
- accepte les entrée "ad hoc" des ordres.
- accepte du code SQL provenant de fichiers.
- fournit un éditeur de lignes pour modifier les ordres SQL.
- Contrôle les caractéristiques de l'environnement.
- Formate les résultats d'une requête sous la forme d'un rapport.
- Accède à des bases de données locales et lointaines.
SQL SQL*Plus
- un langage pour communiquer avec le Serveur - reconnaît les ordres SQL et les envoie au serveur
Oracle pour accéder aux données Oracle
- un standard ANSI - une propriété Oracle pour interfacer l'exécution
d'ordres SQL
- Les mots clés n'ont pas d'abbréviation - Les mots clés peuvent avoir des abbréviations
- Les ordres SQL manipulent des données et la - Les commandes SQL*Plus gèrent l'environnement
définition des tables dans la base de données SQL*Plus
- Les ordres SQL sont placés dans le buffer - Les commandes SQL*Plus ne sont pas placées
dans le buffer
- nécessite un caractère de terminaison pour - ne nécessite pas de caractère de terminaison pour
exécuter immédiatement un ordre exécuter une commande immédiatement
Le module 1 du cours SQLP traite les commandes d’édition et les commandes manipulant les fichiers, tandis
que le module 2 du cours SQLP traite des commandes de formatage, d’interaction et d’environnement.
Pour se logger au serveur, il suffit de saisir son nom d'utilisateur (loggin), son mot de passe (password) et la
chaîne d'hôte (nom de service) dans la boite de dialogue qui s'ouvre automatiquement au lancement de
SQL*PLUS.
La commande DESCRIBE (ou DESC) est une commande propre à SQL*Plus qui affiche la structure de la table
passée en argument.
DESCRIBE table_name ;
Exemple :
La commande DESCRIBE affiche, pour chaque colonne de la table, l'existence ou non d'une contrainte NOT
NULL sur la colonne et le type de données de la colonne.
Exemple :
SQL> A job
Exemple :
SQL> C/job/sal
Exemple :
Exemple :
SQL> L
Exemple :
SQL> 1
1 SELECT ename, deptno, sal
Les commandes SQL*Plus manipulant les fichiers permettent de sauver, charger, exécuter des fichiers script.
Exemple :
Exemple :
Exemple :
SQL> @all_emp
ED[IT] [filename[.ext]] Permet d'éditer le contenu d'un fichier à l'aide d'un éditeur de texte.
Exemple :
SQL> ED all_emp
La clause WHERE restreint la requête aux enregistrements qui respectent sa ou ses conditions.
La clause WHERE correspond à une sélection : elle restreint les enregistrements (ou lignes).
value peut être une colonne, une constante ou une liste de valeurs.
Exemple :
4 rows selected
Æ Cette requête affiche le nom, le job et le numéro de département des employés dont la
fonction est "CLERK". Attention la comparaison de deux chaînes de caractères est sensible à
la casse (‘CLERK’ est différent de ‘Clerk’ ou encore ‘clerk’).
Æ Cette requête affiche le nom, la fonction et le numéro de département des employés dont
la fonction est "ANALYST".
Laboratoire Supinfo des Technologies Oracle Page 24 / 48
http://www.labo-oracle.com 07/03/2003
Ordres SELECT Basiques - Version 1.2
Opérateur Significations
= Egal à
> Inférieur à
>= Inférieur ou égal à
< Supérieur à
<= Supérieur ou égal à
<> Différent de
Ces opérateurs ne tiennent pas compte des valeurs nulles (NULL VALUE).
Exemple 1 :
ENAME SAL
------------ ----------
JONES 2975
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
FORD 3000
6 rows selected
Æ Cette requête retourne la liste des employés dont le salaire est strictement supérieur à
$2000 par mois.
Exemple 2 :
ENAME HIREDATE
-------- ----------
SMITH 17/12/80
ALLEN 20/02/81
WARD 22/02/81
JONES 02/04/81
BLAKE 01/05/81
CLARK 09/06/81
6 rows selected
Æ Cette requête retourne la liste des employés embauchés avant le 1er juillet 1981.
Exemple 3 :
DEPTNO LOC
-------- ------------
20 DALLAS
30 CHICAGO
40 BOSTON
3 rows selected
Æ Cette requête affiche les départements qui ne sont pas localisés à NEW YORK.
L'opérateur BETWEEN..AND permet d'afficher des enregistrements basés sur une tranche de valeurs
Les limites peuvent être des nombres, des caractères, des dates. Dans le cas où il s'agirait de caractères ou
de dates, les limites doivent être placées entre simples côtes.
L'opérateur BETWEEN est inclusif (ces limites sont incluses dans la tranche de valeurs possibles).
Le serveur Oracle traduit l'opérateur BETWEEN..AND comme la combinaison de deux conditions reliées par
l'opérateur AND : (a >= lower_limit) AND (a <= higher_limit)
Exemple 1 :
ENAME SAL
------------ ----------
WARD 1250
MARTIN 1250
TURNER 1500
ADAMS 1100
MILLER 1300
5 rows selected
Æ Cette requête affiche les employés dont le salaire est situé dans la tranche $1000 à $1500.
Exemple 2 :
ENAME
-----------------
SMITH
SCOTT
TURNER
3 rows selected
Æ Cette requête affiche les employés dont le nom est situé dans la tranche "S" à "W".
L'employé WARD n'apparaît pas car "WA" est plus grand que "W".
Exemple 3 :
ENAME HIREDATE
---------- --------
ALLEN 20/02/81
WARD 22/02/81
JONES 02/04/81
BLAKE 01/05/81
CLARK 09/06/81
5 rows selected.
Æ Cette requête affiche les employés embauchés entre le 1er janvier 1981 et le 31 juillet
1981. La date peut être écrite sous différent format dans l'expression de l'opérateur
BETWEEN (par exemple sous la forme 01-01-81).
3.2.3 L'opérateur IN
Les valeurs de la liste peuvent être des nombres, des caractères, des dates. Dans le cas où il s'agirait de
caractères ou de dates, les valeurs doivent être placées entre simples côtes.
Exemple :
5 rows selected
Æ Cette requête affiche les employés dont le numéro de manager est 7902 ou 7566 ou 7788.
L'opérateur LIKE permet de faire des recherches de caractères spécifiques dans une chaîne de caractères
données.
L'opérateur LIKE peut être utilisé comme un raccourci de plusieurs conditions BETWEEN..AND
Exemple :
ENAME
-----------
BLAKE
CLARK
ADAMS
3 rows selected
Æ Cette requête affiche les employés dont le troisième caractère de leur nom est un ‘A’ suivie
d'une chaîne de caractères n.
Le mot clé ESCAPE sert à rechercher un caractère spécial, comme ' % ' ou ' _ ' . L'opérateur LIKE considère
alors le caractère spécial comme un caractère quelconque.
Exemples :
ENAME
-----------
SGBD_LILI
SGBD_HELYOS
SGBD_WEAN
SGBD-ORACLE
4 rows selected
Æ Cette requête affiche les noms commençant par la chaîne de caractères "SGBD" suivis
d'un caractère quelconque. Dans ce cas, le caractère "_" est interprété comme un caractère
quelconque et non comme sa propre signification.
Voici la même requête avec l'utilisation du mot clé ESCAPE afin d'afficher les noms
commençant par la chaîne de caractères "SGBD_" :
ENAME
-----------
SGBD_LILI
SGBD_HELYOS
SGBD_WEAN
3 row selected
L'opérateur IS NULL permet d'afficher les enregistrements dont certains champs contiennent des valeurs nulle.
Une valeur nulle signifie que la valeur n'est pas disponible, non assignée, inconnue ou inapplicable.
Exemple :
ENAME MGR
---------------- -------------
KING
1 row selected
L'opérateur AND permet d'afficher les enregistrements qui vérifient toutes les conditions impliquées dans
l'expression.
WHERE condition1
AND condition2;
L'opérateur AND retourne TRUE si les deux conditions de l'expression logique sont toutes les deux TRUE.
Exemple :
2 rows selected.
Æ Cette requête affiche les employés dont la fonction est CLERK et dont le salaire est
supérieur ou égal à $1100.
3.3.2 L'opérateur OR
L'opérateur OR permet d'afficher les enregistrements qui vérifient au moins une des conditions impliquées
dans l'expression.
WHERE condition1
OR conditon2 ;
L'opérateur OR retourne TRUE si au moins une des deux conditions de l'expression logique est TRUE.
Exemple :
Æ Cette requête affiche les employés dont la fonction est CLERK ou dont le salaire est
supérieur ou égal à $1100.
L'opérateur NOT permet d'afficher les enregistrements qui ne vérifient pas la condition impliquée dans
l'expression.
L’opérateur NOT ne peut être utilisé qu’avec les opérateurs de comparaison IN, LIKE, BETWEEN et IS NULL.
Placement :
Exemple :
ENAME COMM
-------------------- ---------
ALLEN 300
WARD 500
MARTIN 1400
TURNER 0
4 rows selected.
Exemple :
2 rows selected.
La clause ORDER BY permet d'afficher les enregistrements sélectionnés dans l’ordre croissant ou décroissant.
Exemple :
2 FROM emp
3 ORDER BY hiredate;
Les enregistrements peuvent être triés sur une colonne qui n’a pas été sélectionnée dans la clause SELECT.
Le mot-clé DESC permet d'afficher les enregistrements sélectionnés dans l’ordre décroissant.
Les valeurs nulles sont affichées en premier lors d’un tri décroissant.
Exemple :
Les enregistrements peuvent être triés sur un alias de colonne ou une expression.
Exemple1 :
Exemple 2 :
Exemple 3 :
Exemple :
Æ Cette requête retourne le même résultat que l'exemple 2 : les enregistrements sont triés dans
l'ordre croissant sur le nom des l'employés.
Column1 et column2 peuvent être des noms de colonnes, des expressions, des alias ou des numéros de
colonnes.
Exemple :
Æ Les enregistrements sont triés dans l'ordre croissant par rapport au numéro de département et, à numéro de
département identique, dans l'ordre décroissant par rapport au salaire.
Une fonction SQL est un programme qui effectue une opération sur des données.
Les fonctions SQL peuvent être utilisées pour formater des dates et des nombres pour l’affichage, et pour
convertir des types de données de colonne.
Une fonction SQL peut accepter un à plusieurs arguments mais ne retourne toujours qu’une seule valeur.
Un argument d’une fonction single-row peut-être : une constante, une variable défini par l’utilisateur, une
colonne ou une expression.
Elles peuvent :
- retourner un type différent de son ou ses argument(s),
- être utilisées dans les clauses SELECT, WHERE et ORDER BY,
- s’imbriquer.
Les fonctions single-row sont classées en cinq types (type de données en entrée Æ type(s) de données en
sortie) :
- character function
character Æ character / number
- number function
number Æ number
- date function
date Æ date / number / character
- general function
Substitution des valeurs nulles d'une colonne par une valeur choisie (NVL).
Exécution de requêtes basées sur une condition IF-THEN-ELSE (DECODE).
Les fonctions opérant sur des caractères sont divisées en deux groupes :
- Les fonctions de conversion de la casse
- Les fonctions de manipulation des données
Les fonctions de conversion de la casse permettent d'afficher ou d'utiliser les données dans une casse
différente de celle qu'elles possèdent dans la table.
Exemple 1 :
Fonctions Résultats
INITCAP('Cours de SQL') Cours De Sql
LOWER('Cours de SQL') cours de sql
UPPER ('Cours de SQL') COURS DE SQL
Exemple 2 :
1 row selected.
La fonction TRIM est une nouvelle fonction intégrée dans Oracle8i qui fait le travail de LTRIM et RTRIM à la
fois.
Exemple 1 :
Fonctions Résultats
CONCAT ('Bon', 'jour') Bonjour
SUBSTR ('Bonjour',1,3) Bon
LENGTH ('Bonjour') 7
INSTR('Bonjour','j') 4
LPAD(sal, 10,'*') ******5000
RPAD(sal, 10,'*') 5000******
TRIM ('S' FROM 'SSMITH') MITH
Exemple 2 :
Si n est positif, l’arrondi se fera après la virgule. Si n est négatif l’arrondi se fera avant la virgule (à la dizaine
près par exemple). Par défaut n vaut 0.
Oracle possède un outil très pratique : une table nommée DUAL contenant une seule colonne DUMMY et
contenant un seul enregistrement ayant pour valeur X. Cette table peut servir a effectuer des calculs dans un
ordre SELECT où la clause FROM ne contient aucune table dont on ai réellement besoin. Comme la clause
FROM est obligatoire et qu'elle doit contenir au moins une table, c'est la table DUAL qui sera spécifiée
permettant ainsi de contourner le problème.
Exemple :
1 row selected.
Si n est positif, la troncation se fera après la virgule. Si n est négatif la troncation se fera avant la virgule (à la
dizaine près par exemple). Par défaut n vaut 0.
Exemple :
1 row selected.
Exemple :
4 rows selected.
Le format interne à la base (Internal format) est : century, year, month, day, hour, minutes, seconds
L’affichage par défaut est DD-MON-YY soit par exemple 14-JUI-80
Æ Une colonne nommée SYSDATE s'affiche, contenant la date du jour au format par défaut.
Les opérateurs arithmétiques peuvent être utilisés pour effectuer des calculs arithmétiques sur les dates.
Opérations possibles sur les dates :
Exemple :
2 FROM emp
3 WHERE deptno = 10;
ENAME WEEKS
---------- ---------
KING 830.93709
CLARK 853.93709
MILLER 821.36566
3 rows selected.
Exemple :
Fonctions Résultats
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194
ADD_MONTHS ('11-JAN-94',6) '11-JUL-94'
NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95'
LAST_DAY('01-SEP-95') '30-SEP-95'
ROUND('25-JUL-95','MONTH') '01-AUG-95'
ROUND('25-JUL-95','YEAR') '01-JAN-96'
TRUNC('25-JUL-95','MONTH') '01-JUL-95'
TRUNC('25-JUL-95','YEAR') '01-JAN-95'
Bien que la conversion implicite de type de données soit disponible, il est recommandé d'effectuer des
conversions de type de données explicites pour assurer la fiabilité des ordres SQL.
Assignement
De à
VARCHAR2 ou CHAR NUMBER
VARCHAR2 ou CHAR DATE
NUMBER VARCHAR2
DATE VARCHAR2
Evaluation d'expression
De à
VARCHAR2 ou CHAR NUMBER
VARCHAR2 ou CHAR DATE
Voici les différents formats de conversion de la fonction TO_CHAR avec des dates :
Le format doit être entouré de simples côtes. Le format est sensible à la casse. Il doit inclure des éléments de
format de date valides. Les noms des jours et des mois en entrée sont automatiquement "padded" avec des
blancs. Pour éliminer les blancs ou supprimer les zéros, il faut utiliser l'élément "fill mode".
Exemple :
ENAME HIREDATE
---------- -----------------
KING 17 November 1981
BLAKE 1 May 1981
CLARK 9 June 1981
JONES 2 April 1981
MARTIN 28 September 1981
ALLEN 20 February 1981
...
14 rows selected.
Voici les différents formats de conversion de la fonction TO_CHAR avec des nombres :
Le serveur Oracle affiche une chaîne de caractères composée de signes # à la place du résultat si la valeur
fournit en paramètres excède le nombre de digits du format. Le serveur Oracle arrondi la valeur décimale au
nombre d'espaces décimal du format.
Exemple
SALARY
--------
$3,000
Pour compter une différence sur les siècles, il faut utiliser le format de date RR plutôt que YY pour formater
l'année des dates.
Exemples :
La date '01/02/01' au format RR sera interprétée comme étant en 2001 alors qu'au format YY, elle sera
interprétée comme étant en 1901.
Utilisation du format RR :
La fonction NVL permet de substituer (convertir) les valeurs nulles d'une colonne par une valeur choisie.
NVL (expr1,expr2) :
Exemple :
Exemple 2 :
Æ La fonction NVL remplace les valeurs nulles de la colonne COMM par le nombre 0 afin de
pouvoir calculer le salaire annuel de ceux qui ne touchent pas de commission.
La fonction DECODE peut faire le travail d’un ordre IF-THEN-ELSE ou d'un ordre CASE.
La fonction DECODE décode l'expression après l'avoir comparé à chaque valeur search. Si l'expression est la
même que search, la valeur result est retournée. Si la valeur par défaut est omis et qu'aucune valeur search ne
correspond à l'expression, une valeur nulle est retournée.
Exemple 1 :
Exemple 2 :
6 rows selected.
Æ Cette requête affiche te taux de la taxe affectée à chaque employé du département numéro
30. Ce taux est calculé en fonction de la valeur tronquée du salaire divisé pas 1000.
Les fonctions single-row peuvent être imbriquées sur plusieurs niveaux. Les fonctions imbriquées sont
évaluées de l’intérieur vers l’extérieur.
Exemple :
ENAME NVL(TO_CHAR(MGR),'NOMANAGER')
---------- -----------------------------
KING No Manager
1 row selected.
Æ La fonction TO_CHAR convertit en CHAR la valeur contenue dans la colonne JOB afin
quel soit du même type que le deuxième argument de la fonction NVL.