Saturday, February 4, 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.




No comments:

Post a Comment