0% ont trouvé ce document utile (0 vote)
115 vues88 pages

SQL: Lid

Le document présente un cours sur le langage SQL. Il définit les concepts clés du langage comme les requêtes simples avec la clause SELECT, les jointures, les fonctions et les opérateurs. Le document est découpé en plusieurs parties et contient de nombreux exemples.

Transféré par

Banani Ayoub
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
115 vues88 pages

SQL: Lid

Le document présente un cours sur le langage SQL. Il définit les concepts clés du langage comme les requêtes simples avec la clause SELECT, les jointures, les fonctions et les opérateurs. Le document est découpé en plusieurs parties et contient de nombreux exemples.

Transféré par

Banani Ayoub
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 88

Réalisé par : Mme YEKKEN Sabrine

Version : 2012 -2013


59

Objectifs du cours.
1. Définir le LID
2. Savoir formuler des Requêtes simples « SELECT »
3. Distinguer les fonctions mono lignes/multi lignes
4. Définir les Jointures, les Opérateurs ensemblistes et les
sous-interrogations
60

1ère Partie :
Les Requêtes simples « la clause SELECT »

Objectifs de la partie :

Définir «LID», savoir sélectionner des


colonnes avec ou sans doublons, avec ou sans
des conditions connaître les Expressions
arithmétiques, la Valeur « NULL », les Alias
de colonne, les opérateurs logique et ceux de
comparaison.
61

LID. (1/2)

Le langage LID permet, comme son nom l’indique, d’interroger


une BD. Il sert à rechercher, extraire, trier, mettre en forme des
données et calculer d’autres données à partir des données
existantes.

La structure de base d’une interrogation est formée des 3 clauses


suivantes :

SELECT *|<liste champ(s)> FROM <nom_table>


WHERE <condition(s)> ;
62

LID. (2/2)

▪ La clause SELECT : indique les colonnes à récupérer. (ou


encore des champs projetés).
▪ La clause FROM indique le nom de la ou des table(s)
impliquée(s) dans l’interrogation.
▪ La clause WHERE correspond aux conditions de sélection
des champs.
▪ Chaque nom de champ ou de table est séparé par une
virgule.
63

Sélection des colonnes. Toutes les colonnes

SELECT * Affiche tous les champs


de la table
FROM employees;

Résultat:
64

Sélection des colonnes. Une/plusieurs colonnes

Affiche les champs :


SELECT first_name, last_name « last_name » et
FROM employees; « first_name »

Résultat:
65

Expressions arithmétiques. Définition

i. Une expression contient des données de type NUMBER,


DATE et des opérateurs arithmétiques.

Opérateur Description
+ Addition
- Soustraction
* Multiplication
/ Division
66

Expressions arithmétiques. Exemple 1

SELECT min_salary + max_salary , min_salary - max_salary,


min_salary * max_salary, min_salary / max_salary
FROM jobs;

Résultat:
67

Expressions arithmétiques. Exemple 2

Ecrire la requête qui permet d’afficher le nom, prénom de


tous les employés ainsi que leur salaire annuel avec une
augmentation de 50 dinars par mois.
68

Valeur «NULL». Définition

▪ NULL est une valeur qui n’est pas disponible, non affectée ou inconnue.
▪ NULL est différent de zéro, espace ou chaîne vide

Exemple 1:

SELECT employee_id, commission_pct


FROM employees ;

Résultat:
69

Valeur «NULL». Dans les expressions arithmétique.

Exemple 2 :

SELECT Employee_id, (1+commission_pct)*salary


FROM employees;

Résultat:
70

Alias de colonne. (1/2)

▪ Renomme un en-tête de colonne


▪ Suit le nom de colonne
▪ Peut utiliser le mot clé « as »
▪ Doit obligatoirement être inclus entre guillemets s’il
contient des espaces, des caractères spéciaux ou s’il y a
des majuscules et des minuscules
71

