BD CH5 SQL 2018-2019 LID Part1

Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Vous êtes sur la page 1sur 62

LANGAGE SQL

1
PLAN DU COURS
A. Langage d’interrogation des données LID
B. Langage de manipulation des données LMD
A. Chapitre 3 : Langage de définition des données LDD

2
A. LANGAGE
D’INTERROGATION DES
DONNEES LID

3
CHAPITRE 1 : LANGAGE
D’INTERROGATION DES DONNEES LID

1.Requêtes simples
2.Fonctions mono-lignes
3.Fonctions de groupes
4.Jointures
5.Opérateurs ensemblistes
6.Sous-interrogations

4
1.REQUETES SIMPLES
SELECT [DISTINCT ] {*, colonne [as] [alias], …}
FROM table;
 SELECT : indique les colonnes à récupérer
 DISTINCT : supprime les doublons
 FROM : indique les tables recherchées

5
REGLES D’ECRITURE
DES ORDRES SQL
Indifférence entre majuscules et minuscules
Ecriture sur plusieurs lignes
Clauses sont généralement placées sur des lignes distinctes
Tabulations et indentations permettent une meilleure lisibilité

6
SELECTION DE TOUTES
LES COLONNES
SELECT * FROM dept;

7
SELECTION D’UNE OU
PLUSIEURS COLONNES
SELECT deptno, dname FROM dept;

8
EXPRESSIONS
ARITHMETIQUES
 Expression contenant des données de type NUMBER , DATE
et des opérateurs arithmétiques
Opérateur Description
+ Addition

- Soustraction

* Multiplication

/ Division

9
UTILISATION DES OPERATEURS
ARITHMETIQUES
SELECT job_id, job_title, min_salary, max_salary, max_salary -
min_salary FROM dept;

10
VALEUR NULL
NULL représente une valeur non disponible, non affectée
NULL # zéro, espace ou chaîne vide
SELECT employee_id, first_name, last_name , commission_pct
From employees;

11
VALEUR NULL DANS LES
EXPRESSIONS ARITHMETIQUES
 Les expressions arithmétiques comportant une valeur NULL
sont évaluées à NULL
SELECT first_name, last_name , (1+commission_pct )*salary
From employees;

12
ALIAS DE COLONNE
 Renomme un en-tête de colonne
 Suit le nom de colonne
 Doit obligatoirement être inclus entre guillemets s’il contient
des espaces, des caractères spéciaux ou si la casse est
respectée
SELECT first_name as "prénom", last_name as nom ,salary as
salaire, commission_pct as commission,
salary*(1+commission_pct) as "salaire majoré “ From
employees;

13
OPERATEUR DE
CONCATENATION
 Concatène des colonnes ou des chaines de caractères
 Est représenté par le symbole ||
 La colonne résultante est une expression caratère
SELECT employee_id, last_name || ' ' || first_name as "nom
et prénom " FROM employees;

14
ELIMINATION DES DOUBLONS
 Ajouter le mot-clé DISTINCT
SELECT distinct deptno FROM emp;

15
SELECTION DES LIGNES
 Filtrer la sélection au moyen de la clause whère
SELECT [DISTINCT] {*, column [as] [alias] , … }
FROM table
WHERE condition(s);

SELECT ename, job, deptno FROM emp WHERE deptno=10;

16
CHAINES DE CARACTERES
ET DATES
 Les constantes chaînes de caractères et dates doivent être
placées entre simples quotes.
 La recherche tient compte de la casse pour les chaînes et du
format pour les dates
 Le format de date par défaut est 'DD-MM-YY'
SELECT ename, job, deptno FROM emp
WHERE ename ='JAMES';

17
OPERATEURS DE COMPARAISONS

OPERATEUR DESCRIPTION

= Egal à

< Inférieur à

<= Inférieur à ou égal

> Supérieur à

>= Supérieur à ou égale à

<> Ou != Différent

18
AUTRES OPERATEURS DE
COMPARAISONS

OPERATEUR DESCRIPTION
BETWEEN val1 AND val2 val1 <= val <= val2

In (liste de valeurs) Valeur de la liste


Like Ressemblance partielle de chaînes
de caractètes
IS NULL Correspond à une valeur NULL

19
UTILISATION DE
L’OPERATEUR BETWEEN
SELECT ename, sal FROM emp
WHERE sal BETWEEN 1000 AND 1500;

SELECT empno, ename FROM emp


WHERE ename BETWEEN 'A' AND 'C';

SELECT * FROM emp where hiredate between '01-01-82' and '31-12-83’

20
UTILISATION DE L’OPERATEUR IN
 IN permet de comparer une expression avec une liste de
valeurs
SELECT empno, ename, sal, mgr FROM emp
WHERE mgr in (7902, 7566, 7788);

SELECT empno, ename, mgr, deptno


FROM emp WHERE deptno in (10,20);

21
UTILISATION DE L’OPERATEUR LIKE
 LIKE permet de rechercher des chaînes de caractères à l’aide
de caractères génériques
 Les conditions de recherche peuvent contenir des caractères
ou des nombres littéraux
 % représente Zéro ou plusieurs caractères
 _ représente un caractère

SELECT * FROM emp WHERE ename LIKE 'M%';

22
UTILISATION DE L’OPERATEUR LIKE

SELECT * FROM emp WHERE ename LIKE '_A%' ;

SELECT * FROM emp WHERE ename LIKE 'A\_B%' ESCAPE '\';

23
UTILISATION DE L’OPERATEUR IS NULL

SELECT * FROM emp WHERE MGR IS NULL;

24
OPERATEURS LOGIQUES

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 conditon est FAUSSE
FALSE si la condition est VRAIE

25
UTILISATION DE L’OPERATEUR AND

SELECT * FROM emp WHERE sal >= 1100 AND job='CLERK';

TABLE DE VERITE AND


AND TRUE FALSE UNKNOWN
TRUE TRUE FALSE UNKNOWN
FALSE FALSE FALSE FALSE
UNKNOWN UNKNOWN FALSE UNKNOWN

26
UTILISATION DE L’OPERATEUR OR
SELECT * FROM emp WHERE sal >= 1100 OR job='CLERK';

TABLE DE VERITE OR
OR TRUE FALSE UNKNOWN
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE UNKNOWN
UNKNOWN TRUE UNKNOWN UNKNOWN

27
UTILISATION DE L’OPERATEUR NOT

SELECT * FROM emp


WHERE job NOT IN ('CLERK','MANAGER','ANALYST‘);

TABLE DE VERITE NOT


TRUE FALSE UNKNOWN
NOT FALSE TRUE UNKNOWN

28
REGLES DE PRIORITE

ORDRE DE PRIORITE OPERATEUR

1 Les parenthèses

2 Tous les opérateurs de comparaison

3 NOT

4 AND

5 OR

29
REGLES DE PRIORITE
SELECT ename, job, sal FROM emp
WHERE job='SALESMAN' OR job='PRESIDENT'
AND sal > 1500;

30
REGLES DE PRIORITE
SELECT ename,job,sal FROM emp
WHERE (job='SALESMAN' OR job='PRESIDENT')
AND sal > 1500;

31
TRI : CLAUSE ORDER BY
Tri des lignes avec la clause ORDER BY
SELECT ename, job, deptno, hiredate FROM EMP
WHERE job <> 'CLERK'
ORDER BY hiredate;

32
TRI DECROISSANT
SELECT ename, job, deptno, hiredate FROM EMP
WHERE job <> 'CLERK'
ORDER BY hiredate DESC;

33
TRI SUR L’ALIAS DE COLONNE
SELECT empno, ename, sal * 12 “Annuel”
FROM EMP WHERE deptno = 10
ORDER BY Annuel DESC;

34
TRI SUR PLUSIEURS COLONNES
SELECT empno, deptno, sal FROM EMP
ORDER BY deptno, sal DESC;

35
2. FONCTIONS MONO-LIGNES
A.Types de fonctions
B.Fonctions caractères
C.Fonctions numériques
D.Fonctions dates
E.Fonctions de conversion
F.Autres Fonctions

36
A.TYPES DE FONCTIONS
1.Fonctions mono-ligne : agissent sur une seule ligne et
ramènent un seul résultat
2.Fonctions multi-lignes : manipulent des groupes de
lignes et ramènent un seul résultat

37
B. FONCTIONS CARACTERES

1.Fonctions de conversion majuscules / minuscules


2.Fonctions de manipulation de caractères

38
1.FONCTIONS DE CONVERSION
MAJUSCULES / MINUSCULES

LOWER : convertit les caractères majuscules en minuscules


UPPER : convertit les caractères minuscules en majuscules
INITCAP : convertit l’initiale de chaque mot en majuscule et
les caractères suivants en minuscules

39
EXEMPLES DE FONCTIONS DE
CONVERSION MAJUSCULES /
MINUSCULES
SELECT ename, lower(ename) , upper(ename), initcap(ename)
FROM EMP;

40
2.FONCTIONS DE MANIPULATION
DE CARACTERES
 CONCAT : concatène la première chaîne avec la seconde = ||
 SUBSTR : extrait une sous chaîne d’une autre chaîne
 LENGTH : taille d’une chaîne en caractères
 INSTR : position d’une chaîne de caractères dans une autre chaîne
Select empno, ename, substr(ename, 1,3), instr(ename,'ES'),
length(ename) From emp ;

41
2.FONCTIONS DE MANIPULATION
DE CARACTERES
 TRIM : élimine les espaces à gauche et à droite
 LTRIM : élimine les espaces à gauche
 RTRIM : élimine les espaces à droite

SELECT ' Foued OUELBANI ' as "nom prénom", length(' Foued OUELBANI ') as Taille,
Ltrim(' Foued OUELBANI ') as ltrim, length(Ltrim(' Foued OUELBANI ')) as "taille ltrim",
rtrim(' Foued OUELBANI ') as rtrim, length(rtrim(' Foued OUELBANI ')) as "taille rtrim",
trim(' Foued OUELBANI ') as trim, length( trim(' Foued OUELBANI ')) as "taille rtrim"
FROM dual;

42
2.FONCTIONS DE MANIPULATION
DE CARACTERES
 LPAD : complète une chaîne de caractères sur la gauche avec
une autre chaîne pour avoir n caractères.
 RPAD : complète une chaîne de caractères sur la droite avec
une autre chaîne pour avoir n caractères.

SELECT LPAD('Foued OUELBANI' ,20, '+' ) as


LPAD,RPAD('Foued OUELBANI' ,20, '+' ) as RPAD
FROM dual;

43
2.FONCTIONS DE MANIPULATION
DE CARACTERES

 ASCII : retourne le code ascii du premier caractère de la chaîne


 CHR : retourne le caractère (inverse de ascii)

SELECT select ascii(‘FOUED OUELBANI '), chr(75) From dual;

44
2.FONCTIONS DE MANIPULATION
DE CARACTERES
 REPLACE : remplace toutes les occurrences de la chaîne
recherchée par une autre
 TRANSLATE : remplace chaque caractère recherché par son
correspondant dans la chaîne principale

SELECT 'ABCDE ABDEU HRABDE ',


replace ('ABCDE ABDEU HRABDE ', 'AB','XYZ'),
translate('ABCDE ABDEU HRABDE ', 'AB','UVW'),
translate('ABCDE ABDEU HRABDE ', 'AB','U')
FROM dual;

45
C. FONCTIONS NUMERIQUES
ROUND : Arrondi la valeur à la précision spécifiée
TRUNC : tronque la valeur à la précision spécifiée
FLOOR (x) : si n<x<n+1 alors FLOOR(x)=n
CEIL (x) : si n<x<n+1 alors CEIL(x)=n+1
MOD : reste d’une division
REMAINDER (m, n) : reste d’une division calculé comme
suit :
r=m-(n*round(m/q,0) )

46
C. FONCTIONS NUMERIQUES
SELECT ROUND(123.453,0), ROUND(123.553,0), ROUND(123.453,2),
ROUND(123.455,2), ROUND(123.453,-1), ROUND(163.453,-2)
FROM dual;

SELECT TRUNC(123.453,0), TRUNC(123.453,1), TRUNC(123.453,2),


TRUNC(123.453,-1), TRUNC(163.453,-2)
FROM dual

47
C. FONCTIONS NUMERIQUES

SELECT floor(-1.34), floor(-1.04), floor(-1.7), ceil(-1.34), ceil(-1.04), ceil(-1.7)


from dual;

48
C. FONCTIONS NUMERIQUES
SELECT MOD(1260,430), MOD(1260,430.5) FROM dual

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


remainder(11.6, 2), remainder(11.6, 2.1), remainder(-15, 4)
FROM Dual;

49
D. FONCTIONS DATES
1.Ajout ou soustraction d’un nombre à une date
2.Soustraction de deux dates afin de déterminer le nombre de
jours entre deux dates
3.Ajout d’un nombre d’heures à une date en divisant le nombre
d’heures par 24

SELECT sysdate, sysdate+2, to_date('20/09/1998') - 10,


Trunc(sysdate - to_date('10/10/2008'),0)
FROM dual

50
D. FONCTIONS DATES
MONTHS_BETWEEN : nombre de mois entre deux dates
SELECT sysdate, MONTHS_BETWEEN(sysdate,'01/07/2018') ,
MONTHS_BETWEEN('30/10/1990','20/10/1990') FROM DUAL

ADD_MONTHS : Ajoute des mois calendaires à une date


SELECT sysdate, ADD_MONTHS(sysdate,3) from dual

51
D. FONCTIONS DATES
NEXT_DAY : date du 1 jour semaine
er

LAST_DAY : dernier jour du mois

SELECT next_day(sysdate,'mercredi'), LAST_DAY(sysdate)


FROM DUAL

52
D. FONCTIONS DATES
ROUND : arrondi une date
TRUNC : tronque une date
SELECT sysdate, MONTHS_BETWEEN(sysdate,'01/07/2018') ,
ROUND(MONTHS_BETWEEN(sysdate,'01/07/2018'),0),
TRUNC(MONTHS_BETWEEN(sysdate,'01/07/2018'))
FROM DUAL

53
D. FONCTIONS DATES
TO_CHAR : convertit une date en une chaine selon un format

select employee_id Matricule, last_name Nom, first_name Prenom,


to_char(hire_date,'dd-mm-yyyy') "Date d'embauche",
to_char(hire_date,'dd') Jour, to_char(hire_date,'Day') "Jour Semaine",
to_char(hire_date,'mm') Mois, to_char(hire_date,'Mon') "Mois Abrégé",
to_char(hire_date,'MONTH') "Mois Complet",
to_char(hire_date,'w') "Semaine Mois",
to_char(hire_date,'ww') "Semaine Année",
to_char(hire_date,'q') Trimestre, to_char(hire_date,'yyyy') Année
from employees
order by Nom

54
D. FONCTIONS DATES
SELECT systimestamp,
extract(day from systimestamp) as Jour,
extract(month from systimestamp) as Mois,
extract(year from systimestamp) as Année,
extract(hour from systimestamp)+2 as Hour,
extract(minute from systimestamp) as Minute,
trunc(extract(second from systimestamp)) as Second
FROM dual;

54
F.AUTRES FONCTIONS
1.NVL : remplace une valeur nulle
2.NVL2 (expr,val1,val2) : si expr n’est pas nulle elle est remplacée val1 sinon par val2
3.NULLIF (val1,val2) : si val1= val2 la valeur NULL est retournée sinon val1
4.Coalesce (exp1,expr2,expr3,…) : retourne la première valeur non nulle
5.Decode (expr, val1, val11, val2, val21, …. Valn, valn1, default) :
retourne valn1 si expr = valn sinon default
6.Case : évalue une liste de conditions et retourne un résultat parmi les cas possibles
7.Rank : retourne le rang de chaque ligne au sein de la partition d'un ensemble de
résultats
8.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
9.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
10.First_value : retourne la première valeur d’une partition
11.Last_value : retourne la dernière valeur d’une partition

55
F.AUTRES FONCTIONS (NVL,
NVL2)
SELECT empno, ename, sal, comm, NVL(comm,0),
NVL(to_char(comm), 'Pas de commission'),
NVL2(comm,comm*100/sal,0),
to_char(NVL2(comm,comm*100/sal,0)) || '%'
FROM emp;

56
F.AUTRES FONCTIONS (NULLIF)
SELECT sal / comm FROM emp;
SELECT NULLIF(ename, ename), NULLIF(100, 200), sal, comm,
trunc(sal / NULLIF(comm, 0),2)
FROM emp;

57
F.AUTRES FONCTIONS (COALESCE)
SELECT coalesce(Null,5) from dual;

58
F.AUTRES FONCTIONS
(DECODE)
SELECT empno,ename,job, deptno, decode(deptno,10,
'ACCOUNTING', 20, 'RESEARCH', 'DEP. INCONNU ')
FROM emp ORDER BY deptno;

59
F.AUTRES FONCTIONS (CASE)
SELECT empno, ename, deptno,
case deptno
when 10 then 'Accounting'
when 20 then 'RESEARCH'
else 'INCONNU'
end as departement
FROM emp order by 4;

60
F.AUTRES FONCTIONS (CASE)
SELECT empno, ename, deptno,
case
when deptno < 10 or deptno >20 then 'INCONNU‘
else to_char(deptno)
end as departement
FROM emp order by 4;

61

Vous aimerez peut-être aussi