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 d’interrogation des Données LID

Présentations similaires


Présentation au sujet: "Langage d’interrogation des Données LID"— Transcription de la présentation:

1 Langage d’interrogation des Données LID
Année universitaire 2017/2018 LFIG 2 Langage d’interrogation des Données LID Fahmi Ben Rejab

2 SELECT - Principe générale
Syntaxe générale d'une commande SQL SELECT [DISTINCT ou ALL ou *] FROM nom de table [WHERE prédicats] [GROUP BY ordre des groupes] [HAVING condition] [ORDER BY ] liste de colonnes […. ] : Optionnel

3 SELECT - Principe générale
• SELECT permet de spécifier les attributs que l’on désire voir apparaître dans le résultat de la requête. • L’opérateur * permet de récupérer automatiquement tous les attributs de la table générée par la clause FROM de la requête. Exemple: SELECT * FROM Employé ; Cette commande permet d’afficher la table EMP. L’opérateur DISTINCT permet d’éliminer les doublons dans la réponse. Exemple: SELECT DISTINCT Nom FROM Employé;

4 SELECT - Principe générale
Par défaut toutes les lignes sont sélectionnées. On peut limiter la sélection à certaines colonnes, en indiquant une liste de noms de colonnes à la place de l'astérisque (*). SELECT nom_col1, nom_col2, ... FROM nom_table ; Exemple : Donner le nom et la fonction de chaque employé. SELECT ename, job FROM emp;

5 SELECT - Principe générale
Employé(NCIN, Nom, Prénom, Date_Naissance, Niveau, Salaire) • Il est possible d’utiliser les opérateurs mathématiques de base ( +, -, * et /) pour générer de nouvelles colonnes à partir, en générale, d’une ou plusieurs colonnes existantes. Exemple : Pour afficher le salaire annuel des employés, on peut utiliser la requête suivante: SELECT nom, salaire*12 FROM Employé ;

6 SELECT - Principe générale
L’opérateur AS permet de renommer une colonne ou de nommer une colonne créée dans la requête. Select ename AS Nom from EMP; Équivalent à : Select ename Nom from EMP; Équivalent à : Select ename ‘’Nom’’ from EMP; Exemple SELECT nom, salaire*12 AS SA FROM EMP; SA représente le résultat de (salaire *12) il est nommé SA.

7 FROM- Principe générale
Cette clause spécifie les tables sur lesquelles porte la requête. Exemple SELECT * FROM Employé, Département;  L’opérateur AS permet de renommer une table ou de nommer une table créée dans la requête. Exemple SELECT * from Employe as E ; OU SELECT * from Employe E;

8 WHERE - Principe générale
• La clause WHERE permet de spécifier quelles sont les lignes à sélectionner dans une table ou dans le produit cartésien de plusieurs tables. • Elle est suivie d'un prédicat (expression logique ayant la valeur vrai ou faux) qui sera évalué pour chaque ligne. Les lignes pour lesquelles le prédicat est vrai seront sélectionnées. SELECT * FROM nom_table WHERE predicat ;

9 WHERE - Principe générale
Les prédicats simples Un prédicat simple est la comparaison de deux expressions ou plus au moyen d'un opérateur logique : WHERE exp1 = exp2 WHERE exp1 != exp2 WHERE exp1 < exp2 WHERE exp1 > exp2 WHERE exp1 <= exp2 WHERE exp1 >= exp2 WHERE exp1 BETWEEN exp2 AND exp3 WHERE exp1 LIKE exp2 WHERE exp1 NOT LIKE exp2 WHERE exp1 IN (exp2, exp3,...) WHERE exp1 NOT IN (exp2, exp3,...) WHERE exp IS NULL WHERE exp IS NOT NULL