Alias de colonne. Exemple (2/2)

SELECT first_name as nom, last_name prenom


FROM employees;

Résultat:

SELECT first_name as "nom de l’employee", last_name "prenom de l’employee"


FROM employees;

Résultat:
72

Opérateur de concaténation.
▪ Concatène des colonnes et/ou des chaines de caractères
▪ Est représenté par le symbole ||
Exemple:

SELECT ' le nom est ' || first_name || ', le prénom est '|| last_name as "nom et
prenom de l’employe"
FROM employees;

Résultat:
73

Eliminer les doublons


▪ le mot-clé DISTINCT élimine les doublons.

Exemple:

SELECT DISTINCT(commission_pct)

FROM employees;

Résultat:
74

Restriction avec la clause « WHERE »


Syntaxe :
SELECT<nom_des colonnes> FROM <nom_de_la_table >
WHERE <conditions>;

Exemple: liste des employés du département 20

SELECT last_name , first_name FROM employees


WHERE department_id=20;

Résultat:
75

Opérateurs de comparaison. (1/2)

OPERATEUR DESCRIPTION
= Egal à
< Inférieur à
<= Inférieur à ou égal
> Supérieur à
>= Supérieur à ou égale à
<> Ou != Différent
BETWEEN val1 AND val2 val1 <= val <= val2

In (liste de valeurs) Valeur de la liste


LIKE Comme
( _ :un caractère, %=plusieurs caractères)

IS NULL Correspond à une valeur NULL


76

Opérateurs logiques. (2/2)

OPERATEUR DESCRIPTION

AND Retourne TRUE si les deux conditions sont VRAIES

Retourne TRUE si au moins une des conditions est


OR
VRAIE
Inverse la valeur de la condition
NOT TRUE si la condition est FAUSSE
FALSE si la condition est VRAIE
77

Trier avec « ORDER by ». Définition

Triez les lignes selon un ordre bien précis avec la clause


ORDER BY:

▪ ASC : ordre croissant (par défaut)


▪ DESC : ordre décroissant

Remarque: La clause ORDER BY vient en dernier dans


l’instruction SELECT
78

Trier avec « ORDER by ». Exemple

SELECT last_name, job_id, department_id, hire_date


FROM employees
ORDER BY hire_date DESC;

Résultat:
79

Exercices d’applications. (1/2)

( nous allons utilisé la table « employees » sous le schéma HR )

▪ Afficher la liste de tous les employés.


▪ Afficher le nom, le prénom, la date d’embauche de tous les employés et
renommer les colonnes comme suit: « nom de l’employe », « prenom de
l’employe » et « date dembauche »
▪ Afficher le nom et le prénom des employés triés par date d’embauche.
▪ Afficher les employés qui ont été embauché au cours de l’année 1990.
▪ Afficher la liste des employés dont le salaire est > 2800.
▪ Afficher la liste des employés des départements 10, 30 et 50.
80

Exercices d’applications. (2/2)

▪ Afficher la liste des employés dont le salaire entre 4000 et 6000 du


département 20
▪ Afficher la liste des employés dont la commission_pct est NULL.
▪ Afficher la liste des employés dont le nom commence par la lettre ‘A’
▪ Afficher la liste des employés dont le prénom comporte la lettre ‘s’
▪ Afficher la liste des employés dont la deuxième lettre du nom est ‘i’
▪ Afficher la liste des employés embauchés pendant les années entre 1986
et 1990
▪ Afficher la liste des employés dont le job est différent de 'CLERK‘ ou
'MANAGER'
2ème Partie : Les Fonctions Mono lignes

Objectifs de la partie:

Définir et savoir utiliser les :


i. Fonctions de caractères
ii. Fonctions de manipulation des caractères
iii. Fonctions de manipulation des dates
iv. Fonctions numériques
v. Fonctions de conversions
vi. Autres fonctions
82

Fonctions de caractères. Conversion Minuscule/Majuscule(1/2)

