SECTEURS NOUVEAUX ? FIASCOS IDIOTS...
Apr�s avoir v�cu plusieurs ann�es euphoriques, certaines Start Up Internet
sont actuellement � la peine. Car m�me si le march� des nouvelles technologies
est fabuleux, les perspectives de croissances ph�nom�nales, les investisseurs
ont perdu de vue la notions la plus fondamentale de l'�conomie : une entreprise
doit �tre rentable. Et bizarrement, ce point �tait absent de tr�s nombreux
Business Plan, Businness Plan ayant permis � ne nombreuses soci�t�s de
lever des sommes astronomiques. Certaines d'entre elles n'existaient et
ne communiquaient que pour plaire � leurs investisseurs, et n'avaient m�me
aucune activit� commerciale.
La r�action des financiers est impitoyable : la majorit� des investisseurs
stoppent maintenant leurs investissements, et demandent � leurs entreprises
d'�tre imm�diatement rentables. Tout de suite. Et, comme nous sommes de
bon montons de Panurges, les valeurs boursi�res baissent, des projets tr�s
prometteurs ne trouvent plus preneurs, et les d�cideurs affichent une frilosit�
exag�r�e. On oublie que de nombreuses entreprises font d�j� d'�normes b�n�fices,
que le commerce �lectronique affiche de tr�s bons chiffres pour l'an 2000,
et que ceux ci vont tripler dans les deux ans. Que nous sommes en train
de transposer tout notre mod�le �conomique, notre fa�on de travailler,
et d'organiser diff�remment notre soci�t�. Et surtout que c'est un sacr�
chantier qui va g�n�rer une immense activit�...
METIERS NOUVEAUX ? SOYONS PROS !!!
L'analogie avec le d�veloppement est �vidente : Internet a permis � tout
un chacun d'ouvrir un espace chez un h�bergeur, et � l'aide de livres devenus
tr�s accessibles et facilement disponibles de commencer ses propres r�alisations.
Intellectuellement, culturellement, ce fut une nouveaut� fabuleuse. Dans
le m�me temps, les informaticiens traditionnels n'ont pas toujours pris
au s�rieux ces nouvelles techniques "avec des images qui bougent", et que
"tout le monde touche". C'est pour cela que nous trouvons beaucoup d'autodidactes
dans les �quipes techniques Web. M�me si les informaticiens issus de formations
classiques sont maintenant de plus en plus pr�sent au sein des �quipes
de d�veloppements Internet, il est important de professionnaliser les m�thodes
de travail. De cesser l'amateurisme, de r�apprendre l'analyse et le g�nie
logiciel. En bref, de devenir hyper professionnel afin de ne pas faire
l'erreur de se d�cr�dibiliser quand viendra pour nous aussi l'heure du
bilan technique du travail r�alis� ces derni�res ann�es. Car nous aussi,
nous serons jug�s, en quelque sorte, quand nos d�veloppements seront repris
pour �tre adapt�s aux nouveaux besoins de l'entreprise, ou convertis aux
technologies futures :
Ce n'est pas parce qu'un domaine est nouveau, que les principes fondamentaux
ne sont plus valables.
LANGAGE SQL : SYNTAXE D'EXTRACTION DES DONNEES
Le langage SQL (Structured Query Langage, ou Langage d'Interrogation Structur�)
date de la fin des ann�s 70. (voir article Un
peu d'histoire des SGBD sur le web et ailleurs du 13 Novembre 2000).
Nous allons d�j� commencer par voir comment lire les donn�es, et ce que
cela signifie r�ellement.
Appuyons-nous sur ce sch�ma de base :
Syntaxe de la commande SELECT :
SELECT [ALL | DISTINCT ] liste de colonnes
FROM Table_1, table_2, ... , Table_n
WHERE ......
GROUP BY ......
HAVING ........
ORDER BY .......
COMPUTE .......
Exemples simples :
SELECT NOM, PRENOM FROM CLIENT
renvoie le contenu des colonnes NOM et PRENOM de la table CLIENT.
SELECT NOM as lastname, PRENOM as firstname FROM CLIENT
renverra le m�me contenu, mais en renommant le nom des colonnes de sorties.
SELECT LIBELLE, PRIXUNITAIRE * 0.85 as prixpromo FROM ARTICLE
affichera le nom des articles et le prix diminu� de 15%. Il est donc possible
d'effectuer des calculs directement au niveau de la base de donn�e, ce
qui �vitera de faire appel � une partie de script sp�cialement d�velopp�e
pour l'occasion.
D�tail des clauses optionnelles :
La clause WHERE exprime les conditions de recherches.
La clause GROUP BY groupe les r�sultats par crit�res.
La clause HAVING permet de restreindre les r�sultats en imposant
une propri�t�.
La clause ORDER BY trie les r�sultats suivant un crit�re de qualification.
La clause COMPUTE g�n�re des statistiques.
LANGAGE SQL : LA CLAUSE WHERE
Les conditions de recherches peuvent faire r�f�rence � des colonnes qui
ne sont pas incluse dans la liste de s�lection. Elle est tr�s utilis�e
pour d�finir ce que l'on app�le des jointures :
SELECT CLIENT.NOM, CLIENT.PRENOM, FACTURE.DATE
FROM CLIENT, FACTURE
WHERE CLIENT.ID_CLIENT=FACTURE.ID_CLIENT
renverra le nom et le pr�nom des clients ayant des factures, ainsi que
la/les date des factures correspondantes. Il est important de faire une
jointure sur ID_CLIENT dans la clause Where, pour indiquer au moteur SQL
que la liaison entre les deux tables s'effectue sur cette colonne 'commune'.
(Nous reviendrons dans un prochain article sur le fonctionnement d'un moteur
SQL).
Nous avons plusieurs outils pour les types de condition :
Op�rateur de comparaison : = , > , < , >= , <=, <>
SELECT LIBELLE, PRIXUNITAIRE
FROM ARTICLE
WHERE PRIXUNITAIRE <>'100'
renverra les articles dont le prix est diff�rent de 100. Il est important
de mettre les c�tes ' ' dans la clause Where, car sinon le moteur SQL interpr�tera
100 comme �tant une colonne.
Intervalles : BETWEEN , NOT BETWEEN
SELECT LIBELLE, PRIXUNITAIRE
FROM ARTICLE
WHERE PRIXUNITAIRE BETWEEN '100' AND '200'
renverra les articles dont le prix est compris entre 100 et 200.
Listes : IN , NOT IN
SELECT LIBELLE, PRIXUNITAIRE
FROM ARTICLE
WHERE PRIXUNITAIRE IN ('100','200','300)
renverra les articles dont le prix est soit de 100, soit de 200, soit de
300.
Correspondances de cha�nes : LIKE , NOT LIKE
Quelques jokers :
- % joker : toute cha�ne de caract�re
- - joker simple: un caract�re, n'importe lequel
- [ ] un caract�re de l'intervalle ou de l'ensemble sp�cifi�
- [^ ] un caract�re en dehors de l'intervalle ou de l'ensemble
sp�cifi�
SELECT LIBELLE, PRIXUNITAIRE
FROM ARTICLE
WHERE LIBELLE LIKE '%teu%'
renverra les articles dont le nom contient 'teu' (pelleteuse, par exemple....)
Valeurs inconnues : IS NULL, IS NOT NULL
SELECT LIBELLE, PRIXUNITAIRE
FROM ARTICLE
WHERE PRIXUNITAIRE IS NOT NULL
renverra les articles dont le prix existera, c'est � dire aura une valeur
correspondante dans la table.
ATTENTION !!! En sql, NULL ne signifie pas 0 ,il repr�sente une valeur ind�termin�e,
il signifie 'rien', comme l'ensemble vide en Math�matique.
Combinaisons : AND , OR
SELECT LIBELLE, QUANTITE, DATE
FROM ARTICLE , CONTIENT, FACTURE
WHERE ARTICLE.ID_ARTICLE=CONTIENT.ID_ARTICLE
AND CONTIENT.ID_FACTURE=FACTURE.ID_FACTURE
AND PRIXUNITAIRE NOT BETWEEN '100' AND '200'
OR PRIXUNITAIRE='150'
renverra les articles, leur quantit� par facture, et la date, et ceci pour
les articles dont le prix n'est pas compris entre '100' et '200' ou est
�gal � '150'.
LANGAGE SQL : LES AGREGATS
Les fonctions d'agr�gats calculent des valeurs � partir des donn�es d'une
colonne particuli�re. Les op�rateurs d'agr�gat sont : sum (somme), avg
(moyenne), max (le plus grand), min (le plus petit), et count (le nombre
d'enregistrements retourn�s).
SELECT sum(PRIXUNITAIRE)
FROM ARTICLE, CONTIENT
WHERE ARTICLE.ID_ARTICLE=CONTIENT.ID_ARTICLE
AND CONTIENT.ID_FACTURE='123456'
renverra le montant total de la facture '123456'
SELECT avg(PRIXUNITAIRE)
FROM ARTICLE, CONTIENT
WHERE ARTICLE.ID_ARTICLE=CONTIENT.ID_ARTICLE
AND CONTIENT.ID_FACTURE='123456'
renverra le prix moyens par article de la facture '123456'
SELECT max(PRIXUNITAIRE)
FROM ARTICLE, CONTIENT
WHERE ARTICLE.ID_ARTICLE=CONTIENT.ID_ARTICLE
AND CONTIENT.ID_FACTURE='123456'
renverra le plus grand prix de la facture '123456'
SELECT min(PRIXUNITAIRE)
FROM ARTICLE, CONTIENT
WHERE ARTICLE.ID_ARTICLE=CONTIENT.ID_ARTICLE
AND CONTIENT.ID_FACTURE='123456'
renverra le plus petit prix de la facture '123456'
SELECT count(PRIXUNITAIRE)
FROM ARTICLE, CONTIENT
WHERE ARTICLE.ID_ARTICLE=CONTIENT.ID_ARTICLE
AND CONTIENT.ID_FACTURE='123456'
renverra le nombres d'articles figurants sur la facture '123456'
LANGAGE SQL : LA CLAUSE GROUP BY
La clause GROUP BY, utilis�e dans une instruction SELECT,
divise le r�sultat d'une table en groupe. Il y a actuellement 16 niveaux
de sous-groupes possibles.
La clause GROUP BY est pr�sente dans les requ�tes qui comportent �galement
des fonctions d'agr�gats, ces derni�res produisant alors une valeur pour
chaque groupe, �galement appel� agr�gat vectoriel.
SELECT NOM, avg(PRIXUNITAIRE), sum(PRIXUNITAIRE), ID_FACTURE
FROM ARTICLE , CONTIENT, FACTURE, CLIENT
WHERE ARTICLE.ID_ARTICLE=CONTIENT.ID_ARTICLE
AND CONTIENT.ID_FACTURE=FACTURE.ID_FACTURE
AND FACTURE.ID_CLIENT=CLIENT.ID_CLIENT
GROUP BY ID_FACTURE
renverra pour chaque facture, par nom de client, le prix moyens ainsi que
la quantit� des produits pr�sents sur chaque facture.
LE LANGAGE SQL EST TRES SOUS-ESTIME. ET POURTANT...
Il n'est pas possible de tout voir en un seul article. La prochaine fois,
je d�taillerais les clauses HAVING, ORDER BY, et COMPUTE. Ensuite, je vous
montrerais comment fonctionne un moteur de base de donn�e, afin de bien
comprendre de quoi il s'agit, et de montrer comment optimiser ses requ�tes
SQL. Ensuite, nous nous amuseront un peu avec quelques requ�tes un peu
complexes, mais qui permettront surtout d'avoir l'information en un seul
acc�s � la base de donn�e, et de retoucher ensuite cette information le
moins possible dans le script lui-m�me. Autant limiter les acc�s � la base,
et r�cup�rer le maximum d'information en une seule requ�te. Car une fois
que les requ�tes principalement utilis�es ont �t� identifi�es, il y a des
m�thodes tr�s simples pour acc�l�rer les temps de r�ponse de la base sur
ces requ�tes. Et surtout, cela �vitera de retraiter les donn�es dans de
longues et lourdes routine de programmation, souvent illisibles, incompr�hensibles,
et tr�s tr�s co�teuses en temps machine : il n'y a rien de pire qu'un trie
de donn�es effectu�e sous forme de pile (tableaux pass�s en m�moires),
alors autant �viter les lourdeurs inutiles.
Apr�s, tout est question de choix technologique et logicielle : un programme
ou un site reposant sur une base complexe devra peut �tre utiliser un moteur
SQL cons�quent et plus professionel...
�
�
St�phane Lambert
http://www.vediovis.fr/
Sp�cialis� dans le d�veloppement Web, St�phane LAMBERT
a fond� VEDIOVIS PRODUCTIONS en Mai 2000.
Son exp�rience couvre essentiellement les sites � fortes audiences,
institutionnels ou audiovisuels.
Tous droits r�serv�s - Reproduction m�me
partielle interdite sans autorisation pr�alable
| |