La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

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


Télécharger ppt "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."

Présentations similaires


Annonces Google