Pages

samedi 4 février 2012

Limiter le nombre de lignes à l'aide d'une sélection : SQL sous oracle



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. Cet article présente les instructions SQL à utiliser à cet effet.


Limiter le nombre de lignes à l'aide d'une sélection :



Dans l'exemple au-dessus, 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.


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.



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.












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 cidessous,
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.



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".



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 à 3000. La valeur explicite 3000 est fournie dans la clause WHERE.
Elle est comparée au salaire dans la colonne SALARY de la table EMPLOYEES.


Autres conditions de comparaison :



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.



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 (' ').




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 :


%   --------->  Représente n'importe quelle séquence de zéro ou plusieurs caractères.
_    --------->  Représente n'importe quel caractère.


Dans l'exemple , 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';



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;





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.



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.



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é.



Opérateur NOT :



Dans l'exemple , 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.






Aucun commentaire:

Enregistrer un commentaire

Partenaires

Computers Blogs

Contactez-nous

Nom

E-mail *

Message *

Tous droits resérvés-www.exercices-corriges.com Seo Blogger Templates