Aller au contenu

Introduction aux requêtes

Une requête en bases de données est une instruction ou une tâche à exécuter, généralement écrite en SQL (Structured Query Language), qui permet de communiquer avec un système de gestion de bases de données (SGBD) afin d’y effectuer une action précise.

Une requête sert principalement à :

  • interroger la base de données pour consulter des informations ;
  • manipuler les données (ajouter, modifier ou supprimer) ;
  • définir ou modifier la structure des données (tables, contraintes, index) ;
  • gérer les droits et la sécurité des accès.

En résumé, une requête est le moyen par lequel un utilisateur ou une application pose une question ou donne une instruction à la base de données, et obtient en retour soit un résultat, soit une confirmation d’exécution.

Requête de base

La forme la plus courante d’une requête est la requête SELECT, qui permet de récupérer des données selon des critères précis (filtres, tris, regroupements).

La formule la plus simple sous Oracle est :

SELECT quoi 
FROM objet;

On demande d'extraire une information d'un objet sauvegardé (une table, une vue, etc.).

Lorsqu'on désire extraire des informations du système (la date du jour, faire un calcul, la langue dusystème, etc.), on utilise l'objet DUAL.

Exemple pour obtenir la date du système :

SELECT sysdate 
FROM dual;

Fonctions système

Il existe plusieurs fonctions pré-programmées qu'on peut utiliser sur les informations à extraire.

En voici quelques unes utiles :

1️⃣ Fonctions de date et heure

Fonction Description Exemple
SYSDATE Date et heure actuelles du serveur SELECT SYSDATE FROM dual;
CURRENT_DATE Date et heure actuelles selon le fuseau de la session SELECT CURRENT_DATE FROM dual;
ADD_MONTHS(date, n) Ajoute n mois à une date SELECT ADD_MONTHS(SYSDATE, 3) FROM dual;
MONTHS_BETWEEN(date1, date2) Nombre de mois entre deux dates SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2026-01-01','YYYY-MM-DD')) FROM dual;
NEXT_DAY(date, 'jour') Prochain jour de la semaine après une date SELECT NEXT_DAY(SYSDATE, 'FRIDAY') FROM dual;
LAST_DAY(date) Dernier jour du mois de la date SELECT LAST_DAY(SYSDATE) FROM dual;
TRUNC(date, format) Tronque la date selon le format (jour, mois, année…) SELECT TRUNC(SYSDATE,'MM') FROM dual;
ROUND(date, format) Arrondit la date selon le format SELECT ROUND(SYSDATE,'YYYY') FROM dual;
EXTRACT(part FROM date) Extrait une partie de la date (YEAR, MONTH, DAY) SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;
TO_DATE(str, format) Convertit une chaîne en date selon le format SELECT TO_DATE('2026-01-06','YYYY-MM-DD') FROM dual;
TO_CHAR(date, format) Convertit une date en chaîne selon le format SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;

2️⃣ Fonctions de chaînes de caractères

Fonction Description Exemple
LENGTH(str) Longueur de la chaîne SELECT LENGTH('Oracle') FROM dual;
SUBSTR(str, start, [length]) Sous-chaîne à partir d’une position SELECT SUBSTR('Oracle',2,3) FROM dual;
INSTR(str, substring, [start], [occurrence]) Position d’une sous-chaîne SELECT INSTR('Oracle SQL','SQL') FROM dual;
UPPER(str) Conversion en majuscules SELECT UPPER('oracle') FROM dual;
LOWER(str) Conversion en minuscules SELECT LOWER('ORACLE') FROM dual;
CONCAT(str1, str2)
NOTE: L'opérateur || permet aussi la concaténation de chaînes.
Concatène deux chaînes SELECT CONCAT('Oracle',' SQL') FROM dual;
ou
SELECT 'Oracle' || ' SQL' FROM dual;
LTRIM(str, set) Supprime caractères à gauche SELECT LTRIM(' Oracle') FROM dual;
RTRIM(str, set) Supprime caractères à droite SELECT RTRIM('Oracle ') FROM dual;
REPLACE(str, old, new) Remplace une sous-chaîne SELECT REPLACE('Oracle SQL','SQL','PL/SQL') FROM dual;
TRIM([BOTH|LEADING|TRAILING] trim_char FROM str) Supprime les caractères spécifiés SELECT TRIM(BOTH ' ' FROM ' Oracle ') FROM dual;

3️⃣ Fonctions numériques

Fonction Description Exemple
ROUND(number, [decimals]) Arrondit un nombre à x décimales SELECT ROUND(123.456, 2) FROM dual;
TRUNC(number, [decimals]) Tronque un nombre à x décimales SELECT TRUNC(123.456, 1) FROM dual;
CEIL(number) Retourne l'entier supérieur ou égal SELECT CEIL(12.3) FROM dual;
FLOOR(number) Retourne l'entier inférieur ou égal SELECT FLOOR(12.7) FROM dual;
MOD(number, divisor) Reste de la division SELECT MOD(10,3) FROM dual;
POWER(number, exponent) Élève un nombre à une puissance SELECT POWER(2,3) FROM dual;
ABS(number) Valeur absolue SELECT ABS(-42) FROM dual;

Pour ce qui est des calculs de base, Oracle peut effectuer les calculs en utilisant les opérateurs :

Opérateur Description Exemple SQL Résultat
+ Addition SELECT 10 + 5 FROM DUAL; 15
- Soustraction SELECT 10 - 3 FROM DUAL; 7
* Multiplication SELECT 4 * 6 FROM DUAL; 24
/ Division SELECT 20 / 4 FROM DUAL; 5

Sans oublier la priorité des opérateurs :

  1. Les parenthèses
  2. Multiplication et division
  3. Addition et soustraction

Exemples :

(40+5)/9 = 45/9 = 5

(2+3)*(8-2) = 5*6 = 30

(2+3)*8-2 = 5*8-2 = 40-2 = 38

6/(10-7)*10+5 = 6/3*10+5 = 2*10+5 = 20+5 = 25


4️⃣ Fonctions de conversion

Fonction Description Exemple
TO_CHAR(number, format) Convertit un nombre en chaîne selon un format SELECT TO_CHAR(12345, '9,999') FROM dual;
TO_NUMBER(str, format) Convertit une chaîne en nombre SELECT TO_NUMBER('12345','99999') FROM dual;
TO_DATE(str, format) Convertit une chaîne en date SELECT TO_DATE('06-01-2026','DD-MM-YYYY') FROM dual;
TO_TIMESTAMP(str, format) Convertit une chaîne en timestamp SELECT TO_TIMESTAMP('06-01-2026 14:30:00','DD-MM-YYYY HH24:MI:SS') FROM dual;

Lien vers la rubrique d'aide pour la conversion de dates avec les formats possibles