Saturday, February 25, 2012

Liens pratiques de la semaine

Vous trouverez dans ce billet une s�lection de liens pratiques autour des technologies Eclipse qui m'ont particuli�rement int�ress�es ces derni�res semaines.   

Eclipse
  • Pour rappel, en juin 2012 sortira la version Eclipse Juno. Le nom de la version qui suivra Juno sera Kepler. Elle sortira aux alentours de juin 2013.
  • Eclipse 3.7.2 est sortie. Les nouveaut�s de cette nouvelle version sont r�sum�es sur cette page.
  • Un billet qui donne des nouvelles sur le projet Nebula qui, pour rappel, fournit un ensemble de composants graphiques. Parmi les nouveaut�s, nous remarquerons les composants Picture Control et Pagination Control fournis par Angelo Zerr et Pascal Leclerq. 
  • La prochaine version d'Eclipse Juno est disponible en milestone M5 qui sera align�e avec la version Eclipse 4.2 (page des nouveaut�s et page de t�l�chargement). A noter �galement que l'outil de recommandations de code (Eclipse Code Recommenders) sera int�gr� dans les distributions pour le d�veloppement d'Eclipse RCP et RAP.

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.




Wednesday, February 1, 2012

Ecrire des instructions SQL SELECT �l�mentaires : SQL sous Oracle

Pour extraire des donn�es de la base, vous devez utiliser l'instruction SQL (Structured Query Language) SELECT. Il est parfois n�cessaire de restreindre le nombre de colonnes � afficher. Cet article d�crit toutes les instructions SQL n�cessaires � l'ex�cution de ces actions.



Diff�rentes fonctions des instructions SQL SELECT:



Une instruction SELECT permet d'extraire des informations d'une base de donn�es. L'utilisation d'une
instruction SELECT offre les possibilit�s suivantes :
� Projection : Cette fonction de SQL permet de choisir les colonnes d'une table qu'une interrogation
doit renvoyer. Vous pouvez choisir autant de colonnes que vous le souhaitez.
� S�lection : Cette fonction de SQL permet de choisir les lignes d'une table qu'une interrogation doit
renvoyer. Divers crit�res de restriction sont disponibles � cet effet.
� Jointure : Cette fonction de SQL permet de joindre des donn�es stock�es dans diff�rentes tables.
Les jointures seront d�crites en d�tail dans un chapitre ult�rieur.

Instruction SELECT �l�mentaire


Dans sa forme la plus simple, une instruction SELECT comprend :
� une clause SELECT pr�cisant les colonnes � afficher,
� une clause FROM sp�cifiant la table qui contient les colonnes r�pertori�es dans la clause SELECT.
Explication de la syntaxe :

SELECT                    d�signe une liste r�pertoriant une ou plusieurs colonnes
*                                 permet de s�lectionner toutes les colonnes
DISTINCT                permet de supprimer les doublons
column|expression    permet de s�lectionner la colonne d�sign�e ou l'expression
alias                           permet d'attribuer des en-t�tes diff�rents aux colonnes s�lectionn�es
FROM  table            permet de d�signer la table contenant les colonnes

Remarque : Tout au long de ce cours, nous utiliserons les termes mot-cl�, clause et instruction comme suit :
� Un mot-cl� renvoie � un �l�ment SQL individuel.
Par exemple, SELECT et FROM sont des mots-cl�s.
� Une clause est une partie d'une instruction SQL.
Par exemple, SELECT employee_id, last_name, ... est une clause.
� Une instruction est une combinaison d'au moins deux clauses.
Par exemple, SELECT * FROM employees est une instruction SQL.


S�lectionner toutes les colonnes de toutes les lignes :


Vous pouvez afficher toutes les colonnes de donn�es d'une table en pla�ant un ast�risque (*) � la suite du
mot-cl� SELECT. Dans l'exemple de la diapositive, la table des services (DEPARTMENTS) comporte
quatre colonnes : DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID et LOCATION_ID. Elle contient sept lignes, une pour chaque service.
Vous pouvez �galement afficher l'ensemble des colonnes de la table en les �num�rant toutes � la suite du
mot-cl� SELECT. Par exemple, l'instruction SQL suivante, de m�me que l'exemple de la diapositive,
affiche toutes les colonnes et toutes les lignes de la table DEPARTMENTS :

SELECT department_id, department_name, manager_id, location_id
FROM departments;


S�lectionner des colonnes sp�cifiques de toutes les lignes :

Vous pouvez utiliser l'instruction SELECT pour afficher des colonnes sp�cifiques de la table. Pour cela,
indiquez les noms de colonne s�par�s par des virgules. L'exemple ci-dessus permet d'afficher tous les
num�ros de service et d'emplacement de la table DEPARTMENTS.
Dans la clause SELECT, indiquez les colonnes dans l'ordre dans lequel vous souhaitez qu'elles
apparaissent. Par exemple, pour afficher, de gauche � droite, l'emplacement avant le num�ro de service,
utilisez l'instruction suivante :
SELECT location_id, department_id
FROM departments;




Expressions arithm�tiques:

Si n�cessaire, vous pouvez modifier l'affichage des donn�es, effectuer des calculs ou �tudier diff�rents
sc�narios de simulation � l'aide d'expressions arithm�tiques. Une expression arithm�tique peut contenir
des noms de colonne, des constantes num�riques et des op�rateurs arithm�tiques.
Op�rateurs arithm�tiques:

Les op�rateurs arithm�tiques disponibles dans SQL sont pr�sent�s dans la diapositive. Vous pouvez les
utiliser dans n'importe quelle clause d'une instruction SQL, except� FROM.


Utiliser des op�rateurs arithm�tiques:


L'exemple de l'image d�crit l'utilisation de l'op�rateur d'addition pour calculer une augmentation de
salaire de 300 $ applicable � tous les employ�s, avec affichage d'une nouvelle colonne SALARY+300.
La colonne SALARY+300 qui r�sulte de ce calcul n'est pas une nouvelle colonne de la table
EMPLOYEES ; elle n'est que l'affichage d'un r�sultat. Par d�faut, le nom d'une nouvelle colonne est issu
du calcul dont elle provient : dans ce cas pr�cis, salary+300.
Remarque : Le serveur Oracle9i ignore les espaces situ�s avant et apr�s l'op�rateur arithm�tique.

Alias de colonne:

Lors de l'affichage des r�sultats d'une interrogation, iSQL*Plus prend g�n�ralement le nom de la colonne
s�lectionn�e comme en-t�te de colonne. Cet en-t�te n'est pas toujours explicite et s'av�re donc parfois
difficile � comprendre. L'alias de colonne permet de modifier l'en-t�te.
Placez l'alias � la suite du nom de colonne dans la liste SELECT en utilisant le caract�re espace en tant
que s�parateur. Par d�faut, les alias sont en majuscules. Placez l'alias entre guillemets (" ") s'il contient des
espaces ou des caract�res sp�ciaux (tels que # ou $), ou si les majuscules/minuscules doivent �tre
respect�es.

Le premier exemple affiche le nom et le pourcentage de commission de tous les employ�s. Le mot-cl�
facultatif AS a �t� plac� avant l'alias de colonne. L'utilisation ou l'omission de ce mot-cl� ne modifie pas
le r�sultat de l'interrogation. Dans l'instruction SQL, les alias de colonne "name" et "comm" sont sp�cifi�s
en minuscules, alors que les en-t�tes de colonne apparaissent en majuscules dans le r�sultat de
l'interrogation. En effet, comme mentionn� sur une diapositive pr�c�dente, les en-t�tes de colonne
s'affichent par d�faut en majuscules.
Le second exemple affiche le nom et le salaire annuel de tous les employ�s. L'alias Annual Salary a
�t� plac� entre guillemets car il contient un espace. L'en-t�te de colonne affich� est identique � l'alias de
colonne.

Op�rateur de concat�nation:

L'op�rateur de concat�nation (||) permet de lier des colonnes � d'autres colonnes, � des expressions
arithm�tiques ou � des constantes afin de cr�er une expression alphanum�rique. Les colonnes situ�es de
part et d'autre de l'op�rateur se combinent pour former une colonne de r�sultats unique.

Dans cet exemple, LAST_NAME et JOB_ID sont concat�n�es et re�oivent l'alias Employees. Le nom
des employ�s et leur ID de poste sont combin�s pour ne former qu'une colonne � l'affichage.
Le mot-cl� AS plac� devant l'alias simplifie la lecture de la clause SELECT.

Doublons :

Par d�faut, iSQL*Plus affiche le r�sultat d'une interrogation sans �liminer les doublons. L'exemple
ci-dessus affiche la totalit� des num�ros de service de la table EMPLOYEES. Les num�ros de service
apparaissent plusieurs fois.
Pour �liminer les doublons dans le r�sultat d'une interrogation, ajoutez le mot-cl� DISTINCT dans la
clause SELECT, directement � la suite du mot-cl� SELECT. Dans l'exemple ci-dessus, la table
EMPLOYEES comporte 20 lignes, mais on n'y distingue que sept num�ros de service.
Vous pouvez sp�cifier plusieurs colonnes � la suite du mot-cl� DISTINCT. Ce mot-cl� agit sur toutes les
colonnes s�lectionn�es et le r�sultat correspond aux combinaisons distinctes de ces colonnes.

SELECT DISTINCT department_id, job_id
FROM employees;