Il existe trois fonctions principales:

▪ LOWER : convertir les caractères « M » en « m »


▪ UPPER : convertir les caractères « m » en « M »
▪ INITCAP : convertir l’initiale de chaque mot en « M » et les
caractères suivants en « m »

▪ Remarque: Une fonction mono ligne est une fonction qui s’applique
enregistrement par enregistrement.
83

Fonctions de caractères. Conversion Minuscule/Majuscule(2/2)

SELECT LOWER (last_name) as "prénom" FROM employees;

SELECT UPPER (last_name) as "prénom" FROM employees;

SELECT INITCAP (last_name) as "prénom" FROM employees;


84

Fonctions de manipulation des caractères. Définitions (1/2)

▪ CONCAT(chaine1,chaine2) : concatène 2 chaines = ||


▪ SUBSTR(chaine, pos, taille) : extrait une sous chaîne d’une autre
chaîne
▪ LENGTH(ch) : taille d’une chaîne en caractères
▪ INSTR(ch,sch) : position d’une chaîne de caractères dans une
autre chaîne
▪ TRIM(ch) : élimine les espaces à gauche et à droite
▪ LTRIM(ch) : élimine les espaces à gauche
▪ RTRIM(ch) : élimine les espaces à droite
85

Fonctions de manipulation des caractères. Définitions (2/2)

▪ LPAD (chaine, nbr, carac) : complète une chaîne de caractères sur la


gauche avec une autre chaîne pour avoir n caractères.

▪ RPAD (chaine, nbr, carac): complète une chaîne de caractères sur la


droite avec une autre chaîne pour avoir n caractères.

▪ ASCII (chaine) : retourne le code ascii du premier caractère de


la chaîne.
▪ CHR (nbr): retourne le caractère (inverse de ascii).
86

Fonctions de manipulation des caractères. Exemples

SELECT 'station' CH1, 'agil' CH2,


Concat ('station 1','agil') "la station",
Substr ('station 1',9,1) "numéro station",
Length ('agil') "longueur CH1",
Instr ('agil','i') "position de i",
Length (Trim(' agil ')) "trim",
Length (Rtrim(' agil ')) "Rtrim",
Length (Ltrim(' agil ')) "Ltrim",
Rpad ('agil',8,'*') "RPAD", Lpad ('agil',8,'-') "LPAD",
ASCII ('test') " code ascii " , CHR(75)
FROM Dual;
87

Fonctions numériques. Présentation

▪ ROUND (x, n) : Arrondir la valeur de x à la précision spécifiée n


▪ TRUNC (x, n) : Tronquer la valeur de x à la précision spécifiée n
▪ FLOOR (x) : si n<x<N+1 alors FLOOR(x)=n
▪ CEIL (x) : si n<x<N+1 alors CEIL(x)=N+1
▪ MOD (x, y) : reste de la division de x sur y
▪ REMAINDER (m, n) : reste d’une division calculé comme suit :
m-(n*q) avec q égale à la partie entière du quotient
88

Fonctions numériques. Round (1/2)

SELECT round(123.646, 0) "0 chiffres" , round(123.646, 1) "1 chiffres",


round(123.646, 2) "2 chiffres", round(123.646, 3) "3 chiffres"
FROM Dual;

Résultat:
89

Fonctions numériques. Round (2/2)

SELECT round(123.646, -1) "1 chiffres" ,round(123.646, -2) "2 chiffres",


round(123.646, -3) "3 chiffres"
FROM Dual;

Résultat:
90

Fonctions numériques. TRUNC

SELECT TRUNC (123.646, 0) "n=0", TRUNC (123.646, 1) "n=1",


TRUNC (123.646, 2) "n=2", TRUNC (123.646, 3) "n=3", TRUNC (123.636, -1)
"n=-1", TRUNC (123.646, -2) "n=-2", TRUNC (123.646, -3) "n=-3"
FROM Dual;

Résultat:
91

Fonctions numériques. FLOOR/ CEIL

SELECT floor(-2.56), floor(-2.02), floor(-2.8),


ceil(-2.56), ceil(-2.02), ceil(-2.8)
FROM dual;

Résultat:

SELECT floor(2.56), floor(2.02), floor(2.8),


ceil(2.56), ceil(2.02), ceil(2.8)
FROM dual;

Résultat:
92

Fonctions numériques. MOD/ REMAINDER

SELECT MOD (12, 4), MOD (16, 6)


FROM Dual;

Résultat:

SELECT remainder (15, 6), remainder (15, 5),


remainder (15, 4), remainder (-15,4)
FROM Dual;

15-(2*6) = 3 / 15-(3*5) = 0 / 15-(4*4) = -1 / -15-(-4*4) = 1


Résultat:
93

Fonctions de manipulation des dates. (1/3)

▪ MONTHS_BETWEEN (date1,datE2): nombre de mois entre deux dates


▪ ADD_MONTHS (date, nb_mois): Ajoute des mois calendaires à une date
▪ NEXT_DAY (date, jour) : le jour suivant
▪ LAST_DAY (date) : le dernier jour du mois
▪ ROUND (date, précision) : arrondi une date
▪ TRUNC (date, précision) : tronque une date
▪ EXTRACT (day/month/year/hour/minute/seconde from date): extraction du
jour, mois, année, heure, minute et seconde
94

Fonctions de manipulation des dates. (2/3)

SELECT sysdate "date du jour",


sysdate+2 "Date jr plus 2JRS",
to_date ('10/09/2012','dd/mm/yyyy')-10 "date du jour moins 10" ,
Trunc (sysdate - to_date('01/05/2012','dd/mm/yyyy'),0)
"tronquer une date"
FROM dual ;

Résultat:
95

Fonctions de manipulation des dates. (3/3)

SELECT
Trunc (months_between (to_date ('2012/01/01', 'yyyy/mm/dd'), to_date
('2012/03/15', 'yyyy/mm/dd') ),2) "nbr de mois",
next_day(to_date ('2012/03/01', 'yyyy/mm/dd'), 'Monday') "lundi suivant",
last_day(to_date ('2012/03/01', 'yyyy/mm/dd')) "dernier jr du mois MARS12" ,
add_months(to_date ('2012/03/01', 'yyyy/mm/dd'),3) "ajouter 3 mois"
FROM Dual;

Résultat:
96

Fonctions de conversions.

▪ TO_DATE : Convertir une Chaine en format Date


▪ TO_NUMBER : Convertir une Chaine en format Numérique
▪ TO_CHAR : Convertir une Date /un nombre en une Chaine
97

Fonctions de conversions. Options avec To_char

OPTION DESCRIPTION
yyyy l’année (quatre chiffres)
month nom complet du mois en minuscule
mon abréviation du nom du mois en minuscule (trois caractères)
day nom complet du jour en minuscule
DD jour du mois (01-31)
D jour de la semaine (de 1 à 7, dimanche étant le 1)
dy abréviation du nom du jour en minuscule (3 caractères)
ddd jour de l'année (001-366)
q trimestre
w numéro de semaine du mois (de 1 à 5) (la première semaine commence
le premier jour du mois.)
ww numéro de semaine dans l'année (de 1 à 53) (la première semaine
commence le premier jour de l'année.
98

Autres Fonctions. (1/5). définition1

▪ NVL (nom_col, valeur) : remplace une valeur nulle

▪ NVL2 (expr,val1,val2) : si expr n’est pas nulle alors elle est remplacée
par val1 sinon par val2.

▪ NULLIF (val1,val2) : si val1= val2 la valeur NULL est retournée sinon


val1

▪ Case : évalue une liste de conditions et retourne un résultat parmi les cas
possibles
99

Autres Fonctions. (2/5). Exercices1

▪ Ecrire les requêtes SELECT qui permettent de:


▪ Remplacer « commission_pct » par 0 au niveau de la table
« employees » si elle est null
▪ Remplacer « commission_pct » par 0 au niveau de la table
« employees » si elle est null sinon par 1
▪ Afficher la liste des employés en ajoutant une colonne
« nom_departement » qui affiche :
▪ Si department_id=10 , nom_departement=‘depart_10’
▪ Si department_id=20 , nom_departement=‘depart_20’
▪ Si department_id=30 , nom_departement=‘depart_30’
▪ …
100

Autres Fonctions. (3/5). Définitions2

▪ ROW_NUMBER : retourne le numéro séquentiel d'une ligne d'une


partition d'un ensemble de résultats, en commençant à 1 pour la première
ligne de chaque partition. Ne prend pas en considération les doublons

▪ RANK: retourne le rang de chaque ligne au sein de la partition d'un


ensemble de résultats. Compte les doublons mais laisse des trous

▪ DENSE_RANK : retourne le rang des lignes à l'intérieur de la partition


d'un ensemble de résultats, sans aucun vide dans le classement.
Compte les doublons mais ne laisse pas des trous
101

Autres Fonctions. (4/5). Syntaxe

SELECT
Row_number() over (partition by <col x> order by <col_y>
DESC/ASC), Col1,…colN
FROM <nom_table> ;

A retenir:
- La clause <order by> est obligatoire.
- La clause <partition by> est facultative, est utilisée pour faire un ordre par
ensemble de lignes selon <colx>.
- Rank et dense_rank ont la même syntaxe.
102

Autres Fonctions. (5/5). Exercices2

Ecrire les requêtes SELECT qui permettent de :

▪ Afficher la liste des employees numérotés par « department_id ».


▪ Afficher la liste des employees numérotés par département et selon le
salaire décroissant :
▪ Utiliser « row_number »
▪ Utiliser « rank »
▪ Utiliser « dense_rank »
3ème Partie :
Les Fonctions Multi lignes ( ou fonctions de groupe )

Objectif du cours :

Définir la clause « GROUP BY »,


la clause « HAVING »
104

Fonctions Multi lignes. Définitions (1/3)

Une fonction mono ligne est une fonction qui s’applique enregistrement par
enregistrement.
Une fonction multi ligne ou fonction de groupe s’applique sur un groupe
d’enregistrements et donne un résultat par groupe.

▪ Clause GROUP BY : Définit le critère de groupement pour la fonction


▪ Clause HAVING : Permet de mettre des conditions sur les groupes
d’enregistrements
105

Fonctions Multi lignes. Définitions (2/3)

▪ COUNT : Nombre de lignes,


▪ SUM : Somme des valeurs,
▪ AVG : Moyenne des valeurs,
▪ MIN : Minimum,
▪ MAX : Maximum,
▪ STDDEV: Ecart type,
▪ VARIANCE: Variance
106

Fonctions Multi lignes. Définitions (3/3)

▪ COUNT : Nombre de lignes,


▪ SUM : Somme des valeurs,
▪ AVG : Moyenne des valeurs,
▪ MIN : Minimum,
▪ MAX : Maximum,
▪ STDDEV: Ecart type,
▪ VARIANCE: Variance
107

Fonctions Multi lignes. Exemple1

SELECT COUNT (salary) as count,


Trunc (SUM (salary),2) as sum,
MIN (salary) as min,
MAX (salary) as max,
Trunc (AVG (salary),2) as avg,
Trunc (VARIANCE (salary),2) as variance,
Trunc (STDDEV(salary),2) as ecart
FROM employees;

Résultat:
108

Fonctions Multi lignes. Syntaxe de la clause GROUP BY

SELECT <colonnes>, <fonction de groupe>


FROM table
WHERE <conditions>
GROUP BY <col>|<expr>
HAVING <conditions>
ORDER BY <col>|<expr>
109

Fonctions Multi lignes. Exemple2

SELECT department_id,
COUNT(employee_id) "nbr employes"
12
FROM employees Départements

GROUP BY department_id;

SELECT department_id, count(employee_id) "nbr employes"


FROM employees
GROUP BY department_id
HAVING department_id<40;
4 ème Partie : Les Jointures

Objectifs de cette partie :


i. Equijointure et jointure interne, Jointure naturelle
ii. Jointure externe
iii. Non équijointure
iv. Produit cartésien
111

Les Jointures. Définition.

▪ Une jointure permet d’extraire des données de plusieurs

tables à la fois.

▪ La condition de jointure peut être exprimée dans la clause

« WHERE » ou « ON ».

▪ Précédez le nom de la colonne par le nom de la table lorsque

celui-ci figure dans plusieurs tables


112

Types de Jointures.

▪ Equijointure ou jointure interne (=)

▪ Jointure naturelle

▪ Jointure externe (droite, gauche ou complète)

▪ Non équijointure

▪ Produit cartésien
113

Equijointure. Définition

▪ Une jointure interne ou équijointure est une jointure avec


une condition de jointure contenant un opérateur d‘égalité.

▪ C’est la plus répandue, elle combine les lignes qui ont des
valeurs équivalentes pour les colonnes de la jointure.

▪ Généralement dans ce type de jointure, ce sont les Primary


Key et Foreign Key qui sont utilisées.
114

Equijointure. Syntaxe (1/2)

SELECT table1.column, table2.column

FROM table1

INNER JOIN table2

ON (table1.column_name = table2.column_name) ;
115

Equijointure. Syntaxe (2/2)

✓ T1 : Alias de la table : table1


SELECT T1.ColonNE1, …T1.ColonneN,
✓ T2 : Alias de la table : table2
T2.ColonNE1, …T2.ColonneN
✓ C1 : colonne permettant la
FROM tablE1 T1 INNER JOIN tablE2 T2
jointure entre les 2 tables
ON T1.C1=T2.C1 ( primary key + foreign key)
WHERE <Condition(s)>

Équivalent à :

SELECT T1.ColonNE1, …T1.ColonneN,


T2.ColonNE1, …T2.ColonneN
FROM T1 ,T2
WHERE T1.C1=T2.C1 AND <Condition(s)>
116

Equijointure. Exemple

Exemple1:

SELECT nomE, e.numdept, nomdept


FROM emp e INNER JOIN dept d
ON e.numdept=d.numdept;

ExempLE2:

SELECT nomE, e.numdept, nomdept


FROM emp e INNER JOIN dept d
ON e.numdept=d.numdept
WHERE e.numdept=11;
117

Jointure naturelle. Définition

▪ La jointure naturelle est une équijointure.


▪ La clause NATURAL JOIN est basée sur toutes les colonnes
des deux tables portant le même nom.
▪ Elle sélectionne les lignes des deux tables dont les valeurs sont
identiques dans toutes les colonnes qui correspondent.

▪ Si les colonnes portant le même nom présentent des types de


données différents, une erreur est renvoyée.
118

Jointure naturelle. Syntaxe

SELECT colonne1, colonne2…


FROM Table1
NATURAL JOIN Table2
WHERE Condition(s) ;

Conditions autres que la condition


de jointure
119

Jointure naturelle. Exemple

Exemple 1:

SELECT nomE, numdept,nomdept


FROM emp NATURAL JOIN dept;

Exemple 2:

SELECT nomE, numdept,nomdept


FROM emp NATURAL JOIN dept
WHERE numdept=11;
120

Non équijointure. Définition

▪ Il s'agit là d'utiliser n'importe quelle condition de jointure


entre deux tables, exceptée la stricte égalité. Ce peuvent être
les conditions suivantes :
121

Jointure externe. Définition

▪ JOINTURES EXTERNES = OUTER JOINS.


▪ Une jointure externe élargie le résultat d’une jointure interne
(INNER JOINS) et permet d’extraire des enregistrements qui
ne répondent pas aux critères de jointure.
▪ Une jointure externe renvoie toutes les lignes qui satisfont la
condition de jointure et retourne également une partie de ces
lignes de la table pour laquelle aucune des lignes de l’autre ne
satisfait pas la condition de jointure.
122

Jointure externe. Types de jointures externes

SELECT t1.column, t2.column..


FROM table1 t1
LEFT | RIGHT | FULL OUTER JOIN table2 t2 ON
(t1.column_name = t2.column_name) ;

▪ Le sens de la jointure externe LEFT ou RIGHT de la clause


OUTER JOIN désigne la table dominante.
▪ FULL = INNER + LEFT + RIGHT
123

Jointure externe. Gauche

Exemple:

SELECT nomE, e.numdept, nomdept


FROM dept d LEFT JOIN emp e
ON e.numdept=d.numdept
124

Jointure externe. Droite

Exemple:

SELECT nomE, e.numdept,nomdept


FROM dept d RIGHT JOIN emp e
ON e.numdept=d.numdept
125

Jointure externe. complète

Exemple:

SELECT nomE, e.numdept,nomdept


FROM dept d FULL JOIN emp e
ON e.numdept=d.numdept
126

Produit Cartésien. Définition

On obtient un produit cartésien lorsque :


▪ Une condition de jointure est omise
▪ Une condition de jointure est incorrecte
▪ A chaque ligne de la table 1 sont jointes toutes les lignes de
la table 2.
▪ Le nombre de lignes renvoyés est égal n1 * N2 où
✓ N1 est le nombre de lignes de la table 1
✓ N2 est le nombre de lignes de la table 2
127

Produit Cartésien. Syntaxe

SELECT « nom_colonne1 », « nom_colonne2 »…


FROM table1 T1
CROSS JOIN table2 T2

Exemple:
Select * from employees CROSS JOIN departments

→ On va avoir 107*27 lignes = 2889 lignes


128

Produit Cartésien. Exemple

SELECT * From emp e


INNER JOIN dept d
ON e.numdept=e.numdept
▪ OU
SELECT * From emp, dept

→ On va avoir 9*4 lignes


129

Jointure. Récapitulatif
5 Partie
ème : Les Opérateurs
ensemblistes

i. UNION
ii. UNION ALL
iii. INTERSECT
iv. MINUS
131

Les opérateurs ensemblistes.

OPERATEUR DESCRIPTION
Ramène toutes les lignes communes aux deux
INTERSECT
requêtes
Toutes les lignes distinctes ramenées par les deux
UNION
requêtes
Toutes les lignes ramenées par les deux requêtes y
UNION ALL
compris les doublons
Toutes les lignes ramenées par la première requête
MINUS
sauf les lignes ramenées par la seconde requête
132

Union(ALL). Exemple

▪ Créer une table d’archivage qui contient les informations des


employés qui ont été embauchés après l’année 2009.

▪ Ecrire une requête qui va afficher tous les employés:

SELECT * from emp


Union (ALL)
SELECT * from emp2
133

Intersect/Minus. Exemple

Ecrire les requêtes permettant de :


▪ Afficher les employés qui ont été archivés.
▪ Afficher les employés qui n’ont pas été archivés.

SELECT * from emp


Intersect/minus
SELECT * from emp2 ;
134

Exercice d’application.

▪ Ecrire une requête qui permet d’afficher ce résultat à partir de


la table ‘dept’ :
6 ème Partie :
Les Sous interrogations

i. Sous interrogations mono lignes


ii. Sous interrogations multi lignes
136

Sous interrogations. Définition

▪ La sous-interrogation (requête interne) est exécutée une seule


fois avant la requête principale
▪ Le résultat de la sous-interrogation est utilisé par la requête
principale (requête externe)

▪ Une sous-interrogation est utilisée dans les clauses suivantes :


▪ WHERE
▪ HAVING
▪ FROM
137

Sous interrogations mono lignes. Définition

Une sous-interrogation peut ramener un seul résultat on


l’appelle sous interrogation mono ligne.

Les opérateurs de comparaison mono ligne sont :


=, !=, <, >, <=, >=
138

Sous interrogations mono lignes. Exemple1

Exemple de Mise à jour avec une sous interrogation :


l’employé numéro 112 est affecté au même poste et même
département que l’employé numéro 111

UPDATE employee_id SET (job_id, department_id)


= ( SELECT job_id, department_id
FROM employees
WHERE employee_id=111 )
WHERE employee_id=112 ;
139

Sous interrogations mono lignes. Exemple2

Exemple de Suppression avec une sous interrogation :


Supprimer tous les employés du département ‘SALES’

DELETE FROM employees


WHERE Department_id =
( SELECT department_id
FROM departments
WHERE department_name=‘SALES’ );
140

Sous interrogations mono lignes. Exemples

Ecrire les requêtes permettant de:


▪ Afficher le nom du département de l’employé ‘Benafia
tarek’.
▪ Afficher la liste des employés qui touchent un salaire
supérieur à l’employé ‘Benafia tarek’.
▪ Afficher le nom et la date d’embauche des employés qui
n’ont pas été embauchés la même année que l’employé
‘Benafia tarek’.
141

Sous interrogations multi lignes. Définition (1/3)

▪ Une sous-interrogation peut ramener plusieurs lignes à


condition que l'opérateur de comparaison admette à sa
droite un ensemble de valeurs.
▪ Les opérateurs permettant de comparer une valeur à un
ensemble de valeurs sont :
▪ l'opérateur IN et
▪ les opérateurs obtenus en ajoutant ANY ou ALL à la
suite des opérateurs de comparaison classique :
=, !=, <, >, <=, >=.
142

Sous interrogations multi lignes. Définition (2/3)

▪ ANY : la comparaison sera vraie si elle est vraie pour au


moins un élément de l'ensemble (elle est donc fausse si
l'ensemble est vide).
▪ ALL : la comparaison sera vraie si elle est vraie pour tous
les éléments de l'ensemble (elle est vraie si l'ensemble est
vide).
▪ L'opérateur IN est équivalent à = ANY,
▪ L'opérateur NOT IN est équivalent à != ALL.
143

Sous interrogations multi lignes. Définition (3/3)

Opérateur de comparaison Résultat


SALAIRE doit être égale à une des valeurs
WHERE salaire IN (1200,1600,2000,2900) dans la liste
SALAIRE ne doit pas être égale à une des
WHERE salaire NOT IN (1200,1600,2000,2900) valeurs dans la liste
SALAIRE doit être supérieur à au moins une
WHERE salaire >ANY (1200,1600,2000,2900) des valeurs.
Donc plus que le minimum (+ de 1200).
SALAIRE doit être inférieur à au moins une
WHERE salaire <ANY (1200,1600,2000,2900) des valeurs.
Donc moins que le maximum (- de 2900).
SALAIRE doit être supérieur au maximum
WHERE salaire >ALL (1200,1600,2000,2900) de toutes les valeurs.
Donc plus que le maximum (+ de 2900).
SALAIRE doit être inférieur au minimum de
WHERE salaire <ALL (1200,1600,2000,2900) toutes les valeurs.
Donc moins que le minimum (- de 1200).
144

Sous interrogations multi lignes. Exemples

Ecrire les requêtes permettant de:


▪ Afficher la liste des employés qui touchent un salaire
supérieur à tous les employés du département 11.

▪ Afficher le nom et la date d’embauche des employés qui


n’ont pas été embauchés la même année que l’employé
‘Benflen ali’ et l’employé ‘Hamid ali’

Vous aimerez peut-être aussi