Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAbdelli Brahim Modifié depuis plus de 5 années
1
LANGAGE SQL 1
2
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
3
A. LANGAGE D’INTERROGATION DES DONNEES LID 3
4
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
5
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
6
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
7
SELECTION DE TOUTES LES COLONNES SELECT * FROM dept; 7
8
SELECTION D’UNE OU PLUSIEURS COLONNES SELECT deptno, dname FROM dept; 8
9
EXPRESSIONS ARITHMETIQUES Expression contenant des données de type NUMBER, DATE et des opérateurs arithmétiques OpérateurDescription + Addition - Soustraction * Multiplication / Division 9
10
UTILISATION DES OPERATEURS ARITHMETIQUES SELECT job_id, job_title, min_salary, max_salary, max_salary - min_salary FROM dept; 10
11
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
12
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
13
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
14
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
15
ELIMINATION DES DOUBLONS Ajouter le mot-clé DISTINCT SELECT distinct deptno FROM emp; 15
16
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
17
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
18
OPERATEURS DE COMPARAISONS OPERATEURDESCRIPTION = Egal à < Inférieur à <= Inférieur à ou égal > Supérieur à >= Supérieur à ou égale à <> Ou != Différent 18
19
AUTRES OPERATEURS DE COMPARAISONS OPERATEURDESCRIPTION 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
20
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
21
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
22
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
23
SELECT * FROM emp WHERE ename LIKE '_A%' ; SELECT * FROM emp WHERE ename LIKE 'A\_B%' ESCAPE '\'; 23 UTILISATION DE L’OPERATEUR LIKE
24
UTILISATION DE L’OPERATEUR IS NULL SELECT * FROM emp WHERE MGR IS NULL; 24
25
OPERATEURS LOGIQUES OPERATEURDESCRIPTION AND Retourne TRUE si les deux conditions sont VRAIES OR Retourne TRUE si au moins une des conditions est VRAIE NOT Inverse la valeur de la condition TRUE si la conditon est FAUSSE FALSE si la condition est VRAIE 25
26
UTILISATION DE L’OPERATEUR AND SELECT * FROM emp WHERE sal >= 1100 AND job='CLERK'; TABLE DE VERITE AND ANDTRUEFALSEUNKNOWN TRUE FALSEUNKNOWN FALSE UNKNOWN FALSEUNKNOWN 26
27
UTILISATION DE L’OPERATEUR OR SELECT * FROM emp WHERE sal >= 1100 OR job='CLERK'; TABLE DE VERITE OR ORTRUEFALSEUNKNOWN TRUE FALSETRUEFALSEUNKNOWN TRUEUNKNOWN 27
28
UTILISATION DE L’OPERATEUR NOT SELECT * FROM emp WHERE job NOT IN ('CLERK','MANAGER','ANALYST‘); TABLE DE VERITE NOT TRUEFALSEUNKNOWN NOTFALSETRUEUNKNOWN 28
29
REGLES DE PRIORITE ORDRE DE PRIORITEOPERATEUR 1 Les parenthèses 2 Tous les opérateurs de comparaison 3 NOT 4 AND 5 OR 29
30
REGLES DE PRIORITE SELECT ename, job, sal FROM emp WHERE job='SALESMAN' OR job='PRESIDENT' AND sal > 1500; 30
31
SELECT ename,job,sal FROM emp WHERE (job='SALESMAN' OR job='PRESIDENT') ANDsal > 1500; 31 REGLES DE PRIORITE
32
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
33
TRI DECROISSANT SELECT ename, job, deptno, hiredate FROM EMP WHERE job <> 'CLERK' ORDER BY hiredate DESC; 33
34
TRI SUR L’ALIAS DE COLONNE SELECT empno, ename, sal * 12 “Annuel” FROM EMP WHERE deptno = 10 ORDER BY Annuel DESC; 34
35
TRI SUR PLUSIEURS COLONNES SELECT empno, deptno, sal FROM EMP ORDER BY deptno, sal DESC; 35
36
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
37
A.TYPES DE FONCTIONS 1.Fonctions mono-ligne : a gissent sur une seule ligne et ramènent un seul résultat 2.Fonctions multi-lignes : m anipulent des groupes de lignes et ramènent un seul résultat 37
38
B.FONCTIONS CARACTERES 1.Fonctions de conversion majuscules / minuscules 2.Fonctions de manipulation de caractères 38
39
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
40
EXEMPLES DE FONCTIONS DE CONVERSION MAJUSCULES / MINUSCULES SELECT ename, lower(ename), upper(ename), initcap(ename) FROM EMP; 40
41
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
42
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
43
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
44
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
45
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; 2.FONCTIONS DE MANIPULATION DE CARACTERES 45
46
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
47
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 C.FONCTIONS NUMERIQUES 47
48
SELECT floor(-1.34), floor(-1.04), floor(-1.7), ceil(-1.34), ceil(-1.04), ceil(-1.7) from dual ; C.FONCTIONS NUMERIQUES 48
49
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; C.FONCTIONS NUMERIQUES 49
50
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
51
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 51 SELECT sysdate, ADD_MONTHS(sysdate,3) from dual
52
D.FONCTIONS DATES NEXT_DAY : date du 1 er jour semaine LAST_DAY : dernier jour du mois 52 SELECT next_day(sysdate,'mercredi'), LAST_DAY(sysdate) FROM DUAL
53
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
54
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 D.FONCTIONS DATES 54
55
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 ; D.FONCTIONS DATES 54
56
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
57
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
58
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
59
F.AUTRES FONCTIONS (COALESCE) SELECT coalesce(Null,5) from dual; 58
60
F.AUTRES FONCTIONS (DECODE) SELECT empno,ename,job, deptno, decode(deptno,10, 'ACCOUNTING', 20, 'RESEARCH', 'DEP. INCONNU ') FROM emp ORDER BY deptno; 59
61
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
62
F.AUTRES FONCTIONS (CASE) SELECT empno, ename, deptno, case when deptno 20 then 'INCONNU‘ else to_char(deptno) end as departement FROM emp order by 4; 61
63
F.AUTRES FONCTIONS (ROW_NUMBER) SELECT deptno, empno, ename,sal, row_number() over(order by sal desc) FROM emp; SELECT deptno, empno, ename,sal, row_number() over(partition by deptno order by sal desc) FROM emp; 62
64
SELECT deptno, empno, ename,sal, rank()over (order by sal desc) rank FROM emp; SELECT deptno, empno, ename,sal, rank() over (partition by deptno order by sal desc) as rank FROM emp; F.AUTRES FONCTIONS (RANK) 63
65
F.AUTRES FONCTIONS (DENSE_RANK) SELECT deptno, empno, ename,sal, dense_ranK() over(order by sal desc) as dense_rank FROM emp; SELECT deptno, empno, ename,sal, dense_ranK() over(partition by deptno order by sal desc) as dense_rank FROM emp; 64
66
F.AUTRES FONCTIONS FIRST_VALUE) SELECT deptno, empno, ename,sal, first_value(sal) over(order by sal desc) as first_value FROM emp; SELECT deptno, empno, ename,sal, first_value(sal) over(partition by deptno order by SAL DESC) as first_value FROM emp; 65
67
F.AUTRES FONCTIONS (FIRST_VALUE) SELECT distinct first_value(sal) over(order by sal desc) as first_value FROM emp; SELECT distinct deptno, first_value(sal) over(partition by deptno order by SAL DESC) as first_value FROM emp; 66
68
3.FONCTIONS DE GROUPES A.Les fonctions de groupe agissent sur des groupes de lignes et donnent un résultat par groupe AVG([distinct|all]expr) : valeur moyenne en ignorant les valeurs NULL COUNT ([*|distinct|all]expr) : nombre de lignes où expr est différente de NULL. Le caractère * comptabilise toutes les lignes sélectionnées. MAX ([distinct|all]expr) : valeur maximale en en ignorant les valeurs NULL MIN([distinct|all]expr) : valeur minimale en en ignorant les valeurs NULL STDDEV([distinct|all]expr) : ecart-type en en ignorant les valeurs NULL SUM([distinct|all]expr ) : somme en en ignorant les valeurs NULL VARIANCE([distinct|all]expr) : variance en ignorant les valeurs NULL 67
69
3.FONCTIONS DE GROUPES SELECT count(sal) as count, trunc(sum(sal),3) as sum, min (sal) as min, max(sal) as max, trunc(avg(sal),3) as avg, trunc(variance(sal),3) as variance, trunc(stddev(sal),3) as ecart FROM emp; 68
70
3.FONCTIONS DE GROUPES CLAUSE GROUP BY SELECT colonne, fonction de groupe FROM table [WHERE condition] [GROUP BY colonne|expression] [Having function de groupe] [ORDER BY colonne|expression] SELECT deptno, count(*) as "nb salariés", sum(sal) as "Total salaire" FROM emp GROUP BY deptno ORDER BY deptno; 69
71
3.FONCTIONS DE GROUPES CLAUSE GROUP BY SELECT deptno, count(*) as "nb salariés", sum(sal) "Total salaire" FROM emp GROUP BY deptno ORDER BY deptno; SELECT deptno, count(*) as "nb salariés", sum(sal) "Total salaire" FROM emp GROUP BY deptno Having count(*) >3 and sum(sal) >10000 ORDER BY deptno; 70
72
4.JOINTURES 1.Définition d’une jointure 2.Produit cartésien 3.Jointure interne 4.Jointure externe 5.Auto-jointure 6.Non-équijointure 71
73
A.DEFINITION D’UNE JOINTURE Une jointure sert à extraire des données de plusieurs tables La condition de jointure est exprimée dans la clause ON : On T1.C1=T2.C1 Précédez le nom de la colonne par le nom de la table lorsque celui-ci figure dans plusieurs tables 72
74
B.PRODUIT CARTESIEN 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 et n2 est le nombre de lignes de la table 2 73
75
C.JOINTURE INTERNE SELECT T1.COLONNE1, …T1.COLONNEn, T2.COLONNE1, …T2.COLONNEm FROM T1 INNER JOIN T2 ON T1.C1=T2.C1 WHERE CONDITION(S) 74
76
C.JOINTURE INTERNE SELECT empno, ename,emp.deptno,dname,loc FROM emp INNER JOIN dept ON emp.deptno=dept.deptno order by deptno, ename 75
77
C.JOINTURE EXTERNE SELECT T1.COLONNE1, …T1.COLONNEn, T2.COLONNE1, …T2.COLONNEm FROM T1 LEFT [OUTER] JOIN T2 ON T1.C1=T2.C1 SELECT T1.COLONNE1, …T1.COLONNEn, T2.COLONNE1, …T2.COLONNEm FROM T1 RIGHT [OUTER] JOIN T2 ON T1.C1=T2.C1 SELECT T1.COLONNE1, …T1.COLONNEn, T2.COLONNE1, …T2.COLONNEm FROM T1 FULL [OUTER] JOIN T2 ON T1.C1=T2.C1 76
78
C.AUTO-JOINTURE Liaison d’une table à elle-même SELECT a.empno, a.ename, a.job, b.ename as MGR FROM emp a INNER JOIN emp b on a. mgr=b.empno ORDER BY empno 78
79
C.NON-EQUIJOINTURE SELLECT empno,ename, job, sal, losal,hisal,grade FROM Emp a INNER JOIN salgrade b ON sal BETWEEN losal and hisal ORDER BY sal 79
80
C.OPERATEURS ENSEMBLISTES OPERATEURDESCRIPTION INTERSECT Ramène toutes les lignes communes aux deux requêtes UNION Toutes les lignes distinctes ramenées par les deux requêtes UNION ALL Toutes les lignes ramenées par les deux requêtes y compris les doublons MINUS Toutes les lignes ramenées par la première requête sauf les lignes ramenées par la seconde requête 80
81
C.UNION Le nombre de colonnes et le type des colonnes doivent être identiques dans les 2 ordres Select L’opérateur UNION intervient sur toutes les colonnes SELECT ename, job, sal FROM emp WHERE job ='SALESMAN‘ ORDER BY ename SELECT ename, job, sal from emp where sal >= 1500 ORDER BY ename 81
82
C.UNION SELECT ENAME, job, sal FROM emp WHERE job ='SALESMAN' UNION SELECT ename, job, sal FROM Emp WHERE sal >= 1500 ORDER BY ename 82
83
C.UNION ALL Les doublons ne sont pas éliminés SELECT ENAME, job, sal FROM emp WHERE job ='SALESMAN' UNION ALL SELECT ename, job, sal FROM Emp WHERE sal >= 1500 ORDER BY ename 83
84
C.INTERSECTION SELECT ENAME, job, sal FROM emp WHERE job ='SALESMAN' INTERSECT SELECT ename, job, sal FROM Emp WHERE sal >= 1500 ORDER BY ename 84
85
C.MINUS SELECT ENAME, job, sal FROM emp WHERE job ='SALESMAN' MINUS SELECT ename, job, sal FROM Emp WHERE sal >= 1500 ORDER BY ename SELECT ename, job, sal FROM Emp WHERE sal >= 1500 MINUS SELECT ENAME, job, sal FROM emp WHERE job ='SALESMAN' ORDER BY ename 85
86
C.SOUS-INTERROGATIONS SELECT select_liste FROM table WHERE expr operateur (SELECT select_liste FROM table) 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 Les opérateurs de comparaison mono-ligne (>,>=,<, <=, …) Les opérateurs de comparaison multi-ligne (IN, ALL, ANY) 86
87
C.SOUS-INTERROGATIONS MONO-LIGNE SELECT ename, job, sal FROM emp WHERE job =(SELECT job FROM emp WHERE ename ='FORD' ) SELECT ename, job, sal FROM emp WHERE sal =(SELECT MIN(sal) FROM emp) SELECT deptno, min(sal) FROM emp GROUP BY deptno HAVING min(sal) >( SELECT MIN(sal) FROM emp WHERE deptno= 20 ) 87
88
C.SOUS-INTERROGATIONS MULTI-LIGNES SELECT ename,sal,deptno FROM emp WHERE sal IN (SELECT min(sal) FROM emp GROUP BY deptno) SELECT ename,sal,deptno FROM emp WHERE sal < ANY (SELECT min(sal) FROM emp group by deptno) SELECT ename,sal,deptno FROM emp WHERE sal > ALL (SELECT min(sal) FROM emp group by deptno) 88
89
C.SOUS-INTERROGATIONS EXISTS SELECT department_id FROM departments d WHERE EXISTS (SELECT * FROM employees e WHERE d.department_id = e.department_id); SELECT department_id FROM departments d WHERE Not EXISTS (SELECT * FROM employees e WHERE d.department_id = e.department_id); 89
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.