1. Réalisé par Pr. Chiheb CHAIEB
Cours base de données
16/10/2022 SQL : LID & LMD & LDD
2. 1. Extraire des données à l’aide de
l’instruction SQL SELECT
2. Restreindre et trier les données
3. Utiliser des fonctions mono lignes afin de
personnaliser la sortie
4. Afficher des données agrégées à l’aide des
fonctions de groupe
5. Afficher des données de plusieurs tables
6. Utiliser des sous –interrogations
7. Utiliser des opérateurs ensemblistes
2
16/10/2022 SQL : LID & LMD & LDD
3. 8. Manipuler des données
3
9. Utiliser des instructions LDD pour créer et
gérer des tables
16/10/2022 SQL : LID & LMD & LDD
4. Chapitre 1
Extraire des données à l’aide de
l’instruction SQL SELECT
4
16/10/2022 SQL : LID & LMD & LDD
5. Décrire des fonctionnalités des
instructions SQL SELECT.
Exécuter des instructions SELECT de base.
16/10/2022 SQL : LID & LMD & LDD
7. SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
L’instruction SELECT identifie les colonnes
à afficher.
La clause FROM identifie la table
contenant ces colonnes.
16/10/2022 SQL : LID & LMD & LDD
10. Les instructions SQL ne distinguent pas les
majuscules des minuscules.
Les instructions SQL peuvent être écrites sur
une ou plusieurs lignes.
Les mots-clés ne peuvent pas être abrégés ou
répartis sur plusieurs lignes.
Les clauses sont généralement placées sur
des lignes distinctes.
16/10/2022 SQL : LID & LMD & LDD
11. Créez les expressions avec des données de
type nombre et date à l’aide d’opérateurs
arithmétiques
Opérateur Description
+ Ajouter
- Soustraire
* Multiplier
/ Diviser
16/10/2022 SQL : LID & LMD & LDD
12. R S T= R U S
salary + 300
SELECT last_name, salary,
FROM employees;
…
16/10/2022 SQL : LID & LMD & LDD
14. Une valeur NULL est une valeur qui n’est pas disponible,
pas affectée ou inconnue .
Une valeur NULL est différente d’un zéro ou d’un
espace.
SELECT last_name, job_id,salary,commission_pct
FROM employees;
…
…
16/10/2022 SQL : LID & LMD & LDD
15. Les expressions arithmétiques contenant une
valeur NULL renvoient une valeur NULL.
…
…
12*salary*commission_pct
SELECT last_name,
FROM employees;
16/10/2022 SQL : LID & LMD & LDD
16. Un alias de colonne :
Renomme un entête de colonne
Est utile avec les calculs
Suit immédiatement le nom d’une colonne (le
mot clé facultatif AS peut également être utilisé
entre le nom de la colonne et l’alias)
Nécessité des guillemets s’il contient des espaces
ou des caractères spéciaux (# $), ou s’il distingue
les majuscules des minuscules.
16/10/2022 SQL : LID & LMD & LDD
17. SELECT last_name "Name" , salary*12 "Annual Salary"
FROM employees;
comm
SELECT last_name AS name, commission_pct
FROM employees;
…
…
16/10/2022 SQL : LID & LMD & LDD
18. Un opérateur de concaténation :
Lie des colonnes ou des chaînes de caractères à
d’autres colonnes.
Est représenté par deux barres verticales (||).
Crée une colonne résultante qui est une
expression de type caractère.
SELECT
FROM
last_name||job_id AS "Employees"
employees;
…
16/10/2022 SQL : LID & LMD & LDD
19. Un littéral est un caractère, un nombre ou
une date inclus dans l’instruction SELECT.
Les valeurs littérales de type date et
caractère doivent être incluses entre
apostrophes.
Chaque chaîne de caractères est sortie une
fois pour chaque ligne renvoyée.
16/10/2022 SQL : LID & LMD & LDD
20. …
SELECT last_name ||' is a '||job_id
AS "Employee Details"
FROM employees;
16/10/2022 SQL : LID & LMD & LDD
21. Indiquer votre propre délimiteur de chaînes de
caractères. Exp : [], {}, () ou <>
Choisir n’importe quel délimiteur
Améliorer la lisibilité et la simplicité d’utilisation
q'[, it's assigned Manager Id: ]'
SELECT department_name ||
|| manager_id
AS "Department and Manager"
FROM departments;
…
16/10/2022 SQL : LID & LMD & LDD
22. Par défaut, les interrogations renvoient
toutes les lignes, y compris les lignes en
double.
SELECT department_id
FROM employees;
…
DISTINCT
SELECT
FROM
department_id
employees;
…
1
2
16/10/2022 SQL : LID & LMD & LDD
23. Utilisez la commande DESCRIBE pour afficher
la structure d’une table.
DESC[RIBE]nom_table
16/10/2022 SQL : LID & LMD & LDD
25. Ce chapitre vous a permis d’apprendre à :
Ecrire une instruction SELECT qui :
Renvoie toutes les lignes et colonnes
Renvoie des colonnes particulières d’une table.
Utilise des alias de colonne pour afficher des entêtes
plus évocateurs
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
16/10/2022 SQL : LID & LMD & LDD
27. Limiter les lignes extraites par une
interrogation.
Trier les lignes extraites par une
interrogation.
Utiliser l’esperluette d’interprétation
pour restreindre et trier la sortie lors de
l’exécution.
16/10/2022 SQL : LID & LMD & LDD
29. Restreindre les lignes renvoyées à l’aide la
clause WHERE:
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)];
La clause WHERE suit la clause FROM.
16/10/2022 SQL : LID & LMD & LDD
30. WHERE department_id = 90
SELECT employee_id, last_name, job_id, department_id
FROM employees
;
16/10/2022 SQL : LID & LMD & LDD
31. 'Whalen'
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = ;
Les chaînes de caractères et les dates sont
incluses entre apostrophes.
Les valeurs de type caractère distinguent les
majuscules des minuscules et les valeurs de
date sont sensibles au format.
Le format de date par défaut est DD-MM-RR
16/10/2022 SQL : LID & LMD & LDD
32. Operator Meaning
= Egal à
> Supérieur à
>= Supérieur ou égal à
< Inférieur à
<= Inférieur ou égal à
<> Non égal à
BETWEEN
...AND...
Entre deux valeurs (incluses)
IN(set) Correspond à une valeur
quelconque d’une liste
LIKE Correspond à un modèle de
caractère
IS NULL Est une valeur NULL
16/10/2022 SQL : LID & LMD & LDD
34. Utilisez la condition BETWEEN pour afficher
les lignes en fonction d’une plage de valeurs.
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500 ;
Limite inférieure Limite supérieure
16/10/2022 SQL : LID & LMD & LDD
35. Utilisez la condition d’appartenance IN afin
de tester les valeurs d’une liste.
SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201) ;
16/10/2022 SQL : LID & LMD & LDD
36. SELECTfirst_name
FROM employees
WHERE first_name LIKE 'S%' ;
Utilisez la condition LIKE pour effectuer des
recherches de chaînes de caractères valides via
l’utilisation de caractères génériques.
Les conditions de recherche peuvent contenir
soit des caractères littéraux, soit des nombres :
% indique un nombre quelconque de
caractères (zéro ou plus)
_ indique un caractère unique
16/10/2022 SQL : LID & LMD & LDD
37. Vous pouvez combiner des caractères de
mise en correspondance de modèle:
SELECT last_name
FROM employees
WHERE last_name LIKE '_o%' ;
Vous pouvez utiliser l’identificateur ESCAPE ()
pour rechercher les symboles % et _ proprement
dits.
16/10/2022 SQL : LID & LMD & LDD
38. Tester la présence de valeurs NULL avec
l’opérateur IS NULL.
manager_id IS NULL
SELECT last_name, manager_id
FROM employees
WHERE ;
16/10/2022 SQL : LID & LMD & LDD
39. Opérateur Signification
AND Renvoie TRUE si les deux
conditions sont vraies.
OR Renvoie TRUE si l’une des deux
conditions est vraie.
NOT Renvoie TRUE si la condition qui
suit est fausse.
16/10/2022 SQL : LID & LMD & LDD
40. L’opérateur AND nécessite que les deux conditions
soient vraies:
salary >=10000
job_id LIKE '%MAN%'
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE
AND ;
16/10/2022 SQL : LID & LMD & LDD
41. L’opérateur OR nécessite que l’une des deux
conditions soit vraie:
salary >=10000
job_id LIKE '%MAN%'
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE
OR ;
16/10/2022 SQL : LID & LMD & LDD
42. SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;
16/10/2022 SQL : LID & LMD & LDD
43. Vous pouvez utiliser des parenthèses pour remplacer des règles de
priorité
Operator Meaning
1 Arithmetic operators
2 Concatenation operator
3 Comparison conditions
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Not equal to
7 NOT logical condition
8 AND logical condition
9 OR logical condition
16/10/2022 SQL : LID & LMD & LDD
44. SELECT last_name, job_id, salary
OR
AND
FROM employees
WHERE job_id = 'SA_REP'
job_id = 'AD_PRES'
salary > 15000;
SELECT last_name, job_id, salary
FROM
WHERE
employees
(job_id = 'SA_REP'
job_id = 'AD_PRES')
OR
AND salary > 15000;
1
2
16/10/2022 SQL : LID & LMD & LDD
45. Triez les lignes extraites à l’aide de la clause
ORDER BY:
ASC : ordre croissant (par défaut)
DESC : ordre déscroissant
La clause ORDER BY vient en dernier dans
l’instruction SELECT:
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date ;
…
16/10/2022 SQL : LID & LMD & LDD
46. Trier par ordre décroissant :
Trier par alias de colonnes:
Triez selon plusieurs colonnes:
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ;
1
annsal
SELECT employee_id, last_name, salary*12
FROM employees
ORDER BY annsal ;
2
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
3
16/10/2022 SQL : LID & LMD & LDD
48. Utilisez les variables de substitution pour :
Stocker temporairement des valeurs, via
l’esperluette d’interprétation (&) et la double
esperluette d’interprétation (&&)
Utilisez des variables de substitution en
complément des éléments suivants :
Conditions WHERE
Clauses ORDER BY
Expressions de colonne
Noms des tables
Instructions SELECT entières
16/10/2022 SQL : LID & LMD & LDD
49. SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num ;
Utilisez une variable précédée d’une esperluette
(&) afin d’inviter l’utilisateur à saisir une valeur:
16/10/2022 SQL : LID & LMD & LDD
50. SELECT last_name, department_id, salary*12
FROM employees
WHERE job_id = '&job_title' ;
Utilisez des apostrophes pour les valeurs de type
date et caractère :
16/10/2022 SQL : LID & LMD & LDD
51. &condition
SELECT employee_id, last_name, job_id,&column_name
FROM employees
WHERE
ORDER BY &order_column ;
salary
salary > 15000
last_name
16/10/2022 SQL : LID & LMD & LDD
52. SELECT employee_id, last_name, job_id, &&column_name
FROM employees
ORDER BY &column_name ;
…
Utilisez la double esperluette (&&) si vous
souhaitez réutiliser la valeur de la variable sans
inviter chaque fois l’utilisateur à la saisir:
16/10/2022 SQL : LID & LMD & LDD
53. Ce chapitre vous a permis d’apprendre à :
Utiliser la clause WHERE pour restreindre les lignes
du résultat:
Utiliser les conditions de comparaisons
Utiliser les conditions BETWEEN, IN, LIKE et NULL.
Appliquer les opérateurs logiques AND, OR et NOT
.
Utiliser la clause order by pour trier les lignes de
résultat
Utiliser l’esperluette d’interprétation pour
restreindre et trier le résultat lors de l’exécution.
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, alias} [ASC|DESC]] ;
16/10/2022 SQL : LID & LMD & LDD
54. Chapitre 3
Utiliser des fonctions monolignes afin de
personnaliser la sortie
5
16/10/2022 SQL : LID & LMD & LDD
55. Décrire les divers types de fonction du
langage SQL.
Utiliser des fonctions de type caractère,
des fonctions numériques et des fonctions
de date dans des instructions SELECT.
Décrire l’utilisation des fonctions de
conversion.
5
16/10/2022 SQL : LID & LMD & LDD
56. Fonction
Entrée
arg 1
arg 2
arg n
La fonction exécute
une action
Résultat
Valeur de résultat
16/10/2022 SQL : LID & LMD & LDD
57. Fonctions monoligne Fonctions multiligne
Renvoie un résultat par ligne
5
Renvoie un résultat par
ensemble de lignes
Fonctions
16/10/2022 SQL : LID & LMD & LDD
58. Les fonctions monoligne :
Manipulent des données
Acceptent des arguments et renvoient une
seule valeur.
Opèrent sur chaque ligne renvoyée.
Renvoient un seul résultat par ligne.
Peuvent modifier le type de données
Peuvent être imbriquées
Acceptent des arguments pouvant être une
colonne ou une expression.
5
function_name [(arg1, arg2,...)]
16/10/2022 SQL : LID & LMD & LDD
61. Fonctions de type
caractère
Fonctions de manipulation de
La casse
LOWER
UPPER
INITCAP
Fonctions de manipulation
de caractères
CONCAT
SUBSTR
LENGTH
INSTR
LPAD | RPAD
TRIM
REPLACE
16/10/2022 SQL : LID & LMD & LDD
62. Ces fonctions convertissent la casse de
chaînes de caractères :
Function Result
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL Course') Sql Course
16/10/2022 SQL : LID & LMD & LDD
63. Afficher le numéro, le nom et le numéro de
département de l’employé Higgins:
SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'higgins';
SELECT employee_id, last_name, department_id
FROM employees
WHERE last_name = 'higgins';
no rows selected
16/10/2022 SQL : LID & LMD & LDD
64. Ces fonctions manipulent des caractères:
Function Result
CONCAT('Hello', 'World') HelloWorld
SUBSTR('HelloWorld',1,5) Hello
LENGTH('HelloWorld') 10
INSTR('HelloWorld', 'W') 6
LPAD(salary,10,'*') *****24000
RPAD(salary, 10, '*') 24000*****
REPLACE
('JACK and JUE','J','BL')
BLACK and BLUE
TRIM('H' FROM 'HelloWorld') elloWorld
16/10/2022 SQL : LID & LMD & LDD
66. ROUND : arrondit la valeur à une décimale donnée.
TRUNC : tronque la valeur à une décimale donnée.
MOD : renvoie le reste de la division.
Function Result
ROUND(45.926, 2) 45.93
TRUNC(45.926, 2) 45.92
MOD(1600, 300) 100
16/10/2022 SQL : LID & LMD & LDD
69. Pour tous les employés dont le poste est Sales
Representative (SA_REP), calculer le reste du
salaire après division par 5000 :
MOD(salary, 5000)
SELECT last_name, salary,
FROM employees
WHERE job_id = 'SA_REP';
16/10/2022 SQL : LID & LMD & LDD
70. Dans la base de données Oracle, les dates sont
stockées dans un format numériques interne :
siècle, année, mois, jour, heures, minutes et
secondes.
Le format de date par défaut est DD-MON-RR.
SELECT last_name, hire_date
FROM employees
WHERE hire_date < '01-FEB-88';
16/10/2022 SQL : LID & LMD & LDD
71. SYSDATE est une fonction qui renvoie :
La date
L’heure
Calcul arithmétique sur des dates:
Ajoutez un nombre à une date ou soustrayez un
nombre d’une date afin d’obtenir une date
résultante.
Soustrayez une date d’une autre afin de
déterminer le nombre de jours entre ces dates.
16/10/2022 SQL : LID & LMD & LDD
73. Function Result
MONTHS_BETWEEN Nombre de mois entre deux dates
ADD_MONTHS Ajout d’un mois à une date
NEXT_DAY Jour qui suit la date indiquée
LAST_DAY Dernier jour du mois
ROUND Date arrondie
TRUNC Date tronquée
16/10/2022 SQL : LID & LMD & LDD
77. Conversion implicite
de type de données
Conversion explicite
de type de données
Conversion de type
de données
16/10/2022 SQL : LID & LMD & LDD
78. Pour les affectations, le serveur Oracle peut
convertir automatiquement les types de données
suivants:
From To
VARCHAR2 or CHAR NUMBER
VARCHAR2 or CHAR DATE
L’expression hire_date>’01-Jan-90’ entraîne la
conversion implicite de la chaîne ’01-Jan-90’ en
date.
L’expression salary=‘2000’ entraîne la conversion
implicite de la chaîne ‘2000’ en valeur
numérique 2000.
16/10/2022 SQL : LID & LMD & LDD
80. Le modèle de format :
Doit être inclus entre apostrophes.
Distingue les majuscules des minuscules.
Peut inclure n’importe quel élément de format
de date valide.
Comporte un élément fm permettant de
supprimer les espaces de remplissage ou les
zéros de début.
Est séparé de la valeur de date par une virgule.
TO_CHAR(date, 'format_model')
16/10/2022 SQL : LID & LMD & LDD
81. Element Result
YYYY Année complète en 4 chiffres
YY Année en deux chiffres
YEAR Année en lettres (en Anglais)
MM Valeur à deux chiffres du mois
MONTH Nom complet du mois
MON Abréviation à trois lettres du mois
DY Abréviation à trois lettres du jour de la
semaine
DAY Nom complet du jour de la semaine
DD Valeur numérique du jour du mois
16/10/2022 SQL : LID & LMD & LDD
82. Les éléments d’heure formattent la partie heure de la
date:
Ajouter des chaînes de caractères en les incluant entre
guillemets:
Utilisez des suffixes de nombre pour écrire les nombres
en toutes lettres:
DD "of" MONTH 12 of OCTOBER
ddspth fourteenth
HH24:MI:SS AM 15:45:32 PM
16/10/2022 SQL : LID & LMD & LDD
84. 34
Voici quelques-uns des éléments de format que vous
pouvez utiliser avec la fonction TO_CHAR pour afficher
une valeur numérique sous forme de caractères:
Element Result
9 Représente un nombre
0 Force l’affichage d’un zéro
$ Insère un signe dollar
L Utilise le symbole monétaire local
. Affiche un point en tant que séparateur
décimal
, Affiche une virgule en tant que séparateur
de milliers
TO_CHAR(number, 'format_model')
16/10/2022 SQL : LID & LMD & LDD
86. Convertir une chaîne de caractères en format
numérique à l’aide de la fonction TO_NUMBER:
Convertir une chaîne de caractères en format
de date à l’aide de la fonction TO_DATE:
TO_NUMBER(char[], 'format_model')
TO_DATE(char[], 'format_model')
16/10/2022 SQL : LID & LMD & LDD
87. Les fonctions suivantes peuvent utiliser
n’importe quel type de données, y compris
les valeurs NULL:
NVL (expr1, expr2)
NVL2 (expr1, expr2, expr3)
NULLIF (expr1, expr2)
16/10/2022 SQL : LID & LMD & LDD
88. Convertit une valeur NULL en une valeur
réelle:
Les types de données pouvant être utilisés sont
les dates, les caractères et les valeurs
numériques.
Les types de données doivent correspondre :
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')
16/10/2022 SQL : LID & LMD & LDD
92. Ce chapitre vous a permis d’apprendre à:
Effectuer des calculs sur des données.
Modifier des données individuelles.
Manipuler la sortie de groupes de lignes.
Modifier des formats de date pour un affichage.
Convertir des types de données de colonnes.
Utiliser les fonctions NVL.
16/10/2022 SQL : LID & LMD & LDD