Michael J. Hernandez
Introduction
aux requêtes SQL
ISBN 2-212-09272-5
Avant-propos
« Le langage est par sa nature même un élément collectif :
il n’exprime jamais un concept précis
mais un compromis qui nous lie vous, moi et tous les autres. »
Thomas Ernest Hulme, Spéculations
La récupération d'informations sur une base de données est en général un exercice complexe.
Elle peut néanmoins se révéler relativement aisée à partir du moment où l'on comprend la
question posée à la base de données. Une fois comprise, la question peut être traduite vers le
langage utilisé par n'importe quel système de base de données. Dans la plupart des cas, il s'agit
de SQL (Structured Query Language). Votre requête doit prendre la forme d'une instruction
SQL pour que le système de base de données puisse identifier les informations que vous
souhaitez récupérer. SQL vous permet ainsi de communiquer avec votre système de base de
données.
Notre longue expérience de consultants sur les bases de données nous a permis de constater
que les individus souhaitant simplement récupérer des informations sur une base de données
sont nettement plus nombreux que ceux chargés de développer des programmes et des appli-
cations pour ces bases. Malheureusement, il n'existe aucun ouvrage consacré exclusivement à
la récupération d'informations, en particulier du point de vue du « simple mortel ». Il existe
naturellement un grand nombre d'ouvrages intéressants sur SQL mais la plupart traitent de la
programmation et du développement des bases de données.
C'est pourquoi nous avons pensé qu'il était temps de publier un ouvrage vous apprenant à
réaliser une requête correctement et efficacement. Vous avez entre les mains le fruit de notre
réflexion. Parmi les ouvrages traitant de SQL, celui-ci est unique en son genre dans le sens où
il ne concerne que les requêtes. Une fois que vous l'aurez lu, vous disposerez de toutes les
compétences nécessaires à la récupération des informations dont vous avez besoin.
La rédaction d'un tel ouvrage ne peut être l'œuvre d'une seule personne. Des rédacteurs, des
collègues, des amis et des parents nous ont témoigné tout leur soutien et nous ont prodigué de
Introduction aux requêtes SQL
2
précieux conseils au moment le plus opportun. Ces personnes nous ont encouragés et nous ont
aidés à rester motivés pour mener ce projet à bien.
Tout d'abord, nous souhaiterions remercier notre éditrice Mary O’Brien pour nous avoir
permis d'écrire ce livre. Elle a su deviner tout le potentiel de l'idée de départ et s'est entière-
ment consacrée à ce projet. Nous remercions Mary et son assistante Mariann Kourafas pour
leur infinie patience et leur soutien constant tout au long de la rédaction de cet ouvrage. Merci
également à Marilyn Rash et à l'équipe de production, et bravo à tous !
Nous souhaiterions également remercier nos rédacteurs techniques : Malcom C. Rubel,
Michael Blaha, Alexander Tarasul et Keith W. Hare. Malcom, comme toujours, travailler avec
toi fut un grand plaisir ! Michael et Alexander, merci pour tous vos commentaires et sugges-
tions fort utiles. Nous remercions tout particulièrement Keith pour avoir corrigé quelques
petites erreurs dans l'historique de SQL et pour toutes les informations présentées dans la
section « Ce que le futur nous réserve » du Chapitre 3. Merci encore à vous tous pour le temps
et les efforts que vous avez consacrés au projet et qui nous ont permis de rédiger un traité
exhaustif sur les requêtes SQL.
Enfin, nous remercions tout particulièrement Joe Celko pour son avant-propos. Joe est non
seulement expert en SQL mais c'est également un collègue et un bon ami. Nous respectons
son savoir et son expertise sur le sujet et sommes fiers qu'il ait accepté de nous faire part de
son opinion et de ses commentaires en début d'ouvrage.
J'adresse mes plus sincères remerciements à mon ami et collègue John L. Viescas pour m'avoir
donné l'opportunité de rédiger cet ouvrage avec lui. C'est lui qui est à l'origine du projet et qui
m'a convaincu d’y prendre part. John n'en est pas à son coup d'essai dans le domaine et il est
un auteur respecté et reconnu. C'est donc un honneur pour moi d'avoir collaboré avec lui sur
ce projet.
Enfin, je souhaiterais remercier Kendra, mon épouse. Elle s'est une fois de plus montrée très
patiente alors que je travaillais d'arrache-pied sur ce projet. Son aide a été inestimable et je lui
en suis infiniment reconnaissant.
Michael J. Hernandez,
Bellevue, Washington
Eh bien, Mike ! Je suis flatté de tous ces compliments, mais n’exagérons rien… Je t'ai peut-
être convaincu de collaborer à la rédaction de cet ouvrage, mais c'est bien toi qui as donné
corps à un projet adapté à un public de « simples mortels ». Expliquer le monde complexe de
SQL (c'est d'ailleurs l'un de mes thèmes de prédilection) à un si large public s'est révélé être
une tâche à la fois amusante et intéressante. Merci de m'avoir permis de le faire.
Contrairement à la tienne, mon épouse Suzanne ne déteste pas les marques publiques d'affec-
tion. Nous lui devons tous les deux un grand merci, non seulement pour m'avoir supporté
pendant que je me consacrais entièrement à cet ouvrage, mais également pour ses excellents
commentaires critiques et ses corrections. Elle s'y connaît en ordinateurs, mais elle est bel et
bien une « simple mortelle » lorsqu'il s'agit de bases de données. Elle représentait donc la
cible type lorsqu'il s'agissait de tester les premiers jets des chapitres. J'ai seulement dû lui
promettre une chose : cet été, pour nos vacances à Hawaï, je laisserai mon ordinateur portable
à la maison !
John L.Viescas
Austin, Texas
4
Création d’une requête simple
« Pensez comme un sage, mais communiquez dans la langue des gens ordinaires. »
William Butler Yeats
Dans ce chapitre :
La commande SELECT
Opposition entre données et informations
Traduction de la requête en SQL
Suppression des doublons
Tri des informations
• Sauvegarde
Exemples de commandes
Problèmes à résoudre
Introduction
Parmi toutes les commandes de SQL, SELECT a un statut vraiment particulier car c’est
l’instruction la plus puissante et la plus complexe de ce langage : elle permet de retrouver les
informations stockées dans les tables d’une base de données. On utilise SELECT conjointe-
ment avec des mots-clés et des clauses afin de trouver et de visualiser quasiment toutes les
informations possibles. SELECT permet de répondre à toutes les questions imaginables. Pour
peu que vous ayez conçu correctement votre base de données et que vous y ayez introduit des
informations fiables, vous obtiendrez toutes les réponses nécessaires pour prendre les bonnes
décisions et mener à bien votre projet.
SELECT peut être décomposé en trois opérations que nous appellerons commande SELECT,
expression SELECT et requête SELECT. (Cette décomposition a un but pédagogique : mieux
Les bases de SQL
PARTIE 2
64
vaut immédiatement appréhender la complexité de SELECT.) Chacune de ces opérations a
son propre ensemble de mots-clés et de clauses permettant de créer une commande SQL
finale. Comme vous l’apprendrez au fil de cet ouvrage, vous pouvez même combiner ces
opérations de différentes manières pour répondre à des questions très complexes.
Dans ce chapitre, nous commencerons par la commande SELECT et nous aborderons briève-
ment la requête SELECT. Nous approfondirons la commande SELECT dans les deux chapi-
tres suivants.
Dans les livres ou des magazines traitant des bases de données relationnelles, on rencontre relativement
souvent les termes « enregistrement » et « champ » utilisés au lieu de ligne et de colonne. Dans ce livre,
nous employons exclusivement ligne et colonne afin de rester cohérents avec la norme SQL.
La commande SELECT
La commande SELECT est l’élément-clé de toute question posée à une base de données.
Quand on crée et exécute une commande SELECT, on interroge la base de données à l’aide
d’une requête. En fait, de nombreux SGBDR permettent de sauvegarder les commandes
SELECT sous la forme d’une requête, d’une vue ou d’une procédure stockée. En fonction du
SGBDR utilisé, les commandes SELECT peuvent être exécutées directement à partir d’une
ligne de commande, d’une grille QBE (Query By Example ou Requête par l’exemple) ou bien
à partir d’un bloc de code. Quelle que soit la manière dont elle est définie ou exécutée, la
syntaxe de la commande SELECT est toujours identique.
Principales clauses d’une commande SELECT
Une commande SELECT est composée de plusieurs mots-clés appelés clauses. On définit une
commande SELECT en utilisant diverses combinaisons de ces clauses pour retrouver l’infor-
mation recherchée. Certaines clauses sont obligatoires alors que d’autres sont optionnelles.
De plus, chaque clause comporte un ou plusieurs mots-clés qui représentent des valeurs obli-
gatoires ou optionnelles. La Figure 4.1 montre un diagramme de la commande SELECT et de
ses clauses.
Le diagramme de la Figure 4.1 montre une commande SELECT dont la syntaxe est rudimentaire. Nous
affinerons ce diagramme au fil de l’étude de SELECT. Les lecteurs connaissant déjà les notions élémen-
taires de SQL devront se montrer patients.
Voici un petit résumé des clauses d’une commande SELECT.
SELECTIl s’agit de la clause principale de la commande SELECT et elle est absolu-
ment obligatoire. On l’utilise pour spécifier les colonnes de la requête qui sont extraites de
la table ou de la vue spécifiée dans la clause FROM. (On peut aussi les extraire simultané-
ment de plusieurs tables mais nous aborderons cet aspect dans la troisième partie de cet
ouvrage.) On peut aussi utiliser dans cette clause des fonctions de totalisation comme
Sum(HeuresTravaillées) ou des expressions mathématiques, comme Quantité ¥ Prix.
FROM – C’est la deuxième clause la plus importante de la commande SELECT et elle est
également obligatoire. On utilise la clause FROM pour spécifier les tables dont on extrait
les colonnes listées dans la clause SELECT. On peut employer cette clause de manière plus
complexe mais nous verrons cet aspect ultérieurement.
INFO
INFO
1 / 59 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !