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

Limiter et trier des données

Présentations similaires


Présentation au sujet: "Limiter et trier des données"— Transcription de la présentation:

1 Limiter et trier des données

2 Objectifs A la fin de ce chapitre, vous pourrez :
limiter le nombre de lignes extraites par une interrogation trier les lignes extraites par une interrogation But du chapitre Lors de l'extraction de données de la base, il est parfois nécessaire de restreindre le nombre de lignes renvoyées ou de préciser l'ordre d'affichage de ces lignes. Ce chapitre présente les instructions SQL à utiliser à cet effet.

3 Limiter le nombre de lignes à l'aide d'une sélection
EMPLOYEES "Extraire tous les employés du service 90" Limiter le nombre de lignes à l'aide d'une sélection Dans l'exemple de la diapositive, nous souhaitons afficher tous les employés du service 90. Seules les lignes dont la colonne DEPARTMENT_ID contient la valeur 90 sont renvoyées. Cette méthode de restriction est la base de la clause WHERE dans SQL.

4 Limiter le nombre de lignes sélectionnées
Limitez le nombre de lignes renvoyées à l'aide de la clause WHERE. La clause WHERE se place après la clause FROM. SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)]; Limiter le nombre de lignes sélectionnées Vous pouvez limiter le nombre de lignes renvoyées par l'interrogation à l'aide de la clause WHERE. Cette clause comporte une condition à satisfaire et se place immédiatement après la clause FROM. Si la condition est vraie, la ligne répondant à la condition est renvoyée. Explication de la syntaxe : WHERE limite l'interrogation aux lignes qui remplissent la condition concernée condition se compose de noms de colonne, d'expressions, de constantes et d'un opérateur de comparaison La clause WHERE peut comparer des valeurs dans des colonnes, des littéraux, des expressions arithmétiques ou des fonctions. Elle se compose de trois éléments : Nom de colonne, Condition de comparaison, Nom de colonne, constante ou liste de valeurs.

5 Utiliser la clause WHERE
SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90 ; Utiliser la clause WHERE Dans l'exemple, l'instruction SELECT extrait le nom, l'ID de poste et le numéro de service de tous les employés dans l'ID de poste est SA_REP. L'intitulé de poste SA_REP a été indiqué en majuscules pour garantir sa correspondance avec la colonne d'ID de poste de la table EMPLOYEES. En effet, la recherche tient compte des majuscules/minuscules dans les chaînes de caractères.

6 Chaînes de caractères et dates
Les chaînes de caractères et les dates doivent être placées entre apostrophes. La recherche tient compte des majuscules/minuscules pour les chaînes de caractères et du format pour les dates. Le format de date par défaut est DD-MON-RR. SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'Whalen'; Chaînes de caractères et dates Dans la clause WHERE, les chaînes de caractères et les dates doivent être placées entre apostrophes (' '), ce qui n'est pas le cas des constantes numériques. Toutes les recherches de caractères tiennent compte des majuscules/minuscules. Dans l'exemple ci-dessous, aucune ligne n'est renvoyée car tous les noms stockés dans la table EMPLOYEES comportent indifféremment des majuscules et des minuscules. SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'WHALEN'; Dans les bases de données Oracle, les dates sont stockées dans un format numérique interne représentant le siècle, l'année, le mois, le jour, les heures, les minutes et les secondes. Le format de date par défaut est DD-MON-RR. Remarque : La modification du format de date par défaut est décrite dans un chapitre ultérieur.

7 Conditions de comparaison
Opérateur = > >= < <= <> Signification Egal à Supérieur à Supérieur ou égal à Inférieur à Inférieur ou égal à Différent de Conditions de comparaison Ces opérateurs de comparaison s'utilisent dans des conditions qui comparent une expression avec une autre valeur ou expression. Dans la clause WHERE, ils s'utilisent de la façon suivante : Syntaxe ... WHERE expr operator value Exemple : ... WHERE hire_date='01-JAN-95' ... WHERE salary>=6000 ... WHERE last_name='Smith' Vous ne pouvez pas utiliser d'alias dans la clause WHERE. Remarque : Les symboles != et ^= peuvent également représenter la condition "différent de".

8 Utiliser des conditions de comparaison
SELECT last_name, salary FROM employees WHERE salary <= 3000; Utiliser des conditions de comparaison Dans l'exemple, l'instruction SELECT extrait de la table EMPLOYEES le nom et le salaire des employés dont le salaire est inférieur ou égal à La valeur explicite 3000 est fournie dans la clause WHERE. Elle est comparée au salaire dans la colonne SALARY de la table EMPLOYEES.

9 Autres conditions de comparaison
Opérateur BETWEEN ...AND... IN(set) LIKE IS NULL Signification Compris entre ... et ... (bornes comprises) Correspond à une valeur de la liste Ressemblance partielle de chaînes de caractères Correspond à une valeur NULL

10 Utiliser la condition BETWEEN
Utilisez la condition BETWEEN pour afficher des lignes en fonction d'une plage de valeurs. SELECT last_name, salary FROM employees WHERE salary BETWEEN 2500 AND 3500; Limite inférieure Limite supérieure Condition BETWEEN La condition BETWEEN permet d'afficher des lignes en fonction d'une plage de valeurs. La plage que vous indiquez comprend une limite inférieure et une limite supérieure. Dans l'exemple de la diapositive, l'instruction SELECT renvoie les lignes de la table EMPLOYEES correspondant aux employés dont le salaire est compris entre 2 500 $ et 3 500 $. Les valeurs indiquées avec la condition BETWEEN sont inclusives. Vous devez préciser d'abord la limite inférieure.

11 Utiliser la condition IN
Utilisez la condition d'appartenance IN pour vérifier la présence de valeurs dans une liste. SELECT employee_id, last_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201); Condition IN Pour vérifier si des valeurs sont incluses dans un ensemble donné, utilisez la condition IN, également nommée condition d'appartenance. L'exemple de la diapositive consiste à afficher le numéro, le nom, le salaire et le numéro de manager de tous les employés dont le numéro de manager est 100, 101 ou 201. La condition IN peut s'utiliser avec n'importe quel type de données. Dans l'exemple suivant, une ligne de la table EMPLOYEES est renvoyée pour chaque employé dont le nom figure dans la liste de la clause WHERE : SELECT employee_id, manager_id, department_id FROM employees WHERE last_name IN ('Hartstein', 'Vargas'); Si vous utilisez des caractères ou des dates dans la liste, placez-les entre apostrophes (' ').

12 Utiliser la condition LIKE
Utilisez la condition LIKE pour rechercher des chaînes de caractères valides à 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 first_name FROM employees WHERE first_name LIKE 'S%'; Condition LIKE Il est possible que vous ne connaissiez pas toujours les valeurs exactes à rechercher. Vous pouvez sélectionner des lignes correspondant à une suite de caractères à l'aide de la condition LIKE. L'opération ainsi exécutée est appelée recherche générique. Deux symboles sont disponibles pour construire la chaîne de recherche : Dans la diapositive, l'instruction SELECT extrait de la table EMPLOYEES les prénoms des employés commençant par un S majuscule. Les prénoms commençant par un s minuscule ne sont pas renvoyés. Vous pouvez utiliser la condition LIKE en tant que raccourci pour certaines comparaisons de type BETWEEN. L'exemple suivant permet d'afficher le nom et la date d'embauche de tous les employés recrutés entre janvier et décembre 1995 : SELECT last_name, hire_date FROM employees WHERE hire_date LIKE '%95';

13 Utiliser la condition LIKE
Vous pouvez combiner plusieurs caractères génériques de recherche. Vous pouvez utiliser l'identificateur ESCAPE pour rechercher les symboles % et _. SELECT last_name FROM employees WHERE last_name LIKE '_o%'; Combiner des caractères génériques Vous pouvez combiner les symboles % et _ à des caractères littéraux. L'exemple de la diapositive permet d'afficher les noms d'employé dont la deuxième lettre est un "o". Option ESCAPE Lorsque vous souhaitez obtenir une correspondance exacte pour les caractères % et _, utilisez l'option ESCAPE. Cette option permet de définir le caractère d'échappement. Pour rechercher les chaînes comportant les caractères "SA_", utilisez l'instruction SQL suivante : SELECT employee_id, last_name, job_id FROM employees WHERE job_id LIKE '%SA\_%' ESCAPE '\'; L'option ESCAPE identifie la barre oblique inverse (\) comme étant le caractère d'échappement. Ainsi, le signe souligné qui suit ne sera pas interprété comme le caractère générique ( _ ), mais comme le caractère lui-même.

14 Utiliser les conditions NULL
Recherchez des valeurs NULL avec l'opérateur IS NULL. SELECT last_name, manager_id FROM employees WHERE manager_id IS NULL; Conditions NULL Les conditions NULL comprennent les conditions IS NULL et IS NOT NULL. La condition IS NULL recherche des valeurs NULL, c'est-à-dire des valeurs indisponibles, non attribuées, inconnues ou inapplicables. Il est donc impossible de rechercher une valeur NULL à l'aide de l'opérateur "=" puisqu'elle ne peut répondre à aucune condition d'égalité ou d'inégalité. L'exemple de la diapositive permet d'extraire le nom et le manager de tous les employés qui n'ont pas de manager. Par exemple, pour afficher le nom, l'ID de poste et la commission de tous les employés NON habilités à toucher une commission, utilisez l'instruction SQL suivante : SELECT last_name, job_id, commission_pct FROM employees WHERE commission_pct IS NULL;

15 Conditions logiques Opérateur AND OR NOT Signification
Renvoie TRUE si les deux conditions sont vraies Renvoie TRUE si l'une des conditions est vraie Renvoie la valeur TRUE si la condition qui suit l'opérateur est fausse Conditions logiques Une condition logique combine le résultat de deux conditions afin de produire un résultat unique ou inverse le résultat d'une condition. Une ligne est renvoyée uniquement si le résultat global de la condition est vrai. Dans SQL, trois opérateurs logiques sont disponibles : AND OR NOT Tous les exemples présentés jusqu'ici ne proposaient qu'une seule condition dans la clause WHERE. En utilisant les opérateurs AND et OR, vous pouvez inclure plusieurs conditions dans une même clause WHERE.

16 Utiliser l'opérateur AND
L'opérateur AND exige que les deux conditions soient vraies. SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >=10000 AND job_id LIKE '%MAN%'; Opérateur AND Dans l'exemple, les deux conditions doivent être vraies pour qu'un enregistrement soit sélectionné. Ainsi, seuls les employés dont l'intitulé de poste contient la chaîne MAN et qui gagnent au moins 10 000 $ seront sélectionnés. Toutes les recherches de caractères font la distinction entre les majuscules et les minuscules. Aucune ligne n'est renvoyée si la chaîne MAN n'est pas entièrement en majuscules. Les chaînes de caractères doivent être placées entre apostrophes. Table de vérité de l'opérateur AND Le tableau suivant présente les résultats obtenus en combinant deux expressions avec AND :

17 Utiliser l'opérateur OR
L'opérateur OR exige que l'une des conditions soit vraie. SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 OR job_id LIKE '%MAN%'; Opérateur OR Dans l'exemple, l'une des conditions doit être vraie pour qu'un enregistrement soit sélectionné. Ainsi, tout employé dont l'ID de poste contient la chaîne MAN ou qui gagne au moins 10 000 $ est sélectionné. Table de vérité de l'opérateur OR Le tableau suivant présente les résultats obtenus en combinant deux expressions avec OR :

18 Utiliser l'opérateur NOT
SELECT last_name, job_id FROM employees WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP'); Opérateur NOT Dans l'exemple de la diapositive, le nom et l'ID de poste de tous les employés dont l'ID de poste est différent de IT_PROG, ST_CLERK ou SA_REP s'affichent. Table de vérité de l'opérateur NOT Le tableau suivant présente le résultat de l'utilisation de l'opérateur NOT avec une condition : Remarque : Vous pouvez également utiliser l'opérateur NOT avec d'autres opérateurs SQL, tels que BETWEEN, LIKE et NULL. ... WHERE job_id NOT IN ('AC_ACCOUNT', 'AD_VP') ... WHERE salary NOT BETWEEN AND ... WHERE last_name NOT LIKE '%A%' ... WHERE commission_pct IS NOT NULL

19 Règles de priorité Ordre d'évaluation Opérateur
1 Opérateurs arithmétiques 2 Opérateur de concaténation 3 Conditions de comparaison 4 IS [NOT] NULL, LIKE, [NOT] IN 5 [NOT] BETWEEN 6 Condition logique NOT 7 Condition logique AND 8 Condition logique OR Règles de priorité Les règles de priorité déterminent l'ordre d'évaluation et de calcul des expressions. Le tableau ci-dessus décrit l'ordre de priorité par défaut. Vous pouvez modifier cet ordre en plaçant entre parenthèses les expressions à calculer en priorité. Les parenthèses permettent de modifier les règles de priorité.

20 Règles de priorité SELECT last_name, job_id, salary FROM employees
WHERE job_id = 'SA_REP' OR job_id = 'AD_PRES' AND salary > 15000; Exemple de priorité de l'opérateur AND L'exemple de la diapositive présente deux conditions : Première condition : l'ID de poste est AD_PRES et le salaire est supérieur à 15 000. Deuxième condition : l'ID de poste est SA_REP. L'instruction SELECT se lit donc comme suit : "Sélectionner la ligne si un employé est président et s'il gagne plus de 15 000 $, ou s'il est représentant"

21 Règles de priorité Utilisez des parenthèses pour forcer la priorité.
SELECT last_name, job_id, salary FROM employees WHERE (job_id = 'SA_REP' OR job_id = 'AD_PRES') AND salary > 15000; Utiliser des parenthèses L'exemple contient deux conditions : Première condition : l'ID de poste est AD_PRES ou SA_REP. Deuxième condition : le salaire est supérieur à 15 000 $. L'instruction SELECT se lit donc comme suit : "Sélectionner la ligne si un employé est président ou vendeur, et s'il gagne plus de 15 000 $"

22 Clause ORDER BY … Triez des lignes à l'aide de la clause ORDER BY.
ASC : ordre croissant (par défaut) DESC : ordre décroissant La clause ORDER BY se place à la fin de l'instruction SELECT. SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date ; Clause ORDER BY L'ordre des lignes renvoyées par une interrogation n'est pas défini. Vous pouvez utiliser la clause ORDER BY pour trier les lignes. Auquel cas, vous devez la placer à la fin de l'instruction SQL. Vous pouvez désigner une expression, un alias ou une position de colonne comme condition du tri. Syntaxe SELECT expr FROM table [WHERE condition(s)] [ORDER BY {column, expr} [ASC|DESC]]; Explication de la syntaxe : ORDER BY précise l'ordre d'affichage des lignes extraites ASC classe les lignes en ordre croissant (ordre par défaut) DESC classe les lignes en ordre décroissant Si vous n'utilisez pas la clause ORDER BY, l'ordre du tri n'est pas défini et il est possible que le serveur Oracle n'extraie pas les lignes dans le même ordre à chaque fois pour une même interrogation. Utilisez cette clause pour afficher les lignes dans un ordre donné.

23 Trier par ordre décroissant
SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC ; Tri par défaut des données Les données sont triées par défaut dans l'ordre croissant : Les valeurs numériques s'affichent de la plus faible à la plus élevée, par exemple, de 1 à 999. Les dates s'affichent de la plus ancienne à la plus récente, par exemple, le 01-JAN-92 sera placé avant le 01-JAN-95. Les valeurs alphanumériques s'affichent dans l'ordre alphabétique, par exemple de A à Z. Les valeurs NULL s'affichent en dernier dans le cas d'un tri croissant et en premier dans le cas d'un tri décroissant. Inverser l'ordre par défaut Pour inverser l'ordre d'affichage des lignes, entrez le mot-clé DESC après le nom de colonne dans la clause ORDER BY. Dans l'exemple de la diapositive, le dernier employé embauché s'affiche en premier dans les résultats.

24 Trier par alias de colonne
SELECT employee_id, last_name, salary*12 annsal FROM employees ORDER BY annsal; Trier par alias de colonne Vous pouvez utiliser un alias de colonne dans la clause ORDER BY. Dans l'exemple de la diapositive, les données sont triées sur le salaire annuel.

25 Trier sur plusieurs colonnes
L'ordre des éléments de la liste ORDER BY donne l'ordre du tri. Vous pouvez effectuer un tri sur une colonne ne figurant pas dans la liste SELECT. SELECT last_name, department_id, salary FROM employees ORDER BY department_id, salary DESC; Trier sur plusieurs colonnes Vous pouvez trier les résultats d'une interrogation sur plusieurs colonnes, à concurrence du nombre de colonnes présentes dans la table concernée. Dans la clause ORDER BY, indiquez les noms de colonne séparés par des virgules. Pour inverser l'ordre de tri d'une colonne, faites suivre son nom du mot-clé DESC. Vous pouvez faire un tri sur des colonnes non incluses dans la clause SELECT. Exemple Affichez le nom et le salaire de tous les employés et classez le résultat par numéro de service croissant, puis par salaire décroissant. SELECT last_name, salary FROM employees ORDER BY department_id, salary DESC;

26 Synthèse Ce chapitre vous à permis d'apprendre à :
utiliser la clause WHERE pour limiter le nombre de lignes de résultat utiliser les conditions de comparaison utiliser les conditions BETWEEN, IN, LIKE et NULL appliquer les opérateurs logiques AND, OR et NOT utiliser la clause ORDER BY pour trier les lignes de résultat Synthèse Ce chapitre vous a permis d'apprendre à limiter et trier les lignes renvoyées par l'instruction SELECT et à utiliser différents opérateurs et conditions. SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)] [ORDER BY {column, expr, alias} [ASC|DESC]];

27 Présentation de l'exercice 2
Dans cet exercice, vous allez : sélectionner des données et modifier l'ordre d'affichage des lignes, limiter le nombre de lignes à l'aide de la clause WHERE, trier des lignes à l'aide de la clause ORDER BY. Présentation de l'exercice 2 Vous allez effectuer différents exercices faisant appel aux clauses WHERE et ORDER BY.

28 Exercice 2 1. Créez une instruction destinée à afficher le nom et le salaire des employés gagnant plus de 12 000 $. Enregistrez l'instruction SQL créée dans un fichier texte nommé lab2_1.sql, puis exécutez-la. 2. Créez une instruction destinée à afficher le nom et le numéro de service de l'employé dont le numéro est 176. 3. Modifiez le fichier lab2_1.sql pour afficher le nom et le salaire de tous les employés dont le salaire n'est pas compris entre 5 000 $ et 12 000 $. Enregistrez votre instruction SQL dans un fichier texte nommé lab2_3.sql.

29 Exercice 2 (suite) 4. Affichez le nom, l'ID de poste et la date d'entrée des employés embauchés entre le 20 février et le 1er mai Classez le résultat par date d'embauche croissante. 5. Affichez le nom et le numéro de service de tous les employés des services 20 et 50, classés par ordre alphabétique des noms. 6. Modifiez le fichier lab2_3.sql pour répertorier le nom et le salaire des employés qui gagnent entre 5 000 $ et 12 000 $ et qui appartiennent au service 20 ou 50. Nommez les colonnes Employee et Monthly Salary respectivement. Enregistrez à nouveau le fichier lab2_3.sql sous le nom lab2_6.sql, puis exécutez l'instruction du fichier lab2_6.sql.

30 Exercice 2 (suite) 7. Affichez le nom et la date d'embauche de chaque employé entré en 1994. 8. Affichez le nom et l'ID de poste de tous les employés qui n'ont pas de manager. 9. Affichez le nom, le salaire et la commission de tous les employés qui perçoivent des commissions. Triez les données dans l'ordre décroissant des salaires et des commissions. S'il vous reste du temps, effectuez les exercices suivants : 10. Affichez le nom de tous les employés dont la troisième lettre du nom est un a. 11. Affichez le nom de tous les employés dont le nom comporte un a et un e.

31 Exercice 2 (suite) Pour aller plus loin, effectuez les exercices suivants : 12. Affichez le nom, le poste et le salaire de tous les représentants ou magasiniers dont le salaire est différent de 2 500 $, 3 500 $ ou 7 000 $. 13. Modifiez le fichier lab2_6.sql pour afficher le nom, le salaire et la commission de tous les employés dont la commission est de 20 %. Enregistrez le fichier lab2_6.sql sous le nom lab2_13.sql, puis exécutez à nouveau l'instruction de lab2_13.sql.

32


Télécharger ppt "Limiter et trier des données"

Présentations similaires


Annonces Google