10 WHERE - Principe générale
• Les trois types d'expressions (arithmétiques, caractères, ou dates) peuvent être comparées au moyen des opérateurs d'égalité ou d'ordre (=, !=, <, >, <=, >=). • Pour les types date, la relation d'ordre est l'ordre chronologique; pour les types caractères, la relation d'ordre est l'ordre lexicographique.

11 WHERE - Principe générale
• exp1 BETWEEN exp2 AND exp3 est vrai si exp1 est compris entre exp2 et exp3, bornes incluses. • exp1 IN (exp2 , exp3...) est vrai si exp1 est égale à l'une des expressions de la liste entre parenthèses. • exp1 LIKE exp2 test l'égalité de deux chaînes en tenant compte des caractères jokers dans la 2ème chaîne : l'expression _ remplace un seul caractère. l'expression % remplace une chaîne de caractères de longueur quelconque. l'expression 'KARIM' LIKE '_AR%' sera vraie. • exp IS [NOT] NULL est vrai si l'expression a la valeur NULL (ou l'inverse avec NOT).

12 Les opérateurs logiques
• Les opérateurs logiques AND et OR peuvent être utilisés pour combiner plusieurs prédicats. Exemple 1: Afficher les noms des employés du département 30 ayant un salaire supérieur à 700DT. SELECT ename FROM emp WHERE Deptno = 30 AND sal> 700; Exemple 2: Afficher les directeurs et les secrétaires du département 10. SELECT * FROM emp WHERE (job= 'DIRECTEUR' OR job= 'SECRETAIRE') AND deptno= 10;

13 Les opérateurs logiques
Exemple : Quels sont les employés dont la commission est supérieure au salaire ? SELECT ename, sal, comm FROM emp WHERE comm > salaire; Exemple : Quels sont les employés gagnant entre et 25000? SELECT ename, sal WHERE sal BETWEEN AND 25000;

14 Les opérateurs logiques
Exemple : Quels sont les employés commerciaux ou ingénieurs? SELECT empno, ename, job, sal FROM emp WHERE job IN ('commercial','ingenieur'); Exemple : Quels sont les employés dont le nom commence par M? SELECT ename WHERE ename LIKE 'M%';

15 Les opérateurs logiques
Exemple : Quels sont les employés directeurs, ou commerciaux et travaillant dans le département 10? SELECT ename, job, sal, deptno FROM emp WHERE job= 'directeur' OR (job= 'commercial' AND deptno= 10); Exemple : Quels sont les employés directeurs ou commerciaux, et travaillant dans le département 10? SELECT empno, ename, job, deptno FROM emp WHERE (job='directeur' OR job= 'commercial') AND deptno= 10;

16 La Valeur NULL Pour SQL, une valeur NULL est une valeur non définie. Il est possible d'ajouter une ligne à une table sans spécifier de valeur pour les colonnes non obligatoires : ces colonnes absentes auront la valeur NULL. Par exemple les employés dont la rémunération ne prend pas en compte de commission auront une valeur NULL, c'est-à-dire indéfinie, comme commission. L'opérateur IS NULL permet de tester la valeur NULL : le prédicat expr IS NULL est vrai si l'expression a la valeur NULL (c'est-à-dire si elle est indéfinie). Exemple : Quels sont les employés dont la commission a la valeur NULL? SELECT ename FROM emp WHERE comm IS NULL; L'opérateur IS NOT NULL permet de construire un prédicat vrai si la valeur n'est pas NULL (et donc le prédicat expr IS NOT NULL est vrai si expr est définie)

17 La Valeur NULL Remarques
La valeur NULL est différente de la valeur zéro qui, elle, qui est une valeur bien définie. Le prédicat expr = NULL est toujours faux, et ne permet donc pas de tester si l'expression a la valeur NULL. Une expression de la forme NULL + val donne NULL comme résultat quelle que puisse être la valeur de val.

18 La jointure peut être exprimée par la clause WHERE
La jointure est une opération permettant de combiner des informations venant de plusieurs tables. Les exemples suivants se limiteront à deux tables, mais on peut joindre jusqu'à 256 tables. Une jointure se formule simplement en spécifiant plusieurs tables derrière le FROM de la façon suivante : La jointure peut être exprimée par la clause WHERE Exemple select ename, dname from emp, dept where emp.deptno = dept.deptno; Si on ne précise pas de condition de sélection, le résultat obtenu sera le produit cartésien des tables présentes derrière le FROM (résultat non souhaité en général).

19 Jointure naturelle ou équi-jointure
La jointure: Jointure naturelle ou équi-jointure Le rapprochement de chaque ligne de la table emp avec la ligne de la table dept ayant même numéro de département permet d'obtenir la liste des employés avec la localité dans laquelle ils travaillent. Ce rapprochement entre deux colonnes appartenant à deux tables différentes mais ayant le même sens (ici le numéro de département) et venant vraisemblablement d'une relation 1-n lors de la conception (ici 1 entité département pour n entités employés) est assez naturel. C'est pourquoi ce type de jointure porte le nom de jointure naturelle ou d'équi-jointure. Exemple : Donner pour chaque employé son nom et son lieu de travail. SELECT emp.name, loc FROM emp, dept WHERE emp.deptno = dept.deptno; Le fait que la colonne contenant le numéro de département (deptno) ait le même nom dans les deux tables a rendu nécessaire le préfixage par le nom de table dans le critère de jointure (clause WHERE). Par contre le nom de colonne Loc n'a pas besoin d'être préfixé car il n'y a pas d'ambiguïté sur la table à laquelle cette colonne appartient.

20 Jointure naturelle ou équi-jointure
La jointure: Jointure naturelle ou équi-jointure Il peut être utile de rassembler des informations venant d'une ligne d'une table avec des informations venant d'une autre ligne de la même table. NOMEMP NOMMGR FORD JONES SCOTT JONES TURNER BLAKE ALLEN BLAKE WARD BLAKE JAMES BLAKE MARTIN BLAKE MILLER CLARK ADAMS SCOTT BLAKE KING JONES KING CLARK KING SMITH FORD 13 ligne(s) sélectionnée(s). Exemple : Donner pour chaque employé le nom de son supérieur hiérarchique. SELECT emp.ename employe, mgr.ename manager FROM emp, emp mgr WHERE emp.mgr = mgr.empno; Remarque : Dans ce cas, il faut impérativement renommer au moins l'une des deux occurrences de la table (ici emp) en lui donnant un synonyme, afin de pouvoir préfixer sans ambiguïté chaque nom de colonne.

21 La jointure: Autres Jointures
Le critère d'égalité est le critère de jointure le plus naturel. Mais on peut utiliser d'autres types de comparaisons comme critères de jointures. Exemple : Quels sont les employés gagnant plus que ALLEN? SELECT emp.ename, emp.sal, emp.job FROM emp, emp j WHERE emp.sal > j.sal AND J.ename = ALLEN';

22 La jointure: Autres Jointures
Lorsqu'une ligne d'une table figurant dans une jointure n'a pas de correspondant dans les autres tables, elle ne satisfait pas au critère d'équi-jointure et donc ne figure pas dans le résultat de la jointure. Une option permet de faire figurer dans le résultat les lignes satisfaisant la condition d'équi-jointure plus celles n'ayant pas de correspondant. Cette option s'obtient en accolant (+) au nom de colonne de la table dans laquelle manquent des éléments, dans la condition d'équi-jointure. SELECT emp.ename, loc FROM emp, dept WHERE emp.deptno= dept.deptno; Exemple : Le département 40 ne figurait pas dans le résultat du SELECT précédent. Par contre, il figurera dans le résultat du SELECT suivant. SELECT emp.ename, loc FROM emp, dept WHERE emp.deptno (+)= dept.deptno;


Télécharger ppt "Langage d’interrogation des Données LID"

Présentations similaires


Annonces Google