Vous êtes sur la page 1sur 146

IBM DB2 Universal Database

Initiation SQL
V ersion 7

SC11-1655-00

IBM DB2 Universal Database

Initiation SQL
V ersion 7

SC11-1655-00

Important Avant dutiliser ce manuel et le produit associ, prenez connaissance des informations gnrales figurant lAnnexe C. Remarques la page 123.

Rf. US : SC09-2973-00 LE PRESENT DOCUMENT EST LIVRE EN LETAT. IBM DECLINE TOUTE RESPONSABILITE, EXPRESSE OU IMPLICITE, RELATIVE AUX INFORMATIONS QUI Y SONT CONTENUES, Y COMPRIS EN CE QUI CONCERNE LES GARANTIES DE QUALITE MARCHANDE OU DADAPTATION A VOS BESOINS. Certaines juridictions nautorisent pas lexclusion des garanties implicites, auquel cas lexclusion ci-dessus ne vous sera pas applicable. Ce document est mis jour priodiquement. Chaque nouvelle dition inclut les mises jour. Les informations qui y sont fournies sont susceptibles dtre modifies avant que les produits dcrits ne deviennent eux-mmes disponibles. En outre, il peut contenir des informations ou des rfrences concernant certains produits, logiciels ou services non annoncs dans ce pays. Cela ne signifie cependant pas quils y seront annoncs. Pour plus de dtails, pour toute demande dordre technique, ou pour obtenir des exemplaires de documents IBM, rfrez-vous aux documents dannonce disponibles dans votre pays, ou adressez-vous votre partenaire commercial. Vous pouvez galement consulter les serveurs Internet suivants : v http://www.fr.ibm.com (serveur IBM en France) v http://www.can.ibm.com (serveur IBM au Canada) v http://www.ibm.com (serveur IBM aux Etats-Unis) Compagnie IBM France Direction Qualit Tour Descartes 92066 Paris-La Dfense Cedex 50 Copyright IBM France 2000. Tous droits rservs. Copyright International Business Machines Corporation 1993, 2000. All rights reserved.

Table des matires


Avis aux lecteurs canadiens . . . . . . v Bienvenue . . . . . . . . . . . . vii Bibliographie . . . . . . . . . . . vii Conventions de mise en vidence . . . . viii Chapitre 1. SQL et les bases de donnes relationnelles . . . . . . . . . . Chapitre 2. Organisation des Tables . . . . . . . . Vues . . . . . . . . . Schmas. . . . . . . . Types de donnes . . . . Utilisation dune clause WHERE avec une clause GROUP BY . . . . . . . . . 32 Utilisation de la clause HAVING aprs la clause GROUP BY . . . . . . . . . 32 Chapitre 5. Expressions et sous-requtes Instructions FULLSELECT scalaires . . . Spcifications de transtypage de donnes . Expressions CASE . . . . . . . . . Expressions de table . . . . . . . . Expressions de table imbriques . . . Expressions de table communes . . . Noms de corrlation . . . . . . . . Sous-requtes corrles . . . . . . . Implmentation dune sous-requte corrle . . . . . . . . . . . 35 35 36 36 38 38 39 40 41

. 1

donnes . . . 3 . . . . . . 3 . . . . . . 4 . . . . . . 4 . . . . . . 5 . 9 . 9 . 10 . 12 . 13 . 13 . 15

. . . . . . . .

Chapitre 3. Cration de tables et de vues . Cration de tables . . . . . . . . . Insertion de donnes . . . . . . . . Modification de donnes . . . . . . . Suppression de donnes . . . . . . . Cration de vues . . . . . . . . . Utilisation de vues pour manipuler des donnes . . . . . . . . . . .

. 43

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes . . . . . . 17 Connexion une base de donnes . . . . 18 Localisation des erreurs . . . . . . . . 18 Slection de colonnes . . . . . . . . . 19 Slection de lignes . . . . . . . . . . 20 Classement des lignes . . . . . . . . . 23 Elimination des lignes en double . . . . . 24 Ordre des oprations . . . . . . . . . 25 Utilisation dexpressions pour calculer des valeurs . . . . . . . . . . . . . . 25 Dnomination des expressions . . . . . . 26 Slection de donnes dans plusieurs tables . . 26 Utilisation dune sous-requte . . . . . . 28 Utilisation de fonctions . . . . . . . . 28 Fonctions de colonne . . . . . . . . 29 Fonctions scalaires . . . . . . . . . 30 Fonctions de table . . . . . . . . . 31 Groupage . . . . . . . . . . . . . 31

Chapitre 6. Utilisation doprateurs et de prdicats dans des requtes . . . . . . Association de requtes laide doprateurs ensemblistes . . . . . . . . . . . . Oprateur UNION . . . . . . . . . Oprateur EXCEPT . . . . . . . . Oprateur INTERSECT . . . . . . . Prdicats . . . . . . . . . . . . . Utilisation du prdicat IN . . . . . . Utilisation du prdicat BETWEEN . . . Utilisation du prdicat LIKE . . . . . Utilisation du prdicat EXISTS . . . . . Prdicats quantifis . . . . . . . .

47 47 47 48 49 50 50 51 51 51 52

Chapitre 7. Fonctions SQL volues . . . 55 Respect des rgles de gestion laide de contraintes et de dclencheurs . . . . . . 55 Cls . . . . . . . . . . . . . . 56 Contraintes dunicit . . . . . . . . 56 Contraintes dintgrit rfrentielle . . . 56 Contraintes de vrification de table . . . 57 Dclencheurs. . . . . . . . . . . 58 Jointures . . . . . . . . . . . . . 62 Requtes complexes . . . . . . . . . 67 Requtes ROLLUP et CUBE . . . . . . 67 Requtes rcursives . . . . . . . . 67 Fonctions OLAP . . . . . . . . . . 68

Copyright IBM Corp. 1993, 2000

iii

Chapitre 8. Personnalisation et amlioration de la manipulation des donnes . . . . . . . . . . . . . Types dfinis par lutilisateur . . . . . . Fonctions dfinies par lutilisateur (UDF) . . Objets LOB . . . . . . . . . . . . Manipulation des objets LOB . . . . . Registres spciaux . . . . . . . . . . Prsentation des vues de catalogue . . . . Slection de lignes des catalogues systme Annexe A. Tables de la base de donnes SAMPLE . . . . . . . . . . . . . Base de donnes SAMPLE . . . . . . . Cration de la base de donnes SAMPLE Effacement de la base de donnes SAMPLE . . . . . . . . . . . . Table CL_SCHED . . . . . . . . . Table DEPARTMENT . . . . . . . . Table EMPLOYEE . . . . . . . . . Table EMP_ACT . . . . . . . . . Table EMP_PHOTO . . . . . . . . Table EMP_RESUME . . . . . . . . Table IN_TRAY . . . . . . . . . . Table ORG . . . . . . . . . . . Table PROJECT . . . . . . . . . . Table SALES . . . . . . . . . . . Table STAFF . . . . . . . . . . . Table STAFFG . . . . . . . . . . Modles de fichiers utilisant les types dobjet BLOB et CLOB . . . . . . . . . . .

71 71 72 73 74 74 75 75

Photo de Dolores Quintana . . . . . Fiche descriptive de Dolores Quintana . Photo dHeather A. Nicholls . . . . Fiche descriptive dHeather A. Nicholls . Photo de Bruce Adamson . . . . . Fiche descriptive de Bruce Adamson . . Photo de James H. Walker . . . . . Fiche descriptive de James H. Walker .

. . . . . . . .

92 92 93 93 95 95 96 96

77 78 78 79 79 79 80 83 85 85 86 86 87 88 89 90 92

Annexe B. Utilisation de la Bibliothque DB2 . . . . . . . . . . . . . . 99 Manuels imprims et fichiers au format PDF DB2 . . . . . . . . . . . . . . . 99 Informations sur DB2 . . . . . . . . 99 Impression des manuels au format PDF 112 Commande des manuels imprims . . . 112 Documentation en ligne DB2 . . . . . . 114 Accs laide en ligne . . . . . . . 114 Affichage des informations en ligne . . . 116 Assistants DB2 . . . . . . . . . . 118 Configuration dun serveur de documents 120 Recherche dinformations en ligne . . . 120 Annexe C. Remarques . . . . . . . 123 Marques . . . . . . . . . . . . . 126 Index . . . . . . . . . . . . . 129

Comment prendre contact avec IBM. . . 133 Infos produit . . . . . . . . . . . 133

iv

Initiation SQL

Avis aux lecteurs canadiens


Le prsent document a t traduit en France. Voici les principales diffrences et particularits dont vous devez tenir compte. Illustrations Les illustrations sont fournies titre dexemple. Certaines peuvent contenir des donnes propres la France. Terminologie La terminologie des titres IBM peut diffrer dun pays lautre. Reportez-vous au tableau ci-dessous, au besoin.
IBM France ingnieur commercial agence commerciale ingnieur technico-commercial inspecteur IBM Canada reprsentant succursale informaticien technicien du matriel

Claviers Les lettres sont disposes diffremment : le clavier franais est de type AZERTY, et le clavier franais-canadien de type QWERTY. OS/2 et Windows - Paramtres canadiens Au Canada, on utilise : v les pages de codes 850 (multilingue) et 863 (franais-canadien), v le code pays 002, v le code clavier CF. Nomenclature Les touches prsentes dans le tableau dquivalence suivant sont libelles diffremment selon quil sagit du clavier de la France, du clavier du Canada ou du clavier des tats-Unis. Reportez-vous ce tableau pour faire

Copyright IBM Corp. 1993, 2000

correspondre les touches franaises figurant dans le prsent document aux touches de votre clavier.

Brevets Il est possible quIBM dtienne des brevets ou quelle ait dpos des demandes de brevets portant sur certains sujets abords dans ce document. Le fait quIBM vous fournisse le prsent document ne signifie pas quelle vous accorde un permis dutilisation de ces brevets. Vous pouvez envoyer, par crit, vos demandes de renseignements relatives aux permis dutilisation au directeur gnral des relations commerciales dIBM, 3600 Steeles Avenue East, Markham, Ontario, L3R 9Z7. Assistance tlphonique Si vous avez besoin dassistance ou si vous voulez commander du matriel, des logiciels et des publications IBM, contactez IBM direct au 1 800 465-1234.

vi

Initiation SQL

Bienvenue
Le prsent ouvrage vous est destin si vous dsirez vous familiariser avec le langage SQL (Structured Query Language) et les bases de donnes relationnelles. Vous y trouverez : v Les concepts de base de SQL utilis avec DB2. v Des explications sur la faon de manipuler des bases de donnes. v Des exemples de tches simples. Si vous tes administrateur, avant dtudier les exemples du prsent ouvrage : v Installez et configurez le serveur comme lexplique le document Mise en route de votre systme dexploitation. Crez la base de donnes SAMPLE laide de loption Premiers pas. La base de donnes SAMPLE peut galement tre cre partir de la ligne de commande. Pour plus de dtails, reportez-vous au manuel SQL Reference. Remarque : Evitez de mettre vos propres donnes dans la base de donnes SAMPLE de DB2. v Crez votre ID utilisateur dadministrateur DB2 selon les instructions du document Mise en route. Si vous ntes pas administrateur systme, assurez-vous que vous avez un ID utilisateur admis ainsi que les droits daccs et les privilges requis.

Bibliographie
Vous trouverez des informations utiles dans les publications suivantes :
Mise en route SQL Reference Administration Guide Application Development Guide Informations ncessaires linstallation et lutilisation du gestionnaire de bases de donnes. Informations de rfrence sur SQL. Informations ncessaires la conception, la mise en oeuvre et la mise jour dune base de donnes, soit dans le cadre dun accs local, soit dans un environnement client-serveur. Processus de dveloppement des applications et mthodes utiliser pour coder, compiler et excuter des programmes dapplication utilisant du SQL imbriqu pour accder la base de donnes, ou excuter des procdures mmorises laide du langage de procdure SQL (ou dautres langages de programmation pris en charge).

Copyright IBM Corp. 1993, 2000

vii

Conventions de mise en vidence


Le prsent document utilise les conventions suivantes :
Gras Italiques Dans les exemples, indique les commandes et les mots cls prdfinis par le systme. Indique : v Soit lintroduction dun terme nouveau v Soit une rfrence une autre source dinformation Indique : v Soit des commandes et des mots cls prdfinis par le systme v Soit des exemples de valeurs ou de noms de colonnes spcifiques

MAJUSCULES

viii

Initiation SQL

Chapitre 1. SQL et les bases de donnes relationnelles


Dans une base de donnes relationnelle, les donnes sont conserves dans des tables. Une table se compose dun ensemble de lignes et de colonnes. Reportez-vous la figure 1 la page 4. Les colonnes et les lignes ont t indiques dans cette figure. Le langage SQL (Langage dinterrogation structur) sert extraire et mettre jour des donnes, en prcisant les colonnes et les tables concernes ainsi que les diverses relations qui existent entre elles. Le langage SQL est un ensemble dinstructions standard, permettant de dfinir et manipuler des donnes dans une base de donnes relationnelle. Les instructions SQL sont excutes par un gestionnaire de bases de donnes. Il sagit dun programme informatique charg de grer les donnes. Une base de donnes relationnelle est partitionne si ses donnes sont gres sur plusieurs partitions (galement appeles noeuds). Il existe un moyen simple de se reprsenter les partitions en considrant chacune dentre elles comme un ordinateur physique. Le prsent document traite des bases de donnes partition unique. Vous pouvez accder la base de donnes SAMPLE et vous exercer utiliser le langage SQL en mode interactif grce aux exemples du prsent document. Comme interface, utilisez soit lInterprteur de commandes, soit le Centre de commande.

Copyright IBM Corp. 1993, 2000

Initiation SQL

Chapitre 2. Organisation des donnes


Le prsent chapitre dcrit les concepts importants que sont les tables, les vues et les schmas. Il prsente une vue densemble de larticulation dune base de donnes relationnelle. La dernire section prsente brivement certains des types de donnes les plus importants et les plus courants.

Tables
Les tables sont des structures logiques constitues dun nombre dfini de colonnes et dun nombre variable de lignes. Une colonne est un ensemble de valeurs attribues des donnes de mme type. Une ligne se compose dune squence de valeurs qui composent un enregistrement dans une table. Dans une table, les lignes ne sont pas ncessairement classes. Pour obtenir un classement du rsultat, il faut le demander explicitement dans linstruction SQL qui slectionne les donnes de la table. A lintersection entre chacune des colonnes et lignes se trouve une donne, appele valeur. Dans la table de la figure 1 la page 4, Sanders est un exemple de valeur. Une table de base cre laide de linstruction CREATE TABLE reoit les donnes de lutilisateur. Une table rsultat est un ensemble de lignes slectionnes par le gestionnaire de bases de donnes, ou gnres partir dune ou de plusieurs tables de base, en rponse une requte. La figure 1 la page 4 illustre une partie de table. Les lgendes indiquent lemplacement des lignes et des colonnes.

Copyright IBM Corp. 1993, 2000

Figure 1. Exemple de table

Vues
Une vue est une autre faon de visualiser les donnes dune ou de plusieurs tables. Elle ouvre une fentre dynamique sur les tables. Elle permet dobtenir une prsentation diffrente des mmes donnes selon lutilisateur auquel elle est destine. Par exemple, plusieurs utilisateurs ont accs une table de donnes sur les employs. Un directeur, par exemple, ne voit que les donnes relatives ses propres employs. Le responsable du recrutement voit les dates dembauche de tous les salaris, mais pas leurs salaires, et le responsable financier voit les salaires mais pas les dates dembauche. Chacun de ces utilisateurs travaille sur des vues drives de la table relle et chaque vue prend lapparence dune table et possde un nom. Lutilisation de vues prsente un avantage. Elle permet de contrler laccs des donnes confidentielles. Ainsi, des personnes diffrentes nont pas accs aux mmes colonnes ni aux mmes lignes.

Schmas
Un schma est une collection dobjets nomms (par exemple, des tables et des vues). Il fournit une classification logique des objets de la base de donnes. Il est cr implicitement en mme temps que la table, la vue ou tout autre objet nomm. Vous pouvez aussi le crer explicitement avec linstruction CREATE SCHEMA.

Initiation SQL

Lors de la cration dun objet nomm, vous pouvez le qualifier par (lui associer) un nom de schma particulier. Les noms des objets nomms sont constitus de deux parties. La premire est le nom du schma auquel lobjet est affect. Si vous ne prcisez pas de nom de schma, lobjet est affect au schma par dfaut portant comme nom lID autorisation de la personne excutant linstruction. La mthode adopte pour excuter les exemples du prsent document utilise le SQL en interactif. Dans ce cas, lID autorisation est lID utilisateur qui a t prcis avec linstruction CONNECT. Par exemple, dans une table STAFF, si lID utilisateur prcis est USERXYZ, le nom qualifi de la table devient USERXYZ.STAFF. Pour plus de dtails sur linstruction CONNECT, consultez la section Connexion une base de donnes la page 18. Certains noms de schmas sont rservs. Par exemple, les fonctions intgres se trouvent dans le schma SYSIBM et les fonctions UDF appartiennent au schma SYSFUN. Pour plus de dtails sur linstruction CREATE SCHEMA, consultez le document SQL Reference.

Types de donnes
Les types de donnes dfinissent les valeurs que peuvent accepter les constantes, les colonnes, les variables SQL, les fonctions, les expressions et les registres spciaux. Cette section dcrit les types de donnes auxquels les exemples font rfrence. Pour obtenir une liste complte et une description dtaille des autres types de donnes, consultez le document SQL Reference. Chane de caractres Une chane de caractres est une suite doctets. La longueur de la chane est le nombre doctets de la suite. Si la longueur est gale zro, la valeur est appele chane vide. Chane de caractres de longueur fixe CHAR(x) est une chane de longueur fixe. La valeur de x, attribut de longueur, doit tre comprise entre 1 et 254 inclus. Chane de caractres de longueur variable Il existe trois types de chanes de caractres de longueur variable : VARCHAR, LONG VARCHAR et CLOB. Les types VARCHAR(x) dsignent des chanes de longueur variable. Cest pourquoi une chane dont la longueur est gale 9 peut tre insre dans VARCHAR(15), tout en gardant une longueur de 9 caractres. Pour plus de dtails sur CLOB, consultez la section Objets LOB la page 73.
Chapitre 2. Organisation des donnes

Chane graphique Une chane graphique est une squence de caractres double octet. Chane graphique de longueur fixe GRAPHIC(x) est une chane de longueur fixe. La valeur de x, attribut de longueur, doit tre comprise entre 1 et 127 inclus. Chane graphique de longueur variable Il existe trois types de chanes graphiques de longueur variable : VARGRAPHIC, LONG VARGRAPHIC et DBCLOB. Pour plus de dtails sur DBCLOB, consultez la section Objets LOB la page 73. Chane binaire Une chane binaire est une suite doctets. Elle accueille des donnes non traditionnelles, comme des illustrations. Un objet BLOB (Binary Large OBject) est une chane binaire. Pour plus de dtails, consultez la section Objets LOB la page 73. Nombres Tous les nombres sont accompagns dun signe et dune prcision. La prcision est le nombre de chiffres binaires ou dcimaux, signe non compris. SMALLINT Le type SMALLINT comprend les nombres entiers sur deux octets, avec une prcision de 5 chiffres. INTEGER Le type INTEGER comprend les nombres entiers sur quatre octets, avec une prcision de 10 chiffres. BIGINT Le type BIGINT comprend les nombres entiers sur 8 octets, avec une prcision de 19 chiffres. REAL Le type REAL (virgule flottante simple prcision) est une approximation sur 32 bits dun nombre rel. DOUBLE Le type DOUBLE (virgule flottante double prcision) est une approximation sur 64 bits dun nombre rel. Le type DOUBLE est galement appel type FLOAT. DECIMAL(p,e) Le type DECIMAL comprend les nombres dcimaux. La position du sparateur dcimal est dtermine par la prcision (p) et par lchelle (e) du nombre. La prcision est le nombre

Initiation SQL

total de chiffres, qui doit tre infrieur 32. Lchelle est le nombre de chiffres dans la partie fractionnaire dun nombre. Sa valeur est toujours infrieure ou gale la valeur de la prcision. Une valeur dcimale a, par dfaut, une prcision gale 5 et une chelle gale 0. Valeurs de date et/ou dheure Les dates, les heures et lhorodatage sont reprsents par des valeurs sous la forme dune chane de caractres de 14 chiffres : aaaaxxjjhhmmss. Ces valeurs peuvent tre utilises dans certaines oprations arithmtiques et de chane. Elles sont compatibles avec certaines chanes, bien quelles ne soient elles-mmes ni des chanes ni des nombres.1 Date Une date se compose de trois parties (anne, mois et jour).

Heure Une heure se compose de trois parties (heure, minute et seconde) et est indique au format 24 heures. Horodatage Lhorodatage utilise une valeur compose de sept parties (anne, mois, jour, heure, minute, seconde et microseconde) dsignant une date et une heure. Valeur NULL Une valeur NULL est une valeur spciale, distincte de toutes les autres valeurs. Elle signifie labsence de toute autre valeur dans la cellule situe lintersection de la colonne et de la ligne. Tous les types de donnes peuvent avoir une valeur NULL. Le tableau suivant prsente les caractristiques des types de donnes utiliss dans les exemples. Tous les types numriques se situent dans une certaine plage dfinie, que ce tableau rappelle. Vous pouvez vous reporter rapidement ces informations pour vrifier que vous utilisez correctement un type de donnes.

1. Dans le prsent document, les reprsentations ISO des dates et des heures sont utilises. Chapitre 2. Organisation des donnes

Type de donnes CHAR(15)

Type

Caractristiques

Exemple ou plage Jour de soleil

Chane de Longueur maximum : 254 caractres de longueur fixe Longueur maximum : 32672

VARCHAR(15) Chane de caractres de longueur variable SMALLINT INTEGER BIGINT Numrique Numrique Numrique

Jour de soleil

Longueur de 2 octets Prcision de 5 chiffres Longueur de 4 octets Prcision de 10 chiffres Longueur de 8 octets Prcision de 19 chiffres Virgule flottante simple prcision - Approximation sur 32 bits Virgule flottante double prcision - Approximation sur 64 bits

Entre -32768 et 32767 Entre -2147483648 et 2147483647 Entre -9223372036854775808 et 9223372036854775807 Plage comprise entre -3.402E+38 et -1.175E-37 ou 1.175E-37 et -3.402E+38 ou encore, gale zro Plage comprise entre -1.79769E+308 et -2.225E-307 ou 2.225E-307 et 1.79769E+308 ou encore, gale zro Plage comprise entre -10**31+1 et 10**31-1 1997-10-27 13.30.05 1997-10-27-13.30.05.000000

REAL

Numrique

DOUBLE

Numrique

DECIMAL(5,2) Numrique DATE TIME TIMESTAMP Date et/ou heure Date et/ou heure Date et/ou heure

Prcision : 5 Echelle : 2 Valeur en trois parties Valeur en trois parties Valeur en sept parties

Pour plus dinformations, voir la table des compatibilits entre types de donnes dans le document SQL Reference.

Initiation SQL

Chapitre 3. Cration de tables et de vues


Le prsent chapitre explique comment crer et manipuler des tables et des vues dans DB2 Universal Database. Diffrents diagrammes et exemples illustrent les relations entre les tables et les vues. Les sujets suivants sont abords : v Cration de tables et Cration de vues v Insertion de donnes v Modification de donnes v Suppression de donnes v Utilisation de vues pour manipuler des donnes

Cration de tables
Crez vos tables laide de linstruction CREATE TABLE, en prcisant les noms et les types des colonnes, ainsi que les contraintes. Vous trouverez une description des contraintes dans la section Respect des rgles de gestion laide de contraintes et de dclencheurs la page 55. Linstruction suivante cre la table PERS, similaire la table STAFF, mais comprenant une colonne supplmentaire pour la date de naissance.
CREATE TABLE PERS (ID NAME DEPT JOB YEARS SALARY COMM BIRTH_DATE SMALLINT NOT NULL, VARCHAR(9), SMALLINT WITH DEFAULT 10, CHAR(5), SMALLINT, DECIMAL(7,2), DECIMAL(7,2), DATE)

Cette instruction cre une table sans donnes. La section suivante dcrit comment insrer des donnes dans une nouvelle table. Comme le montre lexemple, il faut prciser le nom et le type de chacune des colonnes. Les types de donnes sont dcrits dans la section Types de donnes la page 5. NOT NULL, facultatif, indique que des valeurs NULL ne sont pas admises dans cette colonne. Les valeurs par dfaut sont galement facultatives. De nombreuses autres options peuvent tre prcises dans une instruction CREATE TABLE, comme les contraintes dunicit ou les contraintes rfrentielles.
Copyright IBM Corp. 1993, 2000

Pour plus dinformations sur toutes les options, consultez linstruction CREATE TABLE dans le document SQL Reference.

Insertion de donnes
A sa cration, une table ne contient aucune donne. Pour y insrer des lignes, utilisez linstruction INSERT. Cette instruction se prsente gnralement sous deux formats : v Vous pouvez utiliser une clause VALUES prcisant les valeurs des colonnes dune ou de plusieurs lignes. Les trois exemples suivants utilisent ce format gnral pour insrer des donnes dans des tables. v Sinon, au lieu de prciser des valeurs laide de la clause VALUES, vous pouvez indiquer une instruction FULLSELECT qui identifiera les colonnes venant dautres tables et/ou vues. FULLSELECT fait partie des instructions de slection utilises dans les instructions INSERT ou CREATE VIEW, ou qui suivent un prdicat. Une instruction FULLSELECT entre parenthses est souvent appele sous-requte. Selon les options par dfaut que vous avez choisies lors de la cration de la table, dans chaque ligne que vous insrez, soit vous fournissez une valeur pour chaque colonne, soit vous acceptez une valeur par dfaut. Les valeurs par dfaut des diffrents types de donnes sont dcrites dans le document SQL Reference. Linstruction suivante utilise une clause VALUES pour insrer une ligne de donnes dans la table PERS :
INSERT INTO PERS VALUES (12, 'Harris', 20, 'Sales', 5, 18000, 1000, '1950-1-1')

Linstruction suivante utilise la clause VALUES pour insrer trois lignes dans la table PERS, o seuls les ID, les noms et les postes sont connus. Si une colonne est de type NOT NULL sans valeur par dfaut, il faut lui donner une valeur. Dans une instruction CREATE TABLE, la clause NOT NULL dune dfinition de colonne peut tre suivie des mots WITH DEFAULT. Si la colonne est de type NOT NULL WITH DEFAULT, ou si une constante lui a t attribue par dfaut, comme WITH DEFAULT 10, et si vous ne la citez pas dans la liste des colonnes, la valeur par dfaut sinscrit automatiquement dans cette colonne de la ligne insre. Par exemple, dans linstruction CREATE TABLE, seule la colonne DEPT a t dfinie, et elle a une valeur gale 10. Par consquent, le numro de service 10 sinscrit dans la colonne DEPT et toute colonne laquelle il na pas t explicitement attribu de valeur prend la valeur NULL.

10

Initiation SQL

INSERT INTO PERS (NAME, JOB, ID) VALUES ('Swagerman', 'Prgmr', 500), ('Limoges', 'Prgmr', 510), ('Li', 'Prgmr', 520)

Linstruction suivante renvoie le rsultat des insertions :


SELECT * FROM PERS ID -----12 500 510 520 NAME DEPT JOB YEARS SALARY COMM --------- ------ ----- ------ --------- --------Harris 20 Sales 5 18000.00 1000.00 Swagerman 10 Prgmr Limoges 10 Prgmr Li 10 Prgmr BIRTH_DATE ---------01/01/1950 -

Dans ce cas, les colonnes ne sont pas toujours alimentes. Les valeurs NULL sont signales par un tiret (). Il faut que la liste des noms de colonnes suive le mme ordre et que les donnes soient du mme type que dans la clause VALUES. Si la liste des noms de colonnes est absente (cest le cas du premier exemple), la liste des valeurs cites aprs VALUES doit tre dans le mme ordre que les colonnes de la table dans laquelle elles ont t insres et le nombre de valeurs doit tre gal au nombre de colonnes de la table. Chaque valeur doit tre compatible avec le type de donnes attribu la colonne dans laquelle elle est insre. Si une colonne accepte une valeur NULL, et si aucune valeur nest prcise, la ligne insre prend la valeur NULL. Lexemple suivant insre la valeur NULL dans les colonnes YEARS, COMM et BIRTH_DATE, puisque ces colonnes nont pas reu de valeur spcifique pour la ligne.
INSERT INTO PERS (ID, NAME, JOB, DEPT, SALARY) VALUES (410, 'Perna', 'Sales', 20, 20000)

Lautre format de linstruction INSERT est trs pratique pour alimenter une table de valeurs provenant des lignes dune autre table. Comme nous lavons dj mentionn, cest linstruction FULLSELECT qui est utilise au lieu de la clause VALUES. Elle identifie les colonnes de lignes contenues dans dautres tables et/ou vues.

Chapitre 3. Cration de tables et de vues

11

Lexemple suivant slectionne, dans la table STAFF, des donnes sur les membres du service 38 et les insre dans la table PERS :
INSERT INTO PERS (ID, NAME, DEPT, JOB, YEARS, SALARY) SELECT ID, NAME, DEPT, JOB, YEARS, SALARY FROM STAFF WHERE DEPT = 38

Aprs cette insertion, linstruction SELECT ci-aprs produit un rsultat identique linstruction FULLSELECT de linstruction INSERT.
SELECT ID, NAME, DEPT, JOB, YEARS, SALARY FROM PERS WHERE DEPT = 38

Voici le rsultat obtenu :


ID -----30 40 60 120 180 NAME DEPT JOB YEARS --------- ------ ----- -----Marenghi 38 Mgr 5 O'Brien 38 Sales 6 Quigley 38 Sales Naughton 38 Clerk Abrahams 38 Clerk 3 SALARY --------17506.75 18006.00 16808.30 12954.75 12009.75

Modification de donnes
Pour modifier les donnes dune table, utilisez linstruction UPDATE. Cette instruction permet de modifier la valeur dune ou de plusieurs colonnes, dans toutes les lignes rpondant aux conditions de recherche de la clause WHERE. Lexemple suivant met jour les informations concernant lemploy dont lID est 410 :
UPDATE PERS SET JOB='Prgmr', SALARY = SALARY + 300 WHERE ID = 410

La clause SET prcise les colonnes mettre jour et fournit les valeurs. La clause WHERE, facultative, prcise les lignes mettre jour. Si elle est omise, le gestionnaire de bases de donnes remplace les anciennes valeurs par celles que vous fournissez dans toutes les lignes de la table ou de la vue. Lexemple indique dabord la table mettre jour (PERS), puis prcise la condition respecter pour quune ligne soit mise jour. Les informations concernant lemploy 410 ont chang. Il occupe maintenant un poste de programmeur (Prgmr) et son salaire a augment de 300 F.

12

Initiation SQL

Pour modifier les donnes de plusieurs lignes, il est possible dinclure une clause WHERE dsignant les lignes prendre en compte. Dans lexemple suivant, le salaire de tous les vendeurs augmente de 15 % :
UPDATE PERS SET SALARY = SALARY * 1,15 WHERE JOB = 'Sales'

Suppression de donnes
Utilisez linstruction DELETE pour supprimer des lignes de donnes dune table, sur la base dune condition de recherche prcise dans la clause WHERE. Lexemple suivant supprime une ligne contenant la valeur 120 comme ID demploy :
DELETE FROM PERS WHERE ID = 120

La clause WHERE, facultative, prcise les lignes supprimer. Si elle est omise, le gestionnaire de bases de donnes supprime toutes les lignes de la table ou de la vue. Pour supprimer plusieurs lignes, utilisez linstruction DELETE. Lexemple suivant supprime toutes les lignes contenant la valeur 20 comme numro de service (DEPT) :
DELETE FROM PERS WHERE DEPT = 20

Linstruction DELETE ne supprime pas seulement les valeurs des colonnes dune ligne, mais retire celle-ci en entier. Pour supprimer la dfinition dune table ainsi que son contenu, utilisez linstruction DROP TABLE (voir le document SQL Reference).

Cration de vues
Comme nous lavons dj dcrit dans la section Vues la page 4, une vue offre une autre possibilit de visualiser les donnes dune ou de plusieurs tables. La cration de vues permet de choisir les informations afficher selon les utilisateurs auxquelles elles sont destines. Le diagramme suivant montre les relations entre les vues et les tables. Dans la figure 2 la page 14, Vue_A limite laccs aux colonnes AC1 et AC2 de la TABLE_A. Vue_AB autorise laccs la colonne AC3 de la TABLE_A et la colonne BC2 de la TABLE_B.
Chapitre 3. Cration de tables et de vues

13

La cration de la Vue_A restreint laccs la TABLE_A. La cration de la Vue_AB limite laccs certaines colonnes des deux tables.

Figure 2. Relations entre les tables et les vues

Linstruction suivante cre une vue des employs du service 20 de la table STAFF qui ne sont pas des directeurs. Leur salaire et leur commission, prsents dans la table de base, napparaissent pas dans la vue.
CREATE VIEW STAFF_ONLY AS SELECT ID, NAME, DEPT, JOB, YEARS FROM STAFF WHERE JOB <> 'Mgr' AND DEPT=20

Aprs la cration de la vue, linstruction suivante affiche son contenu :


SELECT * FROM STAFF_ONLY

14

Initiation SQL

Cette instruction donne le rsultat suivant :


ID -----20 80 190 NAME DEPT JOB YEARS --------- ------ ----- -----Pernal 20 Sales 8 James 20 Clerk Sneider 20 Clerk 8

Nous pourrons ensuite utiliser les tables STAFF et ORG pour crer une vue qui liste les noms de tous les services accompagns du nom de leur directeur. Linstruction suivante cre la vue ci-aprs :
CREATE VIEW DEPARTMENT_MGRS AS SELECT NAME, DEPTNAME FROM STAFF, ORG WHERE MANAGER = ID

Lors de la cration dune vue, la clause WITH CHECK OPTION permet dajouter des contraintes aux insertions et aux mises jour dune table. Si cette clause est prsente, le gestionnaire de bases de donnes vrifie que les mises jour ou les insertions apportes la vue sont conformes la dfinition de la vue et refuse celles qui ne le sont pas. En labsence de cette clause, les insertions et les mises jour ne sont pas compares la dfinition de la vue. Pour plus de dtails sur la clause WITH CHECK OPTION, reportez-vous la description de linstruction CREATE VIEW dans le document SQL Reference.

Utilisation de vues pour manipuler des donnes


Comme linstruction SELECT, les instructions INSERT, DELETE et UPDATE sont appliques une vue, comme sil sagissait dune table relle. Les instructions manipulent les donnes de la ou des tables sous-jacentes. Ainsi, lors de laccs suivant la vue, cette dernire est compare la dernire table de base, ou aux plus rcentes. En labsence de la clause WITH CHECK OPTION, les donnes que vous modifiez en passant par une vue risquent de ne pas apparatre lors des accs suivants cette dernire, puisquil est possible quelles ne correspondent plus la dfinition dorigine de la vue. Voici un exemple de mise jour sappliquant la vue FIXED_INCOME :
CREATE VIEW FIXED_INCOME (LNAME, DEPART, JOBTITLE, NEWSALARY) AS SELECT NAME, DEPT, JOB, SALARY FROM PERS WHERE JOB <> 'Sales' WITH CHECK OPTION UPDATE FIXED_INCOME SET NEWSALARY = SALARY * 1.10 WHERE LNAME = 'Li'

Chapitre 3. Cration de tables et de vues

15

La mise jour de la vue prcdente quivaut la mise jour de la table de base PERS, sans loption de vrification (la clause WITH CHECK OPTION est absente) :
UPDATE PERS SET SALARY = SALARY * 1.10 WHERE NAME = 'Li' AND JOB <> 'Sales'

La vue tant cre avec la clause WITH CHECK OPTION pour la contrainte JOB <> 'Sales' dans la vue CREATE VIEW FIXED_INCOME, la mise jour suivante nest pas autorise si Limoges devient vendeur :
UPDATE FIXED_INCOME SET JOBTITLE = 'Sales' WHERE LNAME = 'Limoges'

Les colonnes dfinies par des expressions telles que SALARY + COMM ou SALARY * 1,25 ne peuvent pas tre mises jour. Si vous dfinissez une vue contenant une ou plusieurs colonnes de ce type, le privilge UPDATE sur ces colonnes nest pas accord au propritaire. Les instructions INSERT ne sont pas autorises sur les vues contenant de telles colonnes. Par contre, les instructions DELETE sont autorises. Etudions une table PERS, dans laquelle aucune des colonnes nest de type NOT NULL. Il est possible de passer par la vue FIXED_INCOME pour insrer des lignes dans la table PERS, mme si la vue ne contient pas les colonnes ID, YEARS, COMM et BIRTHDATE de la table PERS sous-jacente. Les colonnes qui napparaissent pas dans la vue prennent la valeur NULL ou la valeur par dfaut, selon le cas. Cependant, dans la table PERS, la colonne ID est de type NOT NULL. Si vous passez par la vue FIXED_INCOME pour tenter dinsrer une ligne, le systme essaie dinsrer des valeurs NULL dans toutes les colonnes de la table PERS invisibles dans la vue. Comme la colonne ID nest pas incluse dans la vue et naccepte pas les valeurs NULL, le systme ne vous permet pas dinsrer une ligne en passant par la vue. Pour connatre les rgles et les restrictions sappliquant la modification des vues, reportez-vous la description de linstruction CREATE VIEW dans le document SQL Reference.

16

Initiation SQL

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes


La prsente section explique comment utiliser des instructions SQL pour se connecter une base de donnes et extraire des donnes. Les exemples prsentent linstruction utiliser, suivie (dans la plupart des cas) des rsultats qui saffichent lorsque cette instruction est excute sur la base de donnes SAMPLE. Bien que les instructions apparaissent ici en majuscules, vous pouvez utiliser nimporte quelle combinaison de minuscules et de majuscules, sauf lorsquelles figurent entre apostrophes () ou entre guillemets (). La base de donnes SAMPLE, incluse dans DB2 Universal Database, se compose de plusieurs tables, dont vous trouverez la liste en Annexe A. Tables de la base de donnes SAMPLE la page 77. Cette base de donnes SAMPLE peut tre cre laide de loption Premiers pas ou partir de la ligne de commande. Pour plus de dtails, consultez le document SQL Reference. Des modles de bases de donnes supplmentaires ont t inclus dans DB2 Universal Database pour mettre en lumire les fonctionnalits de Data Warehouse Center et de OLAP Starter Kit. Les exemples du prsent document utilisent uniquement la base de donnes gnrique appele SAMPLE. Selon la faon dont votre base de donnes a t installe, vous aurez peut-tre faire prcder les noms de table utiliss du nom du schma et dun point. Dans les exemples du prsent document, le schma par dfaut a t appel IDUTIL. Cest pourquoi vous pouvez utiliser le nom IDUTIL.ORG pour dsigner la table ORG. Demandez votre administrateur si ceci est ncessaire. Les sujets suivants sont abords : v v v v v Connexion une base de donnes Localisation des erreurs Slection de colonnes et Slection de lignes Classement des lignes et Elimination des lignes en double Ordre des oprations

v Utilisation dexpressions pour calculer des valeurs v Dnomination des expressions v Slection de donnes dans plusieurs tables

Copyright IBM Corp. 1993, 2000

17

v Utilisation dune sous-requte v Utilisation de fonctions v Groupage

Connexion une base de donnes


Vous devez vous connecter la base de donnes avant de pouvoir linterroger et la manipuler avec des instructions SQL. Linstruction CONNECT associe la connexion de la base de donnes un nom dutilisateur. Par exemple, pour vous connecter la base de donnes SAMPLE, tapez la commande suivante dans lInterprteur de commandes DB2 :
CONNECT TO SAMPLE USER IDUTIL USING MOT_DE_PASSE

(Veillez attribuer IDUTIL et MOT_DE_PASSE des valeurs reconnues sur le systme serveur.) Dans cet exemple, USER a pour valeur IDUTIL et USING a pour valeur MOT_DE_PASSE. Le message suivant indique que la connexion a t tablie :
Informations de connexion la base de donnes Produit de gestion de bases de donnes ID autorisation SQL Alias de la base de donnes locale = DB2/NT 7.1.0 = IDUTIL = SAMPLE

Une fois connect, vous pouvez commencer manipuler la base de donnes. Pour plus de dtails sur les connexions, reportez-vous la description de linstruction CONNECT dans le document SQL Reference.

Localisation des erreurs


Chaque fois que vous faites une faute de frappe dans lun des exemples ou quune erreur survient pendant lexcution dune instruction SQL, le gestionnaire de bases de donnes renvoie un message derreur. Ce dernier se compose dun identificateur de message, dune brve explication et dun code SQLSTATE. Les codes SQLSTATE sont des codes derreur communs toute la gamme de produits DB2. Ils respectent la norme ISO/ANSI SQL92.

18

Initiation SQL

Par exemple, si lID utilisateur ou le mot de passe avait t incorrect dans linstruction CONNECT, le gestionnaire de bases de donnes aurait renvoy lidentificateur de message SQL1403N et le code SQLSTATE 08004. Voici comment le message se prsente :
SQL1403N Le nom d'utilisateur et/ou le mot de passe sont incorrects. SQLSTATE=08004

Pour obtenir plus dinformations sur le message derreur, tapez un point dinterrogation (?), puis lidentificateur du message ou le code SQLSTATE :
? SQL1403N OU ? SQL1403 OU ? 08004

Dans la description de lerreur SQL1403N, lavant-dernire ligne indique que le code SQLCODE a pour valeur -1403. SQLCODE est un code derreur spcifique au produit. Les identificateurs de message se terminant par N (Notification) ou C (Critique) reprsentent une erreur et leur code SQLCODE est ngatif. Les identificateurs de message se terminant par W (ou avertissement) ont un code SQLCODE positif.

Slection de colonnes
Linstruction SELECT permet de slectionner des colonnes spcifiques dans une table. Dans linstruction, indiquez une liste de noms de colonne, spars par des virgules. Cette liste est appele liste de slection. Linstruction suivante slectionne les colonnes DEPTNAME et DEPTNUMB de la table ORG, dans la base de donnes SAMPLE :
SELECT DEPTNAME, DEPTNUMB FROM ORG

Linstruction ci-dessus fournit le rsultat suivant :


DEPTNAME DEPTNUMB -------------- -------Head Office 10 New England 15 Mid Atlantic 20 South Atlantic 38 Great Lakes 42 Plains 51 Pacific 66 Mountain 84

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes

19

Un astrisque (*) permet de slectionner toutes les colonnes de la table. Lexemple suivant recense toutes les colonnes et toutes les lignes de la table ORG :
SELECT * FROM ORG

Cette instruction donne le rsultat suivant :


DEPTNUMB -------10 15 20 38 42 51 66 84 DEPTNAME MANAGER DIVISION LOCATION -------------- ------- ---------- ------------Head Office 160 Corporate New York New England 50 Eastern Boston Mid Atlantic 10 Eastern Washington South Atlantic 30 Eastern Atlanta Great Lakes 100 Midwest Chicago Plains 140 Midwest Dallas Pacific 270 Western San Francisco Mountain 290 Western Denver

Slection de lignes
Pour prciser la ou les conditions que les lignes doivent respecter pour tre slectionnes dans la table, faites suivre linstruction SELECT de la clause WHERE. Un critre de slection de lignes dans une table est appel condition de recherche. Une condition de recherche se compose dun ou de plusieurs prdicats. Un prdicat demande que la ligne respecte une condition vraie ou fausse (ou encore inconnue). Les prdicats de base suivants peuvent tre utiliss dans une clause WHERE pour prciser les conditions respecter :
Prdicat x = y x <> y x < y x > y x <= y x >= y IS NULL/IS NOT NULL Fonction x est gal y x est diffrent de y x est infrieur y x est suprieur y x est infrieur ou gal y x est suprieur ou gal y Recherche les valeurs NULL

Lorsque vous laborez les conditions de recherche, veillez ne demander des oprations arithmtiques que sur les donnes de type numrique et ne comparer que des donnes de types compatibles. Par exemple, il est impossible de comparer des chanes de texte des nombres.

20

Initiation SQL

Si vous slectionnez des lignes en fonction dune valeur alphanumrique, pensez placer cette dernire entre apostrophes (par exemple, WHERE JOB = 'Clerk') et la taper telle quelle existe dans la base de donnes. Si la valeur est en minuscules dans la base de donnes et que vous la tapez en majuscules, aucune ligne nest slectionne. Si vous slectionnez des lignes en fonction dune valeur numrique, ne mettez-pas celle-ci entre apostrophes (par exemple, WHERE DEPT = 20). Lexemple suivant ne slectionne, dans la table STAFF, que les lignes portant le numro de service 20 :
SELECT DEPT, NAME, JOB FROM STAFF WHERE DEPT = 20

Cette instruction donne le rsultat suivant :


DEPT NAME JOB ------ --------- ----20 Sanders Mgr 20 Pernal Sales 20 James Clerk 20 Sneider Clerk

Lexemple suivant utilise une fonction AND pour prciser plusieurs conditions. Il est possible de prciser autant de conditions que ncessaire. Lexemple slectionne, dans la table STAFF, les employs de production (Clerk) du service 20 :
SELECT DEPT, NAME, JOB FROM STAFF WHERE JOB = 'Clerk' AND DEPT = 20

Cette instruction donne le rsultat suivant :


DEPT -----20 20 NAME --------James Sneider JOB ----Clerk Clerk

Si la colonne na pas de valeur par dfaut et si vous ne prcisez aucune valeur, elle prend la valeur NULL. Cest galement le cas si vous avez spcifiquement demand la valeur NULL. Les colonnes nacceptent la valeur NULL que si leur dfinition le prvoit. La dfinition et la prise en charge des valeurs NULL sont abordes dans la section Cration de tables la page 9. Pour rechercher une valeur NULL, utilisez les prdicats IS NULL et IS NOT NULL.

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes

21

Linstruction suivante tablit la liste des employs dont la commission est inconnue :
SELECT ID, NAME FROM STAFF WHERE COMM IS NULL

Cette instruction donne le rsultat suivant :


ID -----10 30 50 100 140 160 210 240 260 270 290 NAME --------Sanders Marenghi Hanes Plotz Fraye Molinare Lu Daniels Jones Lea Quill

La valeur zro nest pas identique la valeur NULL. Linstruction suivante slectionne tous les employs de la table dont la commission est gale zro :
SELECT ID, NAME FROM STAFF WHERE COMM = 0

Comme il ny a pas de valeur gale zro dans la colonne COMM du modle de table, le rsultat est vide. Lexemple suivant slectionne toutes les lignes de la table STAFF o la colonne YEARS a une valeur suprieure 9 :
SELECT NAME, SALARY, YEARS FROM STAFF WHERE YEARS > 9

Cette instruction donne le rsultat suivant :


NAME --------Hanes Lu Jones Quill Graham SALARY YEARS --------- -----20659.80 10 20010.00 10 21234.00 12 19818.00 10 21000.00 13

22

Initiation SQL

Classement des lignes


Si vous dsirez que les informations apparaissent dans un ordre spcifique, utilisez la clause ORDER BY, qui permet de trier les informations selon la valeur dune ou de plusieurs colonnes. Linstruction suivante affiche les employs du service 84, classs selon leur nombre dannes de prsence dans la socit :
SELECT NAME, JOB, YEARS FROM STAFF WHERE DEPT = 84 ORDER BY YEARS

Cette instruction donne le rsultat suivant :


NAME --------Davis Gafney Edwards Quill JOB YEARS ----- -----Sales 5 Clerk 5 Sales 7 Mgr 10

La clause ORDER BY doit tre la dernire de linstruction SELECT. Les colonnes cites dans cette clause peuvent tre des expressions ou nimporte quelle colonne de la table. Il est inutile de prciser dans la liste de slection les noms des colonnes de la clause ORDER BY. Dans la clause ORDER BY, les mots cls ASC ou DESC indiquent explicitement et respectivement lordre de tri croissant ou dcroissant. Si aucun des deux nest prsent, les lignes sont automatiquement classes par ordre croissant. Linstruction suivante affiche les employs du service 84 par ordre dcroissant selon le nombre dannes de prsence dans lentreprise :
SELECT NAME, JOB, YEARS FROM STAFF WHERE DEPT = 84 ORDER BY YEARS DESC

Cette instruction donne le rsultat suivant :


NAME --------Quill Edwards Davis Gafney JOB YEARS ----- -----Mgr 10 Sales 7 Sales 5 Clerk 5

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes

23

Les lignes peuvent tre classes selon des donnes de type alphanumrique ou numrique. Linstruction suivante affiche les employs du service 84 par ordre alphabtique :
SELECT NAME, JOB, YEARS FROM STAFF WHERE DEPT = 84 ORDER BY NAME

Cette instruction donne le rsultat suivant :


NAME --------Davis Edwards Gafney Quill JOB YEARS ----- -----Sales 5 Sales 7 Clerk 5 Mgr 10

Elimination des lignes en double


Dans linstruction SELECT, il est possible de demander llimination des informations en double. Par exemple, dans la table STAFF, plusieurs numros de la colonne DEPT et plusieurs descriptions de la colonne JOB sont cits plusieurs fois. Pour liminer les lignes en double, ajoutez, dans linstruction SELECT, loption DISTINCT. Dans lexemple suivant, lajout de DISTINCT dans linstruction vite les doublons dans la liste des postes :
SELECT DISTINCT DEPT, JOB FROM STAFF WHERE DEPT < 30 ORDER BY DEPT, JOB

Cette instruction donne le rsultat suivant :


DEPT -----10 15 15 15 20 20 20 JOB ----Mgr Clerk Mgr Sales Clerk Mgr Sales

DISTINCT a limin toutes les lignes contenant des donnes en double de lensemble de colonnes prcis dans linstruction SELECT.

24

Initiation SQL

Ordre des oprations


Il est important de prendre en compte lordre dans lequel les oprations se droulent. Le rsultat dune clause sert de donnes en entre dans la clause suivante, comme le montre la liste ci-dessous. La section Dnomination des expressions la page 26, donne un exemple o lordre des oprations a son importance. La squence doprations suivantes ne reflte pas ncessairement la faon dont les oprations sont effectues dans le code DB2. Cette explication est simplement une approche plus intuitive des requtes. Voici la squence des oprations : 1. Clause FROM 2. Clause WHERE 3. Clause GROUP BY 4. Clause HAVING 5. Clause SELECT 6. Clause ORDER BY

Utilisation dexpressions pour calculer des valeurs


Une expression est un calcul ou une fonction intgre dans une instruction. Linstruction suivante calcule les salaires des employs du service 38 sils recevaient chacun une prime de 500 F :
SELECT DEPT, NAME, SALARY + 500 FROM STAFF WHERE SERV = 38 ORDER BY 3

Voici le rsultat obtenu :


DEPT -----38 38 38 38 38 NAME 3 --------- ---------------Abrahams 12509.75 Naughton 13454.75 Quigley 17308.30 Marenghi 18006.75 O'Brien 18506.00

A la place du titre de la troisime colonne apparat un numro. Il sagit dun numro gnr par le systme, SALARY+500 ntant pas un nom de colonne. Dans un exemple ultrieur, ce numro est utilis dans la clause ORDER BY pour faire rfrence la troisime colonne. La section Dnomination des expressions la page 26 indique comment donner aux expressions des noms plus significatifs.

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes

25

Les expressions arithmtiques utilisent les oprateurs de base de laddition (+), la soustraction (), la multiplication (*) et la division ( ). Les oprateurs peuvent tre utiliss avec divers types doprandes, tels que : v Des noms de colonnes (par exemple, RATE * HOURS) v Des constantes (par exemple, RATE * 1,07) v Des fonctions scalaires (par exemple LENGTH(NAME) + 1)

Dnomination des expressions


Le fait dattribuer un nom une expression avec la clause AS, facultative, permet de se rfrer plus facilement cette expression. Avec la clause AS, tout lment de la liste de slection peut recevoir un nom. Linstruction suivante affiche tous les employs dont le total du salaire et de la commission est infrieur 13000 F. Le nom PAY a t attribu lexpression SALARY + COMM :
SELECT NAME, JOB, SALARY + COMM AS PAY FROM STAFF WHERE (SALARY + COMM) < 13000 ORDER BY PAY

Cette instruction donne le rsultat suivant :


NAME --------Yamaguchi Burke Scoutten Abrahams Kermisch Ngan JOB PAY ----- ---------Clerk 10581.50 Clerk 11043.50 Clerk 11592.80 Clerk 12246.25 Clerk 12368.60 Clerk 12714.80

Lutilisation de la clause AS permet de faire rfrence une colonne par son nom au lieu dutiliser le numro gnr par le systme dans la clause ORDER BY. Dans cet exemple, dans la clause WHERE, nous comparons (SALARY + COMM) 13000, au lieu dutiliser le nom PAY. Cest le rsultat de lordre des oprations. Il y a valuation de la clause WHERE avant de donner (SALARY + COMM) le nom PAY, car la clause SELECT est excute aprs la clause WHERE. Par consquent, PAY ne peut pas tre utilis dans le prdicat.

Slection de donnes dans plusieurs tables


Linstruction SELECT peut servir produire des tats sur plusieurs tables. Cette opration est couramment appele jointure. Par exemple, une jointure des tables STAFF et ORG permet dobtenir une nouvelle table. Pour joindre deux tables, prcisez, dans la clause SELECT, les colonnes afficher, dans la

26

Initiation SQL

clause FROM, les noms des tables et dans la clause WHERE, la condition de recherche. La clause WHERE est facultative. Dans lexemple suivant, le rsultat doit associer les noms de tous les directeurs leur service. Les informations viennent de deux tables, les donnes sur les employs (table STAFF) et sur les services (table ORG) tant conserves sparment. La requte suivante slectionne la colonne NAME dans la table STAFF et la colonne DEPTNAME dans la table ORG. La condition de recherche limite la slection aux lignes contenant, dans la colonne MANAGER, la mme valeur que la colonne ID :
SELECT DEPTNAME, NAME FROM ORG, STAFF WHERE MANAGER = ID

La figure 3 montre comment sont compares des colonnes de deux tables diffrentes. Les valeurs encadres indiquent quil y a correspondance et que, par consquent, la condition de recherche est remplie.
ORG
DEPTNUMB 10 15 20 38 42 51 DEPTNAME Head Office New England Mid Atlantic South Atlantic Great Lakes Plains MANAGER 160 50 10 30 100 140 270 D Co Ea Ea Ea Mi Mi We 10 20 30 40 50 60

STAFF
ID NAME Sanders Pernal Marenghi O'Brien Hanes Quigley 20 20 38 38 15 38 15 DEPT J Mg Sa Mg Sa Mg Sa Sa

MANAGER=ID ?

Figure 3. Slection dans les tables STAFF et ORG

Linstruction SELECT donne le rsultat suivant :


DEPTNAME -------------Mid Atlantic South Atlantic New England Great Lakes Plains Head Office Pacific Mountain NAME --------Sanders Marenghi Hanes Plotz Fraye Molinare Lea Quill

Le rsultat tablit la liste des directeurs et de leur service.

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes

27

Utilisation dune sous-requte


Des instructions SELECT supplmentaires peuvent tre imbriques dans une instruction SQL SELECT, dans la clause WHERE. Chaque nouvelle instruction SELECT lance une sous-requte. Une sous-requte peut alors, son tour, inclure une autre sous-requte dont le rsultat est remplac par la clause WHERE de la sous-requte dorigine. De plus, plusieurs conditions de recherche dune clause WHERE peuvent inclure des sous-requtes. La sous-requte peut faire rfrence des tables et des colonnes diffrentes de celles quutilise la requte principale. Linstruction suivante slectionne, dans la table ORG, la rgion et la ville de lemploy correspondant lID 280 dans la table STAFF :
SELECT DIVISION, LOCATION FROM ORG WHERE DEPTNUMB = (SELECT DEPT FROM STAFF WHERE ID = 280)

Quand il traite une instruction, DB2 commence par dterminer le rsultat de la sous-requte. Le rsultat de cette instruction est 66, lemploy correspondant lID 280 se trouvant dans le service 66. Ensuite, pour obtenir le rsultat final, il prend dans la table ORG la ligne dont la colonne DEPTNUMB a la valeur 66. Voici le rsultat obtenu :
DIVISION LOCATION ---------- ------------Western San Francisco

Si vous utilisez une sous-requte, le gestionnaire de bases de donnes lvalue et remplace directement la valeur rsultant de la sous-requte dans la clause WHERE. Pour plus de dtails sur les sous-requtes, consultez la section Sous-requtes corrles la page 41.

Utilisation de fonctions
Vous trouverez ci-aprs une prsentation rapide des fonctions utilises dans les exemples du prsent document. Une fonction de base de donnes est une relation entre un ensemble de valeurs fournies en entre et une valeur rsultat. Les fonctions peuvent tre intgres ou dfinies par lutilisateur. Vous trouverez dans DB2 Universal Database de nombreuses fonctions intgres et dfinies par lutilisateur et dj installes.

28

Initiation SQL

Les fonctions intgres se trouvent dans le schma SYSIBM et les fonctions dfinies par lutilisateur et dj installes figurent dans le schma SYSFUN. SYSIBM et SYSFUN sont des schmas rservs. Les fonctions intgres et dfinies par lutilisateur et dj installes ne suffisent pas remplir tous les besoins de lutilisateur. Cest pourquoi les dveloppeurs ont quelquefois besoin dajouter leur propre ensemble de fonctions, spcifique de leurs applications. Il est possible de le faire partir des fonctions dfinies par lutilisateur, qui largissent la porte de DB2 Universal Database par linclusion, par exemple, de fonctions scientifiques ou commerciales personnalises. Vous trouverez plus de dtails sur ce sujet la section Fonctions dfinies par lutilisateur (UDF) la page 72.

Fonctions de colonne
Les fonctions de colonne donnent un rsultat unique partir dun ensemble de valeurs prsentes dans une colonne. Vous trouverez ci-dessous quelques exemples de fonctions de colonne. Le document SQL Reference contient la liste complte de ces fonctions de colonne. AVG COUNT MAX MIN Renvoie la somme des valeurs dun ensemble, divise par le nombre de valeurs de lensemble. Renvoie le nombre de lignes ou de valeurs, dans un ensemble de lignes ou de valeurs. Renvoie la valeur la plus leve dun ensemble de valeurs. Renvoie la valeur la plus basse dun ensemble de valeurs.

Linstruction suivante slectionne le salaire maximum de la table STAFF :


SELECT MAX(SALARY) FROM STAFF

Cette instruction renvoie de la table STAFF la valeur 22959,20. Lexemple suivant slectionne les noms et les salaires des employs qui ont un revenu plus lev que la moyenne des revenus constats dans la socit et un temps de prsence infrieur au temps de prsence moyen.
SELECT NAME, SALARY FROM STAFF WHERE SALARY > (SELECT AVG(SALARY) FROM STAFF) AND YEARS < (SELECT AVG(YEARS) FROM STAFF)

Cette instruction donne le rsultat suivant :


NAME SALARY --------- --------Marenghi 17506.75 Daniels 19260.25 Gonzales 16858.20

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes

29

Dans la clause WHERE de lexemple ci-dessus, la fonction de colonne est dclare dans une sous-requte au lieu dtre implmente directement (par exemple, WHERE SALARY > AVG(SALARY)). Les fonctions de colonne ne peuvent pas tre dclares dans la clause WHERE. Ceci est d lordre des oprations. On peut considrer que la clause WHERE est value avant la clause SELECT. Par consquent, lors de lvaluation de la clause WHERE, la fonction de colonne na pas accs lensemble de valeurs. Cet ensemble est slectionn ultrieurement, avec la clause SELECT. Llment DISTINCT, utilis dans largument dune fonction de colonne, peut servir liminer les valeurs en double avant dappliquer la fonction. Ainsi, COUNT(DISTINCT WORKDEPT) calcule le nombre de services diffrents.

Fonctions scalaires
Une fonction scalaire effectue une opration sur une valeur, pour renvoyer une autre valeur. Voici quelques exemples de fonctions scalaires fournies par DB2 Universal Database. ABS HEX LENGTH Renvoie la valeur absolue dun nombre. Renvoie la reprsentation hexadcimale dune valeur. Renvoie le nombre doctets dun argument (dans le cas dune chane graphique, renvoie le nombre de caractres double octet). Extrait la partie anne dune valeur indiquant la date et/ou lheure.

YEAR

Le document SQL Reference contient une liste dtaille des fonctions scalaires, accompagne de leur description. Linstruction suivante renvoie les noms des services de la table ORG ainsi que la longueur de chacun des noms :
SELECT DEPTNAME, LENGTH(DEPTNAME) FROM ORG

Cette instruction donne le rsultat suivant :


DEPTNAME 2 -------------- ----------Head Office 11 New England 11 Mid Atlantic 12 South Atlantic 14 Great Lakes 11 Plains 6 Pacific 7 Mountain 8

30

Initiation SQL

Remarque : Comme la clause AS na pas t utilise pour donner un nom significatif LENGTH(DEPTNAME), un numro gnr par le systme apparat en titre de la deuxime colonne.

Fonctions de table
Les fonctions de table renvoient les colonnes dune table qui ressemblent la table cre par une instruction CREATE TABLE. Une fonction de table peut tre utilise uniquement dans la clause FROM dune instruction SQL. La seule fonction de table prise en charge dans DB2 Universal Database est SQLCACHE_SNAPSHOT. SQLCACHE_SNAPSHOT Renvoie les rsultats dune image instantane de la mmoire cache dune instruction SQL dynamique en tant que table.

Groupage
Pour lanalyse de donnes, DB2 Universal Database peut se baser sur certaines colonnes dune table. Il est possible de rassembler plusieurs lignes selon la structure de groupage dfinie par la clause GROUP BY. Dans sa forme la plus simple, un groupe est constitu de lignes, chacune ayant des valeurs identiques dans les colonnes GROUP BY. Dans une clause SELECT, les noms des colonnes doivent correspondre des colonnes de groupage ou des fonctions de colonne. Ces dernires renvoient une valeur pour chaque groupe dfini par la clause GROUP BY. Chaque groupe est reprsent par une seule ligne dans lensemble des rsultats. Dans lexemple suivant, le rsultat produit la liste des salaires les plus levs par numro de service :
SELECT DEPT, MAX(SALARY) AS MAXIMUM FROM STAFF GROUP BY DEPT

Cette instruction donne le rsultat suivant :


DEPT -----10 15 20 38 42 51 66 84 MAXIMUM --------22959,20 20659,80 18357,50 18006,00 18352,80 21150,00 21000,00 19818,00

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes

31

Notez que le salaire le plus lev (MAX(SALARY)) est calcul par service (groupe dfini par la clause GROUP BY), et non pour toute la socit.

Utilisation dune clause WHERE avec une clause GROUP BY


Une requte de groupage peut contenir une clause WHERE standard qui limine les lignes ne rpondant pas un ou plusieurs critres avant de former les groupes et dexcuter les fonctions de colonne. Il faut prciser la clause WHERE avant la clause GROUP BY. Par exemple :
SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUM FROM EMPLOYEE WHERE HIREDATE > '1979-01-01' GROUP BY WORKDEPT, EDLEVEL ORDER BY WORKDEPT, EDLEVEL

Voici le rsultat obtenu :


WORKDEPT EDLEVEL MAXIMUM -------- ------- ----------D11 17 18270,00 D21 15 27380,00 D21 16 36170,00 D21 17 28760,00 E11 12 15340,00 E21 14 26150,00

Tous les noms de colonne prciss dans linstruction SELECT sont galement mentionns dans la clause GROUP BY. Labsence de ces noms de colonne dans les deux clauses entrane une erreur. La clause GROUP BY renvoie une ligne par combinaison unique de WORKDEPT et EDLEVEL.

Utilisation de la clause HAVING aprs la clause GROUP BY


Il est possible dappliquer aux groupes une condition qualifiante pour que DB2 ne renvoie que les rsultats concernant les groupes qui respectent cette condition. Pour ce faire, incluez une clause HAVING aprs la clause GROUP BY. Une clause HAVING peut contenir un ou plusieurs prdicats, relis par des AND et des OR. Chaque prdicat compare une proprit du groupe (comme AVG(SALARY)) lun des lments suivants : v Une autre proprit du groupe Par exemple :
HAVING AVG(SALARY) > 2 * MIN(SALARY)

v Une constante Par exemple :


HAVING AVG(SALARY) > 20000

32

Initiation SQL

Par exemple, la requte suivante recherche le salaire le plus lev et le salaire le moins lev dans les services comprenant plus de 4 employs :
SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUM FROM EMPLOYEE GROUP BY WORKDEPT HAVING COUNT(*) > 4 ORDER BY WORKDEPT

Cette instruction donne le rsultat suivant :


WORKDEPT MAXIMUM MINIMUM -------- ----------- ----------D11 32250,00 18270,00 D21 36170,00 17250,00 E11 29750,00 15340,00

Dans une requte, il est possible mais rare davoir une clause HAVING sans clause GROUP BY. Dans ce cas, DB2 traite la table en entier en tant que groupe. Comme la table est considre comme un seul groupe, le rsultat ne donnera, au plus, quune ligne de rsultat. Si une condition HAVING est vraie sur lensemble de la table, le rsultat slectionn est renvoy (il ne se compose que de fonctions de colonne) ; sinon, aucune ligne nest renvoye.

Chapitre 4. Utilisation dinstructions SQL pour accder aux donnes

33

34

Initiation SQL

Chapitre 5. Expressions et sous-requtes


DB2 permet dexprimer les requtes avec beaucoup de souplesse. Le prsent chapitre dcrit quelques-unes des principales mthodes dont vous disposez pour rdiger des requtes complexes. Les lments suivants sont dcrits en dtail : v Instructions FULLSELECT scalaires v Spcifications de transtypage de donnes v Expressions CASE v Expressions de table v Noms de corrlation

Instructions FULLSELECT scalaires


Une instruction FULLSELECT est un type de requte qui peut tre utilis dans les instructions SQL. Une instruction FULLSELECT scalaire est une instruction FULLSELECT qui renvoie une ligne contenant une seule valeur. Ces instructions permettent dextraire des valeurs dune base de donnes pour les utiliser dans une expression. v Lexemple suivant permet dobtenir la liste de lensemble du personnel dont le salaire est suprieur au salaire moyen de la socit. Linstruction FULLSELECT scalaire dans la requte correspond linstruction SELECT entre parenthses.
SELECT LASTNAME, FIRSTNME FROM EMPLOYEE WHERE SALARY > (SELECT AVG(SALARY) FROM EMPLOYEE)

v Lexemple suivant permet dobtenir le salaire moyen des employs de la table STAFF et le salaire moyen des employs de la table EMPLOYEE.
SELECT AVG(SALARY) AS "Average_Employee", (SELECT AVG(SALARY) AS "Average_Staff" FROM STAFF) FROM EMPLOYEE

Copyright IBM Corp. 1993, 2000

35

Spcifications de transtypage de donnes


Vous aurez quelquefois convertir des valeurs dun type dans un autre. Une spcification de transtypage (CAST) permet, par exemple, de convertir une valeur numrique en chane de caractres. Pour convertir une valeur dans un type diffrent, utilisez la spcification CAST. Elle permet aussi de tronquer une chane de caractres trop longue. La colonne RESUME est de type CLOB(5K). Pour nafficher que les 370 premiers caractres au format ASCII de la fiche du candidat, partir de la table EMP_RESUME, utilisez la requte suivante :
SELECT EMPNO, CAST(RESUME AS VARCHAR(370)) FROM EMP_RESUME WHERE RESUME_FORMAT = 'ascii'

Un avertissement est renvoy pour les valeurs suprieures 370 caractres, pour vous prvenir que des informations ont t perdues. Il est possible de convertir des valeurs NULL en dautres types de donnes, plus faciles manipuler dans une requte. La section Expressions de table communes la page 39, est un exemple de lutilisation dune spcification de transtypage (CAST) dans ce but.

Expressions CASE
Les expressions CASE peuvent tre utilises dans les instructions SQL pour faciliter la manipulation de la reprsentation des donnes dune table. Il sagit dexpressions conditionnelles puissantes de mme nature que les instructions CASE de certains langages de programmation. v Dans la table ORG, pour convertir les numros de la colonne DEPTNAME en mots significatifs, entrez la requte suivante :
SELECT DEPTNAME, CASE DEPTNUMB WHEN 10 THEN 'Marketing' WHEN 15 THEN 'Research' WHEN 20 THEN 'Development' WHEN 38 THEN 'Accounting' ELSE 'Sales' END AS FUNCTION FROM ORG

Voici le rsultat obtenu :


DEPTNAME -------------Head Office New England Mid Atlantic FUNCTION ----------Marketing Research Development

36

Initiation SQL

South Atlantic Great Lakes Plains Pacific Mountain

Accounting Sales Sales Sales Sales

v Les expressions CASE peuvent galement constituer une protection contre les oprations impossibles telles que la division par zro. Dans lexemple suivant, si lemploy na ni prime ni commission, la condition vite lerreur en empchant la division par zro :
SELECT LASTNAME, WHERE(CASE WHEN ELSE END ) > WORKDEPT FROM EMPLOYEE BONUS+COMM=0 THEN NULL SALARY/(BONUS+COMM) 10

v Vous pouvez utiliser une expression CASE pour obtenir le ratio de la somme des valeurs dun sous-ensemble de valeurs slectionnes dans une colonne par rapport la somme de toutes les valeurs de cette colonne. Ce ratio peut figurer dans une instruction utilisant une expression CASE qui permet deffectuer un seul passage dans les donnes. Sans expression CASE, deux passages au moins seraient ncessaires pour effectuer le mme calcul. Dans lexemple suivant, le calcul du ratio des salaires du service 20 par rapport au total de tous les salaires est effectu laide dune expression CASE :
SELECT CAST(CAST (SUM(CASE WHEN DEPT = 20 THEN SALARY ELSE 0 END) AS DECIMAL(7,2))/ SUM(SALARY) AS DECIMAL (3,2)) FROM STAFF

Le rsultat obtenu est 0,11. Les fonctions de transtypage (CAST) permettent de garder la prcision du rsultat. v Vous pouvez utiliser une expression CASE pour valuer une fonction simple, au lieu dappeler la fonction elle-mme, ce qui pourrait entraner une surcharge du temps systme. Par exemple :
CASE WHEN X<0 THEN -1 WHEN X=0 THEN 0 WHEN X>0 THEN 1 END

Lexpression prcdente donne le mme rsultat que la fonction SIGN dfinie par lutilisateur dans le schma SYSFUN.

Chapitre 5. Expressions et sous-requtes

37

Expressions de table
Une expression de table permet de dfinir une vue qui nest ncessaire que dans une seule requte. Les expressions de table sont provisoires. Elles ne sont valables que pour la dure de linstruction SQL considre ; elles ne peuvent pas tre partages comme des vues, mais leur utilisation est cependant plus souple que celle des vues. Vous trouverez ci-dessous des exemples dutilisation, dans des requtes, dexpressions de table, imbriques ou non imbriques.

Expressions de table imbriques


Une expression de table imbrique est une vue temporaire dont la dfinition est imbrique (dfinie directement) dans la clause FROM de la requte principale. La requte ci-aprs utilise une expression de table imbrique pour gnrer une rponse la question suivante : Quel est le salaire total moyen, ainsi que le niveau dtudes et lanciennet, des employs dont le niveau dtudes est suprieur 16 :
SELECT EDLEVEL, HIREYEAR, DECIMAL(AVG(TOTAL_PAY), 7,2) FROM (SELECT EDLEVEL, YEAR(HIREDATE) AS HIREYEAR, SALARY+BONUS+COMM AS TOTAL_PAY FROM EMPLOYEE WHERE EDLEVEL > 16 ) AS PAY_LEVEL GROUP BY EDLEVEL, HIREYEAR ORDER BY EDLEVEL, HIREYEAR

Voici le rsultat obtenu :


EDLEVEL HIREYEAR ------- ----------17 1967 17 1973 17 1977 17 1979 18 1965 18 1968 18 1973 18 1976 19 1958 20 1975 3 --------28850,00 23547,00 24430,00 25896,50 57970,00 32827,00 45350,00 31294,00 51120,00 42110,00

Cette requte ncessite lutilisation dune expression de table imbrique pour extraire lanne dembauche de la colonne HIREDATE. Cette anne sera ensuite utilise dans la clause GROUP BY. Vous pouvez choisir de ne pas

38

Initiation SQL

gnrer lexpression en tant que vue, si vous avez lintention dexcuter les mmes requtes laide de valeurs diffrentes de EDLEVEL. Lexemple utilise la fonction scalaire intgre DECIMAL qui renvoie la reprsentation dcimale dun nombre ou dune chane de caractres. Pour plus de dtails sur les fonctions, consultez le document SQL Reference.

Expressions de table communes


Une expression de table commune est une expression de table que vous crez parce que vous avez lintention de lutiliser plusieurs fois dans une requte complexe. Dfinissez-la et attribuez-lui un nom ds le dbut de la requte, laide dune clause WITH. Les utilisations rptes dune expression de table commune se serviront chaque fois du mme ensemble de rsultats. Par comparaison, si vous utilisiez une expression de table imbrique ou une vue imbrique, lensemble de rsultats serait gnr chaque fois, avec des rsultats ventuellement diffrents. Lexemple suivant permet de rpertorier tous les employs de la socit dont le niveau dtudes est suprieur 16, dont le salaire moyen est infrieur celui des employs de mme niveau dtudes embauchs la mme anne. Les lments de la requte sont dcrits de faon plus dtaille la suite de la requte. 1
WITH PAYLEVEL AS (SELECT EMPNO, EDLEVEL, YEAR(HIREDATE) AS HIREYEAR, SALARY+BONUS+COMM AS TOTAL_PAY FROM EMPLOYEE WHERE EDLEVEL > 16),

2
PAYBYED (EDUC_LEVEL, YEAR_OF_HIRE, AVG_TOTAL_PAY) AS (SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY) FROM PAYLEVEL GROUP BY EDLEVEL, HIREYEAR)

3
SELECT EMPNO, EDLEVEL, YEAR_OF_HIRE, TOTAL_PAY, DECIMAL(AVG_TOTAL_PAY,7,2) FROM PAYLEVEL, PAYBYED WHERE EDLEVEL = EDUC_LEVEL AND HIREYEAR = YEAR_OF_HIRE AND TOTAL_PAY < AVG_TOTAL_PAY

Il sagit dune expression de table commune appele PAYLEVEL. Cette table rsultat comporte le matricule, lanne dembauche et le salaire

Chapitre 5. Expressions et sous-requtes

39

total de lemploy ainsi que son niveau dtudes. Elle ne contient que des lignes concernant des employs dont le niveau dtudes est suprieur 16. 2 Il sagit dune expression de table commune appele PAYBYED (pour paie selon tudes). Elle utilise la table PAYLEVEL gnre dans lexpression de table commune prcdente pour obtenir le niveau dtudes, lanne dembauche et le salaire moyen des employs, par niveau dtudes, embauchs la mme anne. Les noms des colonnes renvoyes par cette table sont diffrents (par exemple, EDUC_LEVEL) des noms de colonnes utiliss dans la liste de slection. Elle produit un ensemble de rsultats appel PAYBYED qui est identique au rsultat obtenu par lexemple dexpression de Table imbrique. Voici enfin la requte qui donne le rsultat souhait. Les deux tables (PAYLEVEL, PAYBYED) sont jointes pour dterminer les employs dont le salaire total est infrieur au salaire moyen des employs embauchs la mme anne queux. Notez que PAYBYED est bas sur PAYLEVEL. Ainsi, la requte accde deux fois PAYLEVEL dans lensemble de linstruction. Les deux fois, lvaluation de la requte utilise le mme ensemble de lignes.

Voici le rsultat obtenu :


EMPNO EDLEVEL YEAR_OF_HIRE TOTAL_PAY 5 ------ ------- ------------ ------------- --------000210 17 1979 20132,00 25896,50

Noms de corrlation
Un nom de corrlation est un identificateur servant distinguer diffrentes utilisations dun mme objet. Il peut tre dfini dans la clause FROM dune requte et dans la premire clause dune instruction UPDATE ou DELETE. Il peut tre associ une table, une vue ou une expression de table imbrique, mais uniquement dans le contexte dans lequel il a t dfini. Par exemple, la clause FROM STAFF S, ORG O dfinit que S et O sont les noms de corrlation de STAFF et ORG.
SELECT NAME, DEPTNAME FROM STAFF S, ORG O WHERE O.MANAGER = S.ID

Une fois dfini, seul le nom de corrlation peut tre utilis pour qualifier lobjet. Par exemple, si, dans lexemple ci-dessus, nous avions dclar ORG.MANAGER=STAFF.ID, linstruction aurait chou.

40

Initiation SQL

Il est aussi possible dutiliser un nom de corrlation comme abrviation, pour se rfrer un objet de base de donnes. Le fait de taper S uniquement est plus rapide et plus facile que dentrer STAFF. Lutilisation de noms de corrlation permet de dupliquer un objet. Ceci savre utile pour comparer les entres dune table avec la table elle-mme. Dans lexemple ci-dessous, la table EMPLOYEE est compare lune de ses instances, pour rechercher les directeurs de tous les employs. Il affiche les noms des employs autres que des concepteurs, le nom de leur directeur et le numro de leur service.
SELECT E2.FIRSTNME, E2.LASTNAME, E2.JOB, E1.FIRSTNME AS MGR_FIRSTNAME, E1.LASTNAME AS MGR_LASTNAME, E1.WORKDEPT FROM EMPLOYEE E1, EMPLOYEE E2 WHERE E1.WORKDEPT = E2.WORKDEPT AND E1.JOB = 'MANAGER' AND E2.JOB <> 'MANAGER' AND E2.JOB <> 'DESIGNER'

Cette instruction donne le rsultat suivant :


FIRSTNME -----------DOLORES HEATHER JAMES SALVATORE DANIEL SYBIL MARIA ETHEL JOHN PHILIP MAUDE RAMLAL WING JASON LASTNAME JOB MGR_FIRSTNAME MGR_LASTNAME WORKDEPT ---------- -------- ------------- --------------- -------QUINTANA ANALYST SALLY KWAN C01 NICHOLLS ANALYST SALLY KWAN C01 JEFFERSON CLERK EVA PULASKI D21 MARINO CLERK EVA PULASKI D21 SMITH CLERK EVA PULASKI D21 JOHNSON CLERK EVA PULASKI D21 PEREZ CLERK EVA PULASKI D21 SCHNEIDER OPERATOR EILEEN HENDERSON E11 PARKER OPERATOR EILEEN HENDERSON E11 SMITH OPERATOR EILEEN HENDERSON E11 SETRIGHT OPERATOR EILEEN HENDERSON E11 MEHTA FIELDREP THEODORE SPENSER E21 LEE FIELDREP THEODORE SPENSER E21 GOUNOT FIELDREP THEODORE SPENSER E21

Sous-requtes corrles
Une sous-requte autorise se rfrer lune quelconque des tables dj mentionnes est appele sous-requte corrle. Il est galement possible de dire que la sous-requte contient une rfrence corrle une table utilise dans la requte principale. Dans lexemple suivant, une sous-requte non corrle demande la liste des matricules et des noms des employs du service A00 dont le salaire est suprieur au salaire moyen du service.

Chapitre 5. Expressions et sous-requtes

41

SELECT EMPNO, LASTNAME FROM EMPLOYEE WHERE WORKDEPT = 'A00' AND SALARY > (SELECT AVG(SALARY) FROM EMPLOYEE WHERE WORKDEPT = 'A00')

Cette instruction donne le rsultat suivant :


EMPNO -----000010 000110 LASTNAME --------------HAAS LUCCHESSI

Pour connatre le salaire moyen par service, il faut valuer la sous-requte une fois par service. Laptitude de SQL tablir des corrlations permet de le faire : il suffit dcrire une sous-requte excuter de manire rptitive, une fois par ligne de la table identifie dans la requte de niveau suprieur. Lexemple suivant recense, via une sous-requte corrle, tous les employs dont le salaire est suprieur au salaire moyen en vigueur dans leur service :
SELECT E1.EMPNO, E1.LASTNAME, E1.WORKDEPT FROM EMPLOYEE E1 WHERE SALARY > (SELECT AVG(SALARY) FROM EMPLOYEE E2 WHERE E2.WORKDEPT = E1.WORKDEPT) ORDER BY E1.WORKDEPT

Dans cette requte, la sous-requte est value une fois par service. Voici le rsultat obtenu :
EMPNO -----000010 000110 000030 000060 000150 000170 000200 000220 000070 000240 000270 000090 000280 000100 000330 000340 LASTNAME --------------HAAS LUCCHESSI KWAN STERN ADAMSON YOSHIMURA BROWN LUTZ PULASKI MARINO PEREZ HENDERSON SCHNEIDER SPENSER LEE GOUNOT WORKDEPT -------A00 A00 C01 D11 D11 D11 D11 D11 D21 D21 D21 E11 E11 E21 E21 E21

42

Initiation SQL

Pour crire une requte avec une sous-requte corrle, utilisez le format de base dune requte externe ordinaire avec sous-requte. Cependant, dans la clause FROM de la requte externe, juste aprs le nom de la table, placez un nom de corrlation. Ensuite, la sous-requte peut contenir des rfrences qualifies par le nom de corrlation. Par exemple, si E1 est un nom de corrlation, E1.WORKDEPT dsigne la valeur WORKDEPT de la ligne en cours, dans la table de la requte externe. La sous-requte est r-value chaque ligne de la table de la requte externe. Lorsque vous utilisez une sous-requte corrle, le systme fait le travail pour vous. Ainsi, vous avez moins de code crire dans lapplication. DB2 autorise les rfrences corrles non qualifies. Par exemple, une colonne de la table EMPLOYEE est appele LASTNAME et une colonne de la table SALES est appele SALES_PERSON, mais aucune colonne nest appele LASTNAME.
SELECT LASTNAME, FIRSTNME, COMM FROM EMPLOYEE WHERE 3 > (SELECT AVG(SALES) FROM SALES WHERE LASTNAME = SALES_PERSON)

Dans cet exemple, le systme cherche une colonne LASTNAME dans la clause FROM la plus imbrique. Comme il nen trouve pas, il recherche dans la clause FROM de niveau immdiatement suprieur (qui, dans ce cas, est la clause FROM externe). Bien que cela ne soit pas toujours ncessaire, il est recommand de qualifier des rfrences corrles pour rendre la requte plus lisible et obtenir le rsultat attendu.

Implmentation dune sous-requte corrle


Quand utiliser une sous-requte corrle ? Quelquefois, lutilisation dune fonction de colonne relve de lnigme. Par exemple, vous dsirez obtenir la liste des employs ayant un niveau dtudes suprieur au niveau dtudes moyen en vigueur dans leur service. Il faut dabord dterminer les lments de la liste de slection. Le but de la requte est dobtenir une liste des employs. Ceci implique que LASTNAME de la table EMPLOYEE devrait tre suffisant pour identifier les employs sans risque de doublon. La liste doit numrer les employs en fonction de leur niveau dtudes (EDLEVEL) et du service (WORKDEPT) auquel ils appartiennent. Bien que le but de la requte ne soit pas laffichage des colonnes, le fait de les inclure dans la liste de slection aidera illustrer le rsultat. Il devient possible de construire une partie de la requte :
SELECT LASTNAME, WORKDEPT, EDLEVEL FROM EMPLOYEE
Chapitre 5. Expressions et sous-requtes

43

Ensuite, il faut prvoir une condition de recherche (clause WHERE). Voici la condition dclare par linstruction : ...qui ont un niveau dtudes suprieur au niveau dtudes moyen des employs de ce service. Ceci signifie quil faut calculer, pour chaque employ, le niveau dtudes moyen du service auquel il appartient. Cette instruction illustre le cas o une sous-requte corrle conviendrait trs bien. Sur chaque ligne est calcule une proprit inconnue (en loccurrence, le niveau dtudes moyen du service auquel lemploy appartient). Il faut donner la table EMPLOYEE un nom de corrlation :
SELECT LASTNAME, WORKDEPT, EDLEVEL FROM EMPLOYEE E1

La sous-requte ncessaire est simple. Elle calcule le niveau dtudes moyen par service. Voici linstruction SQL complte :
SELECT LASTNAME, WORKDEPT, EDLEVEL FROM EMPLOYEE E1 WHERE EDLEVEL > (SELECT AVG(EDLEVEL) FROM EMPLOYEE E2 WHERE E2.WORKDEPT = E1.WORKDEPT)

Voici le rsultat obtenu :


LASTNAME --------------HAAS KWAN PULASKI HENDERSON LUCCHESSI PIANKA SCOUTTEN JONES LUTZ MARINO JOHNSON SCHNEIDER MEHTA GOUNOT WORKDEPT EDLEVEL -------- ------A00 18 C01 20 D21 16 E11 16 A00 19 D11 17 D11 17 D11 17 D11 18 D21 17 D21 16 E11 17 E21 16 E21 16

Vous voulez obtenir les noms, et non les numros, des services auxquels les employs appartiennent. Les informations utiliser (DEPTNAME) se trouvent dans une autre table (DEPARTMENT). La requte externe dfinissant une variable de corrlation peut galement tre une requte de jointure (voir la section Slection de donnes dans plusieurs tables la page 26, pour plus de dtails). Lorsque vous utilisez des jointures dans une requte externe, dans la clause FROM, indiquez les tables joindre et placez le nom de corrlation ct du nom de table appropri.

44

Initiation SQL

Pour que la requte recherche le nom du service, et non son numro, remplacez WORKDEPT par DEPTNAME dans la liste de slection. La clause FROM doit galement inclure la table DEPARTMENT et la clause WHERE doit exprimer la condition de jointure approprie. Voici la requte modifie :
SELECT LASTNAME, DEPTNAME, EDLEVEL FROM EMPLOYEE E1, DEPARTMENT WHERE E1.WORKDEPT = DEPARTMENT.DEPTNO AND EDLEVEL > (SELECT AVG(EDLEVEL) FROM EMPLOYEE E2 WHERE E2.WORKDEPT = E1.WORKDEPT)

Cette instruction donne le rsultat suivant :


LASTNAME --------------HAAS LUCCHESSI KWAN PIANKA SCOUTTEN JONES LUTZ PULASKI MARINO JOHNSON HENDERSON SCHNEIDER MEHTA GOUNOT DEPTNAME EDLEVEL ----------------------------- ------SPIFFY COMPUTER SERVICE DIV. 18 SPIFFY COMPUTER SERVICE DIV. 19 INFORMATION CENTER 20 MANUFACTURING SYSTEMS 17 MANUFACTURING SYSTEMS 17 MANUFACTURING SYSTEMS 17 MANUFACTURING SYSTEMS 18 ADMINISTRATION SYSTEMS 16 ADMINISTRATION SYSTEMS 17 ADMINISTRATION SYSTEMS 16 OPERATIONS 16 OPERATIONS 17 SOFTWARE SUPPORT 16 SOFTWARE SUPPORT 16

Les exemples ci-dessous montrent que le nom de corrlation utilis dans une sous-requte doit tre dfini dans la clause FROM dune requte contenant la sous-requte corrle. Cependant, ceci peut impliquer plusieurs niveaux dimbrication. Si certains services ont un effectif restreint, le niveau dtudes moyen obtenu risque de prter confusion. Pour que la comparaison entre le niveau dtudes moyen dun service et celui dun employ donne un rsultat significatif, vous pouvez prciser quil faut au moins cinq employs par service. Il nous faut alors recenser les employs dont le niveau dtudes est suprieur la moyenne de leur service, et ne prendre en compte que les services ayant un effectif suprieur ou gal cinq employs.

Chapitre 5. Expressions et sous-requtes

45

Il faut prvoir une autre sous-requte afin de dterminer le nombre total demploys du service auquel appartient chaque employ indiqu dans la requte externe :
SELECT COUNT(*) FROM EMPLOYEE E3 WHERE E3.WORKDEPT = E1.WORKDEPT

La moyenne ne sera calcule que si le rsultat est gal ou suprieur 5 :


SELECT AVG(EDLEVEL) FROM EMPLOYEE E2 WHERE E2.WORKDEPT = E1.WORKDEPT AND 5 <= (SELECT COUNT(*) FROM EMPLOYEE E3 WHERE E3.WORKDEPT = E1.WORKDEPT)

Enfin, seuls les employs ayant un niveau dtudes suprieur la moyenne du service seront inclus :
SELECT LASTNAME, DEPTNAME, EDLEVEL FROM EMPLOYEE E1, DEPARTMENT WHERE E1.WORKDEPT = DEPARTMENT.DEPTNO AND EDLEVEL > (SELECT AVG(EDLEVEL) FROM EMPLOYEE E2 WHERE E2.WORKDEPT = E1.WORKDEPT AND 5 <= (SELECT COUNT(*) FROM EMPLOYEE E3 WHERE E3.WORKDEPT = E1.WORKDEPT))

Cette instruction donne le rsultat suivant :


LASTNAME --------------PIANKA SCOUTTEN JONES LUTZ PULASKI MARINO JOHNSON HENDERSON SCHNEIDER DEPTNAME EDLEVEL ----------------------------- ------MANUFACTURING SYSTEMS 17 MANUFACTURING SYSTEMS 17 MANUFACTURING SYSTEMS 17 MANUFACTURING SYSTEMS 18 ADMINISTRATION SYSTEMS 16 ADMINISTRATION SYSTEMS 17 ADMINISTRATION SYSTEMS 16 OPERATIONS 16 OPERATIONS 17

46

Initiation SQL

Chapitre 6. Utilisation doprateurs et de prdicats dans des requtes


Dans DB2 Universal Database, il est possible dassocier des requtes diffrents oprateurs ensemblistes et de construire des instructions conditionnelles complexes avec des prdicats quantifis. Le prsent chapitre explique comment : v Associer des tables diffrentes laide des oprateurs ensemblistes UNION, EXCEPT et INTERSECT. v Mettre en place des conditions complexes, utiliser dans des requtes prdicats quantifis. Vous trouverez une brve prsentation des prdicats la section Slection de lignes la page 20.

Association de requtes laide doprateurs ensemblistes


Les oprateurs ensemblistes UNION, EXCEPT et INTERSECT permettent de fusionner dans une mme requte plusieurs requtes externes. Toutes les requtes runies par ces oprateurs ensemblistes sont excutes et leurs rsultats respectifs sont associs. Le rsultat dpend de loprateur utilis.

Oprateur UNION
Pour driver une table rsultat, loprateur UNION associe deux autres tables rsultat (par exemple, TABLE1 et TABLE2) et limine de ces tables les lignes en double. Lorsque ALL est utilis avec UNION (UNION ALL), les lignes en double ne sont pas limines. Dans un cas comme dans lautre, toutes les lignes de la table drive proviennent soit de TABLE1, soit de TABLE2. Dans lexemple suivant, la requte utilise loprateur UNION pour renvoyer les noms de toutes les personnes ayant un salaire suprieur 21 000 F, ou qui ont des responsabilits de directeur et moins de 8 ans de prsence dans la socit : 1
SELECT ID, NAME FROM STAFF WHERE SALARY > 21000 UNION

2
SELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8 ORDER BY ID

Copyright IBM Corp. 1993, 2000

47

Voici les rsultats des diffrentes requtes : 1


ID -----140 160 260 NAME --------Fraye Molinare Jones

2
ID -----10 30 100 140 160 240 NAME --------Sanders Marenghi Plotz Fraye Molinare Daniels

Le gestionnaire de bases de donnes associe les rsultats des deux requtes, limine les doublons et renvoie le rsultat final tri par ordre croissant.
ID -----10 30 100 140 160 240 260 NAME --------Sanders Marenghi Plotz Fraye Molinare Daniels Jones

Si, dans une requte, vous devez utiliser la clause ORDER BY avec un oprateur ensembliste, crivez-la aprs la dernire requte. Le systme effectue le classement de lensemble des rponses obtenues. Si le nom dune colonne diffre entre les deux tables, la table associant tous les rsultats ne trouve pas la correspondance. Les colonnes sont alors numrotes dans lordre o elles apparaissent. Dans ce cas, pour que les rsultats soient classs, il faut prciser les numros de colonne dans une clause ORDER BY.

Oprateur EXCEPT
Pour driver une table rsultat, loprateur EXCEPT inclut toutes les lignes se trouvant dans TABLE1 mais non dans TABLE2 et il limine les lignes en double. Si ALL est utilis avec EXCEPT (EXCEPT ALL), les lignes en double ne sont pas limines.

48

Initiation SQL

Dans lexemple suivant, la requte utilise loprateur EXCEPT pour renvoyer les noms de toutes les personnes gagnant plus de 21000 F, mais nayant pas le titre de directeur et justifiant de 8 ans de prsence, ou plus, dans la socit :
SELECT ID, NAME FROM STAFF WHERE SALARY > 21000 EXCEPT SELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8

Les rsultats des diffrentes requtes se trouvent dans la section rserve loprateur UNION. Linstruction ci-dessus donne le rsultat suivant :
ID NAME ------ --------260 Jones

Oprateur INTERSECT
Pour driver une table rsultat, loprateur INTERSECT ninclut que les lignes existant la fois dans TABLE1 et TABLE2 et limine les lignes en double. Si ALL est utilis avec INTERSECT (INTERSECT ALL), les lignes en double ne sont pas limines. Dans lexemple suivant, la requte utilise loprateur INTERSECT pour renvoyer les noms et les ID de toutes les personnes ayant un salaire suprieur 21000 F, des responsabilits de directeur et moins de 8 ans de prsence dans la socit :
SELECT ID, NAME FROM STAFF WHERE SALARY > 21000 INTERSECT SELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8

Les rsultats des diffrentes requtes se trouvent dans la section rserve loprateur UNION. Voici le rsultat de deux requtes sur lesquelles loprateur INTERSECT a t appliqu :
ID -----140 160 NAME --------Fraye Molinare

Lorsque vous utilisez les oprateurs UNION, EXCEPT et INTERSECT, gardez lesprit que : v Tous les lments des listes de slection des requtes utilisant ces oprateurs doivent tre compatibles. Pour plus dinformations, voir la table des compatibilits entre types de donnes dans le document SQL Reference. v Si elle est utilise, la clause ORDER BY doit tre place aprs la dernire requte faisant appel un oprateur ensembliste. Un nom de colonne ne peut tre utilis dans la clause ORDER BY que si le nom de colonne est identique pour les lments correspondants dans la liste de slection des requtes pour chaque oprateur.
Chapitre 6. Utilisation doprateurs et de prdicats dans des requtes

49

v Les oprations impliquant des colonnes de mme type et de mme longueur produisent une colonne de ce type et de cette longueur. Le document SQL Reference nonce les rgles respectes pour attribuer un type de donnes aux rsultats des oprateurs ensemblistes UNION, EXCEPT et INTERSECT.

Prdicats
Les prdicats permettent de crer des conditions telles que seules les lignes qui les respectent seront traites. Vous trouverez une description des prdicats la section Slection de lignes la page 20. La prsente section dcrit les prdicats IN, BETWEEN, LIKE, EXISTS et les prdicats quantifis.

Utilisation du prdicat IN
Utilisez un prdicat IN pour comparer une valeur plusieurs autres. Par exemple :
SELECT NAME FROM STAFF WHERE DEPT IN (20, 15)

Cet exemple quivaut :


SELECT NAME FROM STAFF WHERE DEPT = 20

OR DEPT = 15

Utilisez les prdicats IN et NOT IN quand une sous-requte renvoie un ensemble de valeurs. Par exemple, la requte suivante permet de recenser les noms de tous les employs responsables des projets MA2100 et OP2012 :
SELECT LASTNAME FROM EMPLOYEE WHERE EMPNO IN (SELECT RESPEMP FROM PROJECT WHERE PROJNO = 'MA2100' OR PROJNO = 'OP2012')

La sous-requte nest value quune fois, et le rsultat se place directement dans la requte externe, sous forme de liste. Par exemple, la sous-requte ci-dessous slectionne les employs ayant les matricules 10 et 330. Lvaluation de la requte externe donne le mme rsultat que si elle contenait la clause WHERE suivante :
WHERE EMPNO IN (10, 330)

La liste renvoye par la sous-requte peut ne contenir aucune valeur ou en comporter une ou plusieurs.

50

Initiation SQL

Utilisation du prdicat BETWEEN


Utilisez un prdicat BETWEEN pour comparer une valeur une plage de valeurs inclusives (nommes dans le prdicat BETWEEN). Lexemple suivant recherche les noms des employs gagnant entre 10000 et 20000 F :
SELECT LASTNAME FROM EMPLOYEE WHERE SALARY BETWEEN 10000 AND 20000

Ceci quivaut :
SELECT LASTNAME FROM EMPLOYEE WHERE SALARY >= 10000 AND SALARY <= 20000

Lexemple suivant recherche les noms des employs gagnant moins de 10000 ou plus de 20000 F :
SELECT LASTNAME FROM EMPLOYEE WHERE SALARY NOT BETWEEN 10000 AND 20000

Utilisation du prdicat LIKE


Utilisez le prdicat LIKE pour rechercher les chanes correspondant certains modles. Le modle est prcis laide du signe % et du trait de soulignement. v Le trait de soulignement (_) reprsente nimporte quel caractre individuel. v Le symbole du pourcentage (%) reprsente une chane de zro ou plusieurs caractres. v Tous les autres caractres se reprsentent eux-mmes. Lexemple suivant slectionne les noms des employs comportant 7 caractres et commenant par la lettre S :
SELECT NAME FROM STAFF WHERE NAME LIKE 'S _ _ _ _ _ _'

Lexemple suivant slectionne les noms des employs commenant par une lettre autre que S :
SELECT NAME FROM STAFF WHERE NAME

NOT LIKE 'S%'

Utilisation du prdicat EXISTS


Une sous-requte peut tre utilise pour vrifier lexistence dune ligne rpondant une condition. Dans ce cas, la sous-requte est lie la requte externe par le prdicat EXISTS ou NOT EXISTS.
Chapitre 6. Utilisation doprateurs et de prdicats dans des requtes

51

Si vous liez une sous-requte une requte externe par le prdicat EXISTS, cette sous-requte ne renvoie pas de valeur. Le prdicat EXISTS est vrai si lensemble des rponses de la sous-requte contient une ligne ou plus, et il est faux sil nen contient aucune. Le prdicat EXISTS est souvent utilis avec les sous-requtes corrles. Lexemple ci-dessous recense les services ne possdant aucune entre dans la table PROJECT :
SELECT DEPTNO, DEPTNAME FROM DEPARTMENT X WHERE NOT EXISTS (SELECT * FROM PROJECT WHERE DEPTNO = X.DEPTNO) ORDER BY DEPTNO

Il est possible de lier les prdicats EXISTS et NOT EXISTS dautres prdicats, en utilisant AND et OR dans la clause WHERE de la requte externe.

Prdicats quantifis
Un prdicat quantifi compare une valeur une collection de valeurs. Si une instruction FULLSELECT renvoie plusieurs valeurs, vous devez modifier les oprateurs de comparaison du prdicat, en ajoutant le suffixe ALL, ANY ou SOME. Ces suffixes dterminent le traitement dans le prdicat externe de lensemble de valeurs renvoyes. Nous prenons ci-dessous loprateur de comparaison > comme exemple, mais les remarques sappliquent galement aux autres oprateurs : expression > ALL (FULLSELECT) Le prdicat est vrai si lexpression est suprieure chacune des valeurs renvoyes par linstruction FULLSELECT. Si linstruction FULLSELECT ne renvoie aucune valeur, le prdicat est vrai. Le rsultat est faux si la relation prcise est fausse pour au moins une valeur. Notez que le prdicat quantifi <>ALL quivaut au prdicat NOT IN. Lexemple suivant utilise une sous-requte et une comparaison avec > ALL pour rechercher les noms et les professions des employs gagnant plus que tous les directeurs :
SELECT LASTNAME, JOB FROM EMPLOYEE WHERE SALARY > ALL (SELECT SALARY FROM EMPLOYEE WHERE JOB='MANAGER')

52

Initiation SQL

expression > ANY (FULLSELECT) Le prdicat est vrai si lexpression est suprieure au moins lune des valeurs renvoyes par linstruction FULLSELECT. Si linstruction FULLSELECT ne renvoie aucune valeur, le prdicat est faux. Notez que loprateur quantifi =ANY quivaut au prdicat IN. expression > SOME (FULLSELECT) SOME est synonyme de ANY. Pour de plus amples informations sur les prdicats et les oprateurs, consultez le document SQL Reference.

Chapitre 6. Utilisation doprateurs et de prdicats dans des requtes

53

54

Initiation SQL

Chapitre 7. Fonctions SQL volues


Le prsent chapitre couvre plusieurs caractristiques de DB2 Universal Database qui apportent plus defficacit la conception des requtes et permettent de les personnaliser. Il est indispensable que vous ayez une connaissance approfondie des fonctions SQL simples. Les sujets suivants sont abords : v Respect des rgles de gestion laide de contraintes et de dclencheurs v Jointures v Requtes ROLLUP et CUBE et Requtes rcursives v Fonctions OLAP

Respect des rgles de gestion laide de contraintes et de dclencheurs


Dans le monde de lentreprise, nous devons nous assurer que certaines rgles sont toujours respectes. Par exemple, un employ travaillant sur un projet doit tre inscrit au registre du personnel. Ou, peut-tre, certains vnements doivent se produire de manire systmatique. Par exemple, si un vendeur ralise une vente, sa commission doit tre augmente. DB2 Universal Database propose un ensemble de mthodes trs utiles pour garantir le respect de ces rgles : v Les contraintes dunicit empchent quune ou plusieurs colonnes dune table puissent contenir des valeurs en double. v Les contraintes dintgrit rfrentielle garantissent la cohrence des donnes dans les diffrentes tables prcises. v Les contraintes de vrification de table sont des conditions qui limitent les valeurs utilises dans une colonne. Les insertions et les mises jour naboutissent pas si la valeur affecte une colonne ne satisfait pas les contraintes de vrification pour cette colonne. v Les dclencheurs dfinissent un ensemble dactions excutes, ou dclenches, par une suppression, une insertion ou une mise jour dans une table prcise. Ils peuvent tre utiliss pour crire dans dautres tables, modifier des valeurs dentre et mettre des messages dalerte. Cette premire section prsente une vue densemble des cls. Dans les sections qui suivent, plusieurs exemples et diagrammes permettent dtudier les possibilits offertes par lintgrit rfrentielle, les contraintes et les dclencheurs.

Copyright IBM Corp. 1993, 2000

55

Cls
Une cl est un ensemble de colonnes utiliser pour identifier une ou plusieurs lignes ou pour y accder. Une cl compose de plusieurs colonnes est appele cl compose. Dans une table cl compose, lordre des colonnes dans la cl ne correspond pas ncessairement leur ordre dans la table. Cls uniques Une cl unique peut tre dfinie comme une colonne (ou un ensemble de colonnes) qui ne peut pas contenir de valeurs en double. Les colonnes auxquelles sapplique une cl unique ne peuvent pas contenir de valeur NULL. Le respect de la contrainte est assur par le gestionnaire de bases de donnes, pendant lexcution des instructions INSERT et UPDATE. Plusieurs cls uniques peuvent tre appliques une mme table. Facultatives, les cls uniques peuvent tre dfinies dans les instructions CREATE TABLE et ALTER TABLE. Cls primaires Une cl primaire est une cl unique faisant partie de la dfinition de la table. Une table ne peut pas avoir plusieurs cls primaires, et les colonnes concernes par une cl primaire ne peuvent pas contenir de valeur NULL. Facultatives, les cls primaires peuvent tre dfinies dans les instructions CREATE TABLE et ALTER TABLE. Cls associes Une cl associe fait partie de la dfinition dune contrainte rfrentielle. Aucune, une ou plusieurs cls associes peuvent tre appliques une table. La valeur de la cl associe compose est NULL si un des composants de la valeur est NULL. Facultatives, les cls associes peuvent tre dfinies dans les instructions CREATE TABLE et ALTER TABLE.

Contraintes dunicit
Une contrainte dunicit garantit que les valeurs dune cl sont uniques dans une mme table. Facultatives, les contraintes dunicit peuvent tre dfinies avec les instructions CREATE TABLE ou ALTER TABLE, en prcisant une clause PRIMARY KEY ou UNIQUE. Par exemple, il est possible de dfinir une contrainte dunicit sur la colonne EMPNO (matricules) dune table, pour garantir que chaque numro demploy sera unique.

Contraintes dintgrit rfrentielle


Les contraintes dunicit et les cls associes permettent de dfinir les relations entre les tables et, par consquent, de garantir le respect de certaines rgles de gestion. Les contraintes utilisant des cls uniques et des cls associes sont couramment appeles contraintes dintgrit rfrentielle. Une contrainte dunicit rfrence par une cl associe est appele cl parente. Une cl associe se rfre une cl parente spcifique, ou elle lui est relie. Par

56

Initiation SQL

exemple, une rgle peut fixer que tous les employs (table EMPLOYEE) doivent appartenir un service existant (table DEPARTMENT). Ainsi, le numro de service dfini dans la table EMPLOYEE sera utilis comme cl associe et le numro de service dfini dans la table DEPARTMENT sera utilis comme cl primaire. Le diagramme suivant illustre les contraintes dintgrit rfrentielle :

Figure 4. Les contraintes primaires et associes dfinissent les relations entre les donnes et assurent leur protection

Contraintes de vrification de table


Les contraintes de vrification de table indiquent les conditions qui sont vrifies pour chaque ligne dune table. Il est possible dindiquer des contraintes de vrification de table individuelles. Elles peuvent tre ajoutes au moyen des instructions CREATE ou ALTER TABLE.

Chapitre 7. Fonctions SQL volues

57

Linstruction ci-dessous cre une table devant respecter les contraintes suivantes : v Les valeurs du numro de service doivent tre comprises entre 10 et 100. v Un employ ne peut avoir quun des postes suivants : Sales, Mgr ou Clerk. v Tous les employs embauchs avant 1986 doivent gagner plus de 40500 F.
CREATE TABLE EMP (ID SMALLINT NOT NULL, NAME VARCHAR(9), DEPT SMALLINT CHECK (DEPT BETWEEN 10 AND 100), JOB CHAR(5) CHECK (JOB IN ('Sales', 'Mgr', 'Clerk')), HIREDATE DATE, SALARY DECIMAL(7,2), COMM DECIMAL(7,2), CLE PRIMAIRE (ID), CONSTRAINT YEARSAL CHECK (YEAR(HIREDATE) >= 1986 OR SALARY > 40500) )

Il ny a violation de contrainte que si lvaluation donne un rsultat faux. Par exemple, si DEPT a une valeur NULL sur une ligne insre, linsertion se fait sans erreur, bien que la contrainte demande que les numros de service soient compris entre 10 et 100. Linstruction suivante indique pour la table EMPLOYEE une contrainte COMP selon laquelle le salaire compens total de lemploy doit dpasser 15000 F :
ALTER TABLE EMP ADD CONSTRAINT COMP CHECK (SALARY + COMM > 15000)

Le respect de la nouvelle contrainte doit galement tre vrifi dans les lignes existantes de la table. Il est possible de diffrer cette vrification, en utilisant linstruction SET CONSTRAINTS de la manire suivante :
SET CONSTRAINTS FOR EMP OFF ALTER TABLE EMP ADD CONSTRAINT COMP CHECK (SALARY + COMM > 15000) SET CONSTRAINTS FOR EMP IMMEDIATE CHECKED

Tout dabord, linstruction SET CONSTRAINTS permet de diffrer la vrification des contraintes de la la table. Ensuite, une ou plusieurs contraintes peuvent tre ajoutes la table sans tre vrifies. Enfin, linstruction SET CONSTRAINTS, mise une nouvelle fois, ractive la vrification de la table, pour que les vrifications diffres, sil y en a, aient lieu.

Dclencheurs
Un dclencheur dfinit un ensemble dactions activ par une opration qui modifie les donnes dans la table de base prcise. Les dclencheurs peuvent tre utiliss pour : v valider les donnes en entre ;

58

Initiation SQL

v v v v

gnrer automatiquement une valeur pour une nouvelle ligne insre ; rechercher des rfrences croises dans dautres tables ; crire dans dautres tables pour assurer la trace de contrle ; prendre en charge des alertes via une messagerie lectronique.

Les dclencheurs permettent de dvelopper plus rapidement des applications, dimposer des rgles de gestion globales et de faciliter la maintenance des applications et des donnes. DB2 Universal Database accepte plusieurs types de dclencheurs. La dfinition des dclencheurs peut prvoir quils soient activs avant ou aprs une opration DELETE, INSERT ou UPDATE. Chaque dclencheur comporte un ensemble dinstructions SQL, appel action dclenche, qui peut inclure une condition de recherche facultative. La dfinition des dclencheurs AFTER peut galement prciser que laction doit tre dclenche chaque ligne ou une seule fois pour linstruction entire, tandis que les dclencheurs BEFORE appliquent toujours laction dclenche chacune des lignes. Un dclencheur plac avant une instruction INSERT, UPDATE ou DELETE permet de vrifier que certaines conditions sont remplies avant dexcuter une opration de dclenchement ou de modifier des valeurs avant de les stocker dans la table. Un dclencheur AFTER permet de transmettre des valeurs en fonction des besoins ou dexcuter dautres tches ncessaires au cours de lopration de dclenchement, comme lenvoi dun message. Lexemple suivant dcrit lutilisation de dclencheurs BEFORE et AFTER. Prenons le cas dune application qui enregistre et suit les modifications des cours de la Bourse. La base de donnes contient deux tables, CURRENTQUOTE et QUOTEHISTORY :
CREATE TABLE CURRENTQUOTE (SYMBOL VARCHAR(10), QUOTE DECIMAL(5,2), STATUS VARCHAR(9)) CREATE TABLE QUOTEHISTORY (SYMBOL VARCHAR(10), QUOTE DECIMAL(5,2), TIMESTAMP TIMESTAMP)

Chapitre 7. Fonctions SQL volues

59

Lorsque la colonne QUOTE de CURRENTQUOTE est mise jour laide dune instruction telle que :
UPDATE CURRENTQUOTE SET QUOTE = 68.5 WHERE SYMBOLE = 'IBM'

La colonne STATUS de CURRENTQUOTE doit tre mise jour pour indiquer si la valeur de laction : v est en hausse v est son niveau le plus haut pour lanne v est en baisse v est son niveau le plus bas pour lanne v est stable Cette mise jour seffectue laide du dclencheur BEFORE ci-dessous : 1
CREATE TRIGGER STOCK_STATUS NO CASCADE BEFORE UPDATE OF QUOTE ON CURRENTQUOTE REFERENCING NEW AS NEWQUOTE OLD AS OLDQUOTE FOR EACH ROW MODE DB2SQL

2
SET NEWQUOTE.STATUS =

3
CASE

4
WHEN NEWQUOTE.QUOTE >= (SELECT MAX(QUOTE) FROM QUOTEHISTORY WHERE SYMBOL = NEWQUOTE.SYMBOL AND YEAR(TIMESTAMP) = YEAR(CURRENT DATE) ) THEN 'En hausse'

5
WHEN NEWQUOTE.QUOTE <= (SELECT MIN(QUOTE) FROM QUOTEHISTORY WHERE SYMBOL = NEWQUOTE.SYMBOL AND YEAR(TIMESTAMP) = YEAR(CURRENT DATE) ) THEN 'En baisse'

60

Initiation SQL

6
WHEN NEWQUOTE.QUOTE > OLDQUOTE.QUOTE THEN 'En hausse' WHEN NEWQUOTE.QUOTE < OLDQUOTE.QUOTE THEN 'En baisse' WHEN NEWQUOTE.QUOTE = OLDQUOTE.QUOTE THEN 'Stable' END

Ce bloc de syntaxe dfinit STOCK_STATUS en tant que dclencheur avant la mise jour de la colonne QUOTE de la table CURRENTQUOTE. La deuxime ligne indique que laction doit tre dclenche avant lapplication, dans la base de donnes, des modifications quentranerait la mise jour de la table CURRENTQUOTE. La clause NO CASCADE signifie que laction dclenche nactivera pas elle-mme dautres dclencheurs. La troisime ligne prcise les noms utiliser comme qualificatifs de nom de colonne pour les nouvelles valeurs (NEWQUOTE) et les anciennes (OLDQUOTE). Les noms de colonne que NEWQUOTE et OLDQUOTE (noms de corrlation) qualifient sont appels variables de transition. La quatrime ligne indique que laction dclenche doit sexcuter pour chaque ligne. Ce bloc indique le dbut de la premire et unique instruction SQL de laction dclenche par ce dclencheur. Sur la ligne mise jour par linstruction ayant activ le dclencheur, linstruction SET variable-transition affecte une valeur une colonne. Dans notre exemple, linstruction affecte une valeur la colonne STATUS de la table CURRENTQUOTE. Lexpression utilise droite de laffectation est une expression CASE. Elle se termine par le mot cl END. Cette premire expression CASE vrifie si la nouvelle cotation (NEWQUOTE.QUOTE) dpasse la valeur maximale des actions boursires fixe pour lanne en cours. La sous-requte utilise la table QUOTEHISTORY mise jour par le dclencheur AFTER qui suit. Cette deuxime expression CASE vrifie si la nouvelle cotation (NEWQUOTE.QUOTE) est infrieure la valeur minimale des actions boursires fixe pour lanne en cours. La sous-requte utilise la table QUOTEHISTORY mise jour par le dclencheur AFTER qui suit. Ces trois dernires expressions CASE dterminent si la nouvelle cotation (NEWQUOTE.QUOTE) est suprieure, infrieure ou gale la cotation (OLDQUOTE.QUOTE) comprise dans la table. Linstruction SET variable-transition se termine ici.

3 4

Chapitre 7. Fonctions SQL volues

61

Outre la mise jour de lentre dans la table CURRENTQUOTE, vous devez crer un enregistrement daudit en copiant la nouvelle cotation ainsi que lhorodatage, dans la table QUOTEHISTORY. Cette mise jour seffectue laide du dclencheur AFTER ci-dessous : 1
CREATE TRIGGER RECORD_HISTORY AFTER UPDATE OF QUOTE ON CURRENTQUOTE REFERENCING NEW AS NEWQUOTE FOR EACH ROW MODE DB2SQL BEGIN ATOMIC

2
INSERT INTO QUOTEHISTORY VALUES (NEWQUOTE.SYMBOL, NEWQUOTE.QUOTE, CURRENT TIMESTAMP); END

Ce bloc de syntaxe dfinit que le dclencheur RECORD_HISTORY devra tre activ aprs la mise jour de la colonne QUOTE de la table CURRENTQUOTE. La troisime ligne indique le nom qui doit qualifier le nom de colonne de la nouvelle valeur (NEWQUOTE). La quatrime ligne indique que laction dclenche doit sexcuter pour chaque ligne. Laction entrane par ce dclencheur comprend une seule instruction SQL qui insre une ligne dans la table QUOTEHISTORY laide des donnes de la ligne mise jour (NEWQUOTE.SYMBOL et NEWQUOTE.QUOTE) et de lhorodatage en cours. CURRENT DATESTAMP est un registre spcial contenant lhorodatage. Vous trouverez une liste et une explication des registres la section Registres spciaux la page 74.

Jointures
Le processus qui consiste combiner des donnes provenant de plusieurs tables est appel jointure. Avec le gestionnaire de bases de donnes, il est possible dobtenir toutes sortes de combinaisons de lignes partir des tables prcises. Il teste la condition de jointure de chaque combinaison. Une condition de jointure est une condition de recherche, avec quelques restrictions. Consultez le document SQL Reference qui recense ces restrictions. Il est noter que les colonnes impliques dans la condition de jointure ne doivent pas forcment contenir des donnes de mme type. Cependant, les donnes doivent tre de types compatibles. La condition de jointure est value de la mme faon que nimporte quelle autre condition de recherche, et les mmes rgles de comparaison sy appliquent.

62

Initiation SQL

Si vous ne prcisez pas de condition de jointure, toutes les combinaisons de lignes possibles partir des tables cites dans la clause FROM sont renvoyes, mme si les lignes nont aucune relation entre elles. Le rsultat peut tre considr comme un produit crois des deux tables. Les exemples de cette section sont bass sur les deux tables prsentes ci-aprs. Il sagit de versions simplifies des tables de la base de donnes SAMPLE, mais elles nexistent pas dans la base. Elles illustrent quelques points intressants sur les jointures en gnral. SAMP_STAFF dresse la liste des employs qui ne sont pas sous contrat, accompagne des descriptions de poste. SAMP_PROJECT liste les employs (sous contrat et plein temps) et les projets sur lesquels ils travaillent. Voici comment se prsentent les tables :

Figure 5. TABLE SAMP_PROJECT

Figure 6. TABLE SAMP_STAFF

Lexemple suivant permet dobtenir un rsultat issu du produit crois des deux tables. Aucune condition de jointure ntant prcise, toutes les combinaisons de lignes possibles ont t trouves :
SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB FROM SAMP_PROJECT, SAMP_STAFF

Chapitre 7. Fonctions SQL volues

63

Cette instruction donne le rsultat suivant :


NAME PROJ ---------- -----Haas AD3100 Thompson PL2100 Walker MA2112 Lutz MA2111 Haas AD3100 Thompson PL2100 Walker MA2112 Lutz MA2111 Haas AD3100 Thompson PL2100 Walker MA2112 Lutz MA2111 Haas AD3100 Thompson PL2100 Walker MA2112 Lutz MA2111 ---------Haas Haas Haas Haas Thompson Thompson Thompson Thompson Lucchessi Lucchessi Lucchessi Lucchessi Nicholls Nicholls Nicholls Nicholls NAME -------PRES PRES PRES PRES MANAGER MANAGER MANAGER MANAGER SALESREP SALESREP SALESREP SALESREP ANALYST ANALYST ANALYST ANALYST JOB

Il y a deux principaux types de jointure : les jointures internes et les jointures externes. Jusqu prsent, dans tous nos exemples, nous avons utilis une jointure interne. Ce type de jointure ne garde du produit crois que les lignes remplissant la condition de jointure. Si une ligne existe dans une table et pas dans lautre, ses informations napparaissent pas dans la table rsultat. Lexemple suivant assure la jointure interne de deux tables. La jointure interne dresse la liste de tous les employs plein temps affects un projet :
SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB FROM SAMP_PROJECT, SAMP_STAFF WHERE SAMP_STAFF.NAME = SAMP_PROJECT.NAME

Il serait aussi possible de prciser la jointure interne de la manire suivante :


SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB FROM SAMP_PROJECT INNER JOIN SAMP_STAFF ON SAMP_STAFF.NAME = SAMP_PROJECT.NAME

Voici le rsultat obtenu :


NAME ---------Haas Thompson PROJ -----AD3100 PL2100 NAME ---------Haas Thompson JOB -------PRES MANAGER

Le rsultat de la jointure externe se compose de lignes dont les valeurs de la colonne NAME correspondent dans les tables de droite et de gauche - Haas et Thompson sont des noms que lon retrouve dans la table SAMP_STAFF

64

Initiation SQL

contenant la liste de tous les employs plein temps, et dans la table SAMP_PROJECT contenant la liste des employs plein temps et sous contrat affects un projet. Les jointures externes sont une concatnation de la jointure interne et des lignes de la table de gauche, de la table de droite, ou des deux tables absentes de la jointure interne. Lorsque vous excutez une jointure externe sur deux tables, vous affectez arbitrairement lune en tant que table de gauche et lautre en tant que table de droite. Il existe trois types de jointure : 1. Une jointure externe gauche, qui inclut la jointure interne et les lignes de la table de gauche non comprises dans la jointure interne. 2. Une jointure externe droite, qui inclut la jointure interne et les lignes de la table de droite non comprises dans la jointure interne. 3. Une jointure externe complte, qui inclut la jointure interne et les lignes des tables de gauche et de droite non comprises dans la jointure interne. Utilisez linstruction SELECT pour prciser les colonnes afficher. Dans la clause FROM, citez le nom de la table, suivi des mots cls LEFT OUTER JOIN, RIGHT OUTER JOIN ou FULL OUTER JOIN. Ensuite, prcisez le nom de la seconde table, suivi du mot cl ON. Aprs le mot cl ON, prcisez la condition de jointure, qui exprimera la relation entre les tables joindre. Dans lexemple suivant, SAMP_STAFF est la table de droite et SAMP_PROJECT est la table de gauche. LEFT OUTER JOIN permet de dresser la liste des noms et des numros de projet de tous les employs, plein temps et sous contrat (liste de la table SAMP_PROJECT) ainsi que leur poste sils sont plein temps (liste de la table SAMP_STAFF) :
SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB FROM SAMP_PROJECT LEFT OUTER JOIN SAMP_STAFF ON SAMP_STAFF.NAME = SAMP_PROJECT.NAME

Cette instruction donne le rsultat suivant :


NAME ---------Haas Lutz Thompson Walker PROJ -------------------AD3100 MA2111 PL2100 MA2112 NAME ---------Haas Thompson JOB -------------------PRES MANAGER -

Les lignes comportant des valeurs dans toutes les colonnes sont le rsultat de la jointure interne. Elles remplissent la condition de jointure : Haas et Thompson sont prsents dans les deux tables, SAMP_PROJECT (table de gauche) et SAMP_STAFF (table de droite). Sur les lignes ne remplissant pas la condition de jointure, la valeur NULL apparat dans les colonnes de la table de droite : Lutz et Walker sont des employs sous contrat, prsents dans la
Chapitre 7. Fonctions SQL volues

65

table SAMP_PROJECT mais absents de la table SAMP_STAFF. Toutes les lignes de la table de gauche sont incluses dans lensemble de rsultats. Dans lexemple suivant, SAMP_STAFF est la table de droite et SAMP_PROJECT est la table de gauche. RIGHT OUTER JOIN permet de dresser la liste des noms et des postes de tous les employs plein temps (liste de la table SAMP_STAFF), et dindiquer galement leur numro de projet, sils ont t affects un projet (liste de la table SAMP_PROJECT) :
SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB FROM SAMP_PROJECT RIGHT OUTER JOIN SAMP_STAFF ON SAMP_STAFF.NAME = SAMP_PROJECT.NAME

Voici le rsultat obtenu :


NAME ---------Haas Thompson PROJ -------------------AD3100 PL2100 NAME ---------Haas Lucchessi Nicholls Thompson JOB -------------------PRES SALESREP ANALYST MANAGER

Comme dans le cas de la jointure externe gauche, les lignes comportant des valeurs dans toutes les colonnes sont le rsultat de la jointure interne. Elles remplissent la condition de jointure : Haas et Thompson sont prsents dans les deux tables, SAMP_PROJECT (table de gauche) et SAMP_STAFF (table de droite). Sur les lignes ne remplissant pas la condition de jointure, la valeur NULL apparat dans les colonnes de la table de droite : Lucchessi et Nicholls sont des employs plein temps non affects un projet. Ils font partie de la liste du personnel de la table SAMP_STAFF, mais sont absents de la table SAMP_PROJECT. Toutes les lignes de la table de droite sont incluses dans lensemble de rsultats. Lexemple suivant utilise FULL OUTER JOIN sur les tables SAMP_PROJECT et SAMP_STAFF. Il donne les noms de tous les employs plein temps, y compris ceux qui ne sont pas affects un projet, et de tous les employs sous contrat :
SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB FROM SAMP_PROJECT FULL OUTER JOIN SAMP_STAFF ON SAMP_STAFF.NAME = SAMP_PROJECT.NAME

66

Initiation SQL

Voici le rsultat obtenu :


NAME ---------Haas Thompson Lutz Walker PROJ -------------------AD3100 PL2100 MA2111 MA2112 NAME ---------Haas Lucchessi Nicholls Thompson JOB -------------------PRES SALESREP ANALYST MANAGER -

Le rsultat inclut la jointure externe gauche, la jointure externe droite et la jointure interne. La liste inclut tous les employs plein temps et sous contrat. Comme dans le cas dune jointure externe gauche ou droite, la valeur NULL apparat lorsque la condition de jointure nest pas remplie. Toutes les lignes des tables SAMP_STAFF et SAMP_PROJECT sont incluses dans lensemble de rsultats.

Requtes complexes
DB2 Universal Database permet de grouper, consolider et visualiser plusieurs colonnes dans un mme ensemble de rsultats, via les requtes ROLLUP et CUBE. Cette nouvelle fonction, par sa puissance, amliore et simplifie lanalyse des donnes SQL. Plusieurs mthodes permettent dextraire des informations utiles de la base de donnes. Il est possible, par exemple, dimplmenter des requtes rcursives, qui produiront des tables rsultat partir densembles de donnes existants.

Requtes ROLLUP et CUBE


Les oprations ROLLUP et CUBE sont dfinies dans la clause GROUP BY dune requte. Un groupage par ROLLUP permet dobtenir, comme ensemble de rsultats, les lignes groupes normales et les lignes de sous-totaux. Un groupage par CUBE permet dobtenir, comme ensemble de rsultats, les lignes trouves par ROLLUP et les lignes de tabulation croise. Ainsi, ROLLUP permettra dobtenir les ventes par personne et par mois, ainsi que le total des ventes du mois et un total gnral. CUBE ajoutera des lignes au total des ventes par personne. Pour plus de dtails, consultez le manuel SQL Reference.

Requtes rcursives
Une requte rcursive est une requte qui utilise les rsultats de manire itrative, pour dterminer de nouveaux rsultats. Elle pourrait tre reprsente comme une arborescence ou un graphique.

Chapitre 7. Fonctions SQL volues

67

Parmi les exemples pratiques, citons les systmes de rservation et la planification de rseau. Une requte rcursive utilise une expression de table commune incluant une rfrence son propre nom. Le document SQL Reference contient des exemples de requtes rcursives.

Fonctions OLAP
Les fonctions de traitement analytique en ligne (OLAP) permettent deffectuer des oprations de fonction de colonne sur une fentre de donnes. Cette fentre peut dfinir un partitionnement de lignes, un classement de lignes dans des partitions ou un groupe dagrgation. Le groupe dagrgation permet lutilisateur dindiquer quelles sont les lignes, en relation avec la ligne en cours, qui font lobjet dun calcul. Lutilisation de cette fentre permet deffectuer des oprations telles que le calcul des sommes cumules et des moyennes mobiles. Outre la possibilit de fournir lutilisateur une fentre pour les fonctions de colonne existantes, (telles que SUM et AVG), les fonctions OLAP peuvent excuter des oprations de classement (RANK et DENSE_RANK) et fournissent la numrotation des lignes (ROW_NUMBER), en fonction du partitionnement et de la numrotation des lignes. Lexemple de requte suivant illustre le classement dun employ dans un service en fonction de son salaire et affiche la somme cumule des salaires du service (pour les services 15 et 38) :
SELECT NAME, DEPT, RANK () OVER (PARTITION BY DEPT ORDER BY SALARY DESC) AS RANK, SUM (SALARY) OVER (PARTITION BY DEPT ORDER BY SALARY DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CUMULATIVE_SUM FROM STAFF WHERE DEPT IN (15,38) ORDER BY DEPT, RANK

Cette instruction donne le rsultat suivant :


NAME ---------Hanes Rothman Ngan Kermisch O'Brien Marenghi DEPT RANK CUMULATIVE_SUM --------- ---------- -------------------15 1 20659.80 15 2 37162.63 15 3 49670.83 15 4 61929.33 38 1 18006.00 38 2 35512.75

68

Initiation SQL

Quigley Naughton Abrahams

38 38 38

3 4 5

52321.05 65275.80 77285.55

Chapitre 7. Fonctions SQL volues

69

70

Initiation SQL

Chapitre 8. Personnalisation et amlioration de la manipulation des donnes


Le prsent chapitre contient une courte prsentation des extensions orientes objet de DB2 Universal Database. Il y a de nombreux avantages utiliser des extensions orientes objet. Les types dfinis par lutilisateur (UDT) augmentent lensemble de types de donnes dont vos applications disposent et les fonctions dfinies par lutilisateur (UDF) permettent la cration de fonctions spcifiques une application. Les focntions UDF servent de mthodes, qui assurent un comportement et un encapsulage cohrents entre les diffrents types UDT. Vous y trouverez ensuite une description des registres spciaux et des catalogues systme. Un registre spcial est une zone de mmoire rserve la connexion par le gestionnaire de bases de donnes et conservant des informations pouvant tre rfrences dans des instructions SQL. Les registres spciaux sont tablis au moment de la connexion et dpendent du traitement de lapplication. Les catalogues systme vous renseignent sur la structure logique et physique des objets de base de donnes. Les sujets suivants sont abords : v v v v v Types dfinis par lutilisateur Fonctions dfinies par lutilisateur (UDF) Objets LOB Registres spciaux Prsentation des vues de catalogue

Les sujets ci-dessus font lobjet dexplications dtailles dans les documents SQL Reference et Administration Guide.

Types dfinis par lutilisateur


Un type distinct est un type de donnes dfini par lutilisateur dont la reprsentation interne est commune avec celle dun type existant (son type source), mais considr comme distinct et incompatible pour la plupart des oprations. Par exemple, il est possible de dfinir un type Age, un type Poids et un type Taille, utilisant chacun une smantique diffrente, mais partageant le mme type de donnes intgr, INTEGER, pour leurs reprsentations internes.

Copyright IBM Corp. 1993, 2000

71

Lexemple suivant illustre la cration dun type distinct, nomm PAY :


CREATE DISTINCT TYPE PAY AS DECIMAL(9,2) WITH COMPARISONS

Bien que PAY ait la mme reprsentation que le type de donnes intgr DECIMAL(9,2), il est considr comme un type distinct non compatible avec un type DECIMAL(9,2) ou tout autre type. Il ne peut tre compar quau mme type distinct. En outre, les oprateurs et fonctions qui fonctionneraient avec le type DECIMAL ne sappliquent pas ici. Par exemple, une valeur de type PAY ne peut pas tre multiplie par une valeur de type INTEGER. Il faut donc dans ce cas crire des fonctions ne sappliquant quau type PAY. Lutilisation de types de donnes distincts limite les erreurs accidentelles. Par exemple, si la colonne SALARY de la table EMPLOYEE a t dfinie comme type de donnes PAY, elle ne peut pas tre ajoute COMM, mme si les types source sont les mmes. Les types de donnes distincts prennent en charge le transtypage. Un type source peut tre converti en type de donnes distinct et un type de donnes distinct en type source. Par exemple, si la colonne SALARY de la table EMPLOYEE a t dfinie comme tant de type PAY, il ny aura pas, dans lexemple suivant, derreur sur loprateur de comparaison.
SELECT * FROM EMPLOYEE WHERE DECIMAL(SALARY) = 41250

DECIMAL(SALARY) renvoie un type de donnes dcimal. Inversement, un type de donnes numrique peut tre converti en type PAY. Par exemple, il est possible dutiliser PAY(41250) pour convertir le nombre 41250.

Fonctions dfinies par lutilisateur (UDF)


Comme le mentionne la section Utilisation de fonctions la page 28, DB2 Universal Database fournit des fonctions intgres et des fonctions UDF (dfinies par lutilisateur). Cependant, cet ensemble de fonctions ne rpond jamais toutes les exigences. Souvent, il faut crer des fonctions personnalises pour certaines tches. Les fonctions UDF permettent de crer des fonctions personnalises. Il existe quatre types de fonctions UDF : la fonction drive (ou modle), la fonction scalaire externe, la fonction de table externe et la fonction de table externe OLE DB. La prsente section traite des types de fonctions drives ou scalaires externes. Pour plus de dtails sur les types de fonctions de table externe et de table OLE DB, reportez-vous au manuel SQL Reference.

72

Initiation SQL

Les fonctions UDF drives permettent aux UDT de faire une rfrence slective une autre fonction intgre ou UDF, dj connue de la base de donnes. Il est possible dutiliser les fonctions scalaires comme les fonctions de colonne. Dans lexemple suivant, la nouvelle fonction UDF (MAX) est base sur la fonction de colonne intgre MAX, qui prend en entre les donnes de type DECIMAL. La fonction UDF MAX prend PAY comme type dentre et de sortie.
CREATE FUNCTION MAX(PAY) RETURNS PAY SOURCE MAX(DECIMAL)

Les fonctions UDF externes sont crites en langage de programmation. Il peut sagir de fonctions scalaires externes et de fonctions de table externes. Ces deux types sont dcrits dans le document SQL Reference. Prenons le cas o vous avez dj crit une fonction destine compter le nombre de mots dune chane. Il est possible de lenregistrer avec la base de donnes, sous le nom WORDCOUNT, avec linstruction CREATE FUNCTION. Ensuite, cette fonction peut tre utilise dans les instructions SQL. Linstruction suivante renvoie les numros des employs et le nombre de mots que contient leur fiche sous forme ASCII. WORDCOUNT est une fonction scalaire externe enregistre avec la base de donnes et utilise dans linstruction.
SELECT EMPNO, WORDCOUNT(RESUME) FROM EMP_RESUME WHERE RESUME_FORMAT = 'ascii'

Pour plus de dtails sur les fonctions UDF, consultez le document Application Development Guide.

Objets LOB
Le terme LOB (pour Large OBject) fait rfrence trois types de donnes : BLOB, CLOB et DBCLOB. Il dsigne des types dobjets peuvent contenir beaucoup de donnes, comme des documents, des photos et des fichiers audio. Un objet BLOB (Binary Large OBject) est une chane de longueur variable mesure en octets, qui peut atteindre 2 giga-octets. Un objet BLOB est principalement destin aux donnes non traditionnelles comme les images, les donnes vocales et les supports mixtes.

Chapitre 8. Personnalisation et amlioration de la manipulation des donnes

73

Un objet CLOB (Character-Large OBject) est une chane de longueur variable mesure en octets, qui peut atteindre 2 giga-octets. Un objet CLOB sert conserver de gros fichiers de caractres un octet, comme des documents. Un objet CLOB est considr comme une chane de caractres. Un objet DBCLOB (Double-Byte Character Large OBject) est une chane de longueur variable, compose de caractres double octet, qui peut atteindre 2 giga-octets (1 073 741 823 caractres double octet). Un objet DBCLOB sert stocker de gros fichiers de caractres deux octets, comme des documents. Un objet DBCLOB est considr comme une chane graphique.

Manipulation des objets LOB


Comme les valeurs LOB reprsentent souvent de gros volumes de donnes, le fait de les transfrer du serveur de bases de donnes vers un programme dapplication client risque de prendre beaucoup de temps. Cependant, les valeurs LOB sont traites une par une et non comme une entit. Lorsquil nest pas ncessaire que la valeur LOB en entier soit stocke dans la mmoire de lapplication, il est possible, pour faire rfrence cette valeur, dutiliser une variable releveur de coordonnes LOB. Les instructions suivantes peuvent utiliser ces releveurs pour effectuer des oprations sur les donnes sans avoir extraire lobjet LOB en entier. Ces variables permettent de rduire le flot de donnes entre le client et le serveur, et limitent donc les besoins en mmoire des applications et amliorent les performances. Les variables de rfrence un fichier constituent un autre mcanisme. Ces variables servent extraire directement un fichier un objet LOB ou mettre directement jour un objet LOB dans une table, partir dun fichier. Les variables de rfrence un fichier rduisent les besoins en mmoire des applications, qui nont pas stocker les donnes des objets LOB. Pour de plus amples informations, consultez les documents Application Development Guide et SQL Reference.

Registres spciaux
Un registre spcial est une zone de mmoire rserve la connexion par le gestionnaire de bases de donnes et conservant des informations pouvant tre rfrences dans des instructions SQL. Vous trouverez ci-aprs quelques exemples des registres spciaux les plus utiliss. Le document SQL Reference contient plus de dtails sur les registres spciaux et fournit leur liste complte. v CURRENT DATE : Date de lhorloge systme au moment de lexcution de linstruction SQL. v CURRENT FUNCTION PATH : Chemin daccs utilis pour rsoudre les rfrences aux fonctions et aux types de donnes.

74

Initiation SQL

v CURRENT SERVER : Serveur dapplications utilis. v CURRENT TIME : Heure de lhorloge systme au moment de lexcution de linstruction SQL. v CURRENT TIMESTAMP : Horodatage de lhorloge systme au moment de lexcution de linstruction SQL. v CURRENT TIMEZONE : Diffrence entre lheure TUC (Temps Universel Coordonn) et lheure locale du serveur dapplications. v USER : Prcise lID autorisation de lexcution. Linstruction VALUES permet dafficher le contenu dun registre spcial. Par exemple :
VALUES (CURRENT TIMESTAMP)

Vous pouvez galement spcifier :


SELECT CURRENT TIMESTAMP FROM ORG

Lhorodatage sera renvoy pour toutes les lignes de la table.

Prsentation des vues de catalogue


DB2 cre et assure la maintenance de plusieurs tables par base de donnes, destines aux catalogues systme. Ces tables contiennent des informations sur la structure logique et physique des objets de bases de donnes, comme les tables, les vues, les modules, les relations dintgrit rfrentielle, les fonctions, les types distincts et les dclencheurs. Elles sont cres en mme temps que la base de donnes et mises jour dans le cadre doprations normales. Il nest pas possible de les crer ou de les supprimer explicitement, mais vous pouvez les interroger et en visualiser le contenu. Pour de plus amples informations, consultez le document SQL Reference.

Slection de lignes des catalogues systme


Les vues de catalogues ressemblent nimporte quelle autre vue de base de donnes. Il est possible dutiliser les instructions SQL pour visualiser leurs donnes, exactement comme vous le feriez pour nimporte quelle autre vue du systme. Le catalogue SYSCAT.TABLES contient des informations trs utiles sur les tables. Pour rechercher les noms des tables que vous avez dj cres, utilisez une instruction semblable celle prsente ci-aprs :
SELECT TABNAME, TYPE, CREATE_TIME FROM SYSCAT.TABLES WHERE DEFINER = USER

Chapitre 8. Personnalisation et amlioration de la manipulation des donnes

75

Cette instruction donne le rsultat suivant :


TABNAME -----------------ORG STAFF DEPARTMENT EMPLOYEE EMP_ACT PROJECT EMP_PHOTO EMP_RESUME SALES CL_SCHED IN_TRAY TYPE ---T T T T T T T T T T T CREATE_TIME -------------------------1999-07-21-13.42.55.128005 1999-07-21-13.42.55.609001 1999-07-21-13.42.56.069001 1999-07-21-13.42.56.310001 1999-07-21-13.42.56.710001 1999-07-21-13.42.57.051001 1999-07-21-13.42.57.361001 1999-07-21-13.42.59.154001 1999-07-21-13.42.59.855001 1999-07-21-13.43.00.025002 1999-07-21-13.43.00.055001

Vous trouverez ci-dessous la liste des vues de catalogues lies aux sujets traits dans le prsent manuel. Il en existe de nombreuses autres, dont vous trouverez une liste dtaille dans les documents SQL Reference et Administration Guide.
Description Contraintes de vrification Colonnes Colonnes rfrences par des contraintes de vrification Colonnes utilises dans des cls Types de donnes Paramtres de fonction ou rsultat dune fonction Contraintes rfrentielles Schmas Contraintes de table Tables Dclencheurs Fonctions dfinies par lutilisateur Vues Vue de catalogue SYSCAT.CHECKS SYSCAT.COLUMNS SYSCAT.COLCHECKS SYSCAT.KEYCOLUSE SYSCAT.DATATYPES SYSCAT.FUNCPARMS SYSCAT.REFERENCES SYSCAT.SCHEMATA SYSCAT.TABCONST SYSCAT.TABLES SYSCAT.TRIGGERS SYSCAT.FUNCTIONS SYSCAT.VIEWS

76

Initiation SQL

Annexe A. Tables de la base de donnes SAMPLE


Vous trouverez ci-aprs les informations que contiennent les modles de tables de la base de donnes SAMPLE, ainsi que la manire de crer et de retirer ces derniers. Des modles de bases de donnes supplmentaires sont fournis avec DB2 Universal Database des fins de dmonstration des fonctions dintelligence conomique ; ils sont utiliss avec le tutoriel correspondant. Seul le contenu de la base de donnes SAMPLE est dcrit dans la prsente annexe. Pour plus de dtails sur les bases de donnes exemple concernant lintelligence conomique, reportez-vous au manuel Data Warehouse Center Administration Guide. Ces modles, utiliss dans les exemples du prsent manuel, apparaissent galement dans dautres manuels de la mme bibliothque. Vous trouverez galement dans la prsente annexe les modles de fichiers utilisant des donnes de types BLOB et CLOB. Lannexe se compose des sections suivantes : Base de donnes SAMPLE la page 78 Cration de la base de donnes SAMPLE la page 78 Effacement de la base de donnes SAMPLE la page 79 Table CL_SCHED la page 79 Table DEPARTMENT la page 79 Table EMPLOYEE la page 80 Table EMP_ACT la page 83 Table EMP_PHOTO la page 85 Table EMP_RESUME la page 85 Table IN_TRAY la page 86 Table ORG la page 86 Table PROJECT la page 87 Table SALES la page 88 Table STAFF la page 89 Table STAFFG la page 90 Modles de fichiers utilisant les types dobjet BLOB et CLOB la page 92 Photo de Dolores Quintana la page 92 Fiche descriptive de Dolores Quintana la page 92 Photo dHeather A. Nicholls la page 93 Fiche descriptive dHeather A. Nicholls la page 93 Photo de Bruce Adamson la page 95 Fiche descriptive de Bruce Adamson la page 95 Photo de James H. Walker la page 96
Copyright IBM Corp. 1993, 2000

77

Tables de la base de donnes SAMPLE


Fiche descriptive de James H. Walker la page 96. Dans les modles de tables, un tiret (-) reprsente une valeur nulle.

Base de donnes SAMPLE


Les exemples du prsent document utilisent un modle de base de donnes, appel SAMPLE, que vous devez crer. Vrifiez aussi que le gestionnaire de bases de donnes est install.

Cration de la base de donnes SAMPLE


La base de donnes SAMPLE est cre par un fichier excutable.2 Pour crer une base de donnes, vous devez disposer du droit daccs SYSADM. v Installation sur des plateformes UNIX Si vous tapez votre commande linvite du systme dexploitation, utilisez la syntaxe suivante :
sqllib/bin/db2sampl <chemin_d'accs>

dans le rpertoire priv du propritaire de linstance du gestionnaire de bases de donnes. chemin_daccs est un paramtre facultatif qui prcise lemplacement o doit tre cre la base de donnes SAMPLE. Appuyez sur Entre.3 Le schma correspondant DB2SAMPL est la valeur de registre spciale CURRENT SCHEMA. v Installation sur des plateformes OS/2 ou Windows Si vous tapez votre commande linvite du systme dexploitation, utilisez la syntaxe suivante : db2sampl e o e est un paramtre facultatif qui prcise lunit sur laquelle crer la base de donnes. Appuyez sur Entre.4 Si vous ntes pas connect votre poste de travail par Gestion des profils utilisateur, un message vous invite le faire.

2. Pour plus de dtails sur la commande DB2SAMPL, consultez le manuel Command Reference. 3. Si le paramtre PATH nest pas indiqu, la base de donnes SAMPLE est cre lemplacement indiqu par le paramtre DFTDBPATH (chemin daccs par dfaut) dans le fichier de configuration du gestionnaire de bases de donnes. 4. Si le paramtre dunit nest pas prcis, la base de donnes SAMPLE est cre sur la mme unit que DB2.

78

Initiation SQL

Tables de la base de donnes SAMPLE Effacement de la base de donnes SAMPLE


Si vous nutilisez pas la base de donnes SAMPLE, il vous est possible de leffacer par la commande DROP DATABASE : db2 drop database sample

Table CL_SCHED
Nom : Type : Desc : CLASS_CODE char(7) Code classe (salle:enseignant) DAY smallint Jour # du planning sur 4 jours STARTING time Heure dbut cours ENDING time Heure fin cours

Table DEPARTMENT
Nom : Type : Desc : DEPTNO DEPTNAME MGRNO char(6) Matricule (EMPNO) du directeur de service 000010 000020 000030 ADMRDEPT LOCATION char(3) not null varchar(29) not null Numro du service Description gnrale des activits du service char(3) not null char(16) Service (DEPTNO) dont ce service dpend A00 A00 A00 A00 D01 D01 A00 E01 E01 Nom de la ville

Valeurs :

A00 B01 C01 D01 D11 D21 E01 E11 E21

SPIFFY COMPUTER SERVICE DIV. PLANNING INFORMATION CENTER DEVELOPMENT CENTER

MANUFACTURING SYSTEMS 000060 ADMINISTRATION SYSTEMS SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT 000070 000050 000090 000100

Annexe A. Tables de la base de donnes SAMPLE

79

Tables de la base de donnes SAMPLE Table EMPLOYEE


Noms : Type : Desc : EMPNO char(6) not null Matricule de lemploy FIRSTNME varchar(12) not null Premier prnom MIDINIT char(1) not null Initiale du deuxime prnom LASTNAME WORKDEPT PHONENO varchar(15) not null Nom char(3) Service (DEPTNO) dans lequel travaille lemploy char(4) Numro de tlphone HIREDATE date Date dembauche

JOB char(8) Poste

EDLEVEL smallint not null Nombre dannes dtudes

SEX char(1) Sexe (M masculin, F fminin)

BIRTHDATE date Date de naissance

SALARY dec(9,2) Salaire annuel

BONUS dec(9,2) Prime annuelle

COMM dec(9,2) Commission annuelle

La page suivante prsente les diffrentes valeurs de la table EMPLOYEE.

80

Initiation SQL

FIRSTNME SALARY BONUS COMM date 1933-08-24 1948-02-02 1941-05-11 1952-09-15 1945-07-07 1953-05-26 1941-05-15 1956-12-18 1929-11-05 1942-10-18 1952-09-15 1946-01-19 M F 16 17 16 16 DESIGNER DESIGNER CLERK CLERK CLERK 1975-09-11 1980-09-30 8997 4502 2095 E11 E21 3332 9990 1967-03-24 1980-05-30 1972-06-19 1964-09-12 1965-07-07 CLERK CLERK OPERATOR OPERATOR OPERATOR OPERATOR FIELDREP 17 18 14 17 15 16 15 17 12 14 12 16 M F M M M F M M M F F F M M F M 1947-05-17 1955-04-12 1951-01-05 1949-02-21 1952-06-25 1941-05-29 1953-02-23 1948-03-19 1935-05-30 1954-03-31 1939-11-12 1936-10-05 1953-05-26 1936-03-28 1946-07-09 1936-10-27 1931-04-21 1932-08-11 52750,00 1000,00 41250,00 800,00 38250,00 800,00 40175,00 800,00 32250,00 500,00 36170,00 700,00 29750,00 600,00 26150,00 500,00 46500,00 900,00 29250,00 600,00 23800,00 500,00 28420,00 600,00 25280,00 500,00 22250,00 400,00 24680,00 500,00 21340,00 500,00 20450,00 400,00 27740,00 600,00 18270,00 400,00 29840,00 600,00 22180,00 400,00 28760,00 600,00 19180,00 400,00 17250,00 300 27380,00 500,00 26250,00 500,00 15340,00 300 17750,00 400,00 15900,00 300 19950,00 400,00 dec(9,2) dec(9,2) dec(9,2) 4220,00 3300,00 3060,00 3214,00 2580,00 2893,00 2380,00 2092,00 3720,00 2340,00 1904,00 2274,00 2022,00 1780,00 1974 1707,00 1636,00 2217,00 1462,00 2387,00 1774,00 2301,00 1534,00 1380,00 2190,00 2100,00 1227,00 1420,00 1272,00 1596,00 char(3) A00 B01 C01 E01 D11 D21 E11 E21 A00 A00 C01 C01 D11 D11 D11 D11 D11 D11 D11 D11 D21 D21 D21 D21 D21 E11 E11 E11 9001 8953 0961 3780 2094 1966-11-21 1979-12-05 1969-10-30 0672 1968-08-29 0942 1979-04-11 4501 1966-03-03 2986 1974-07-26 1682 1973-07-07 DESIGNER DESIGNER DESIGNER 2890 1978-09-15 DESIGNER 3782 1977-10-11 DESIGNER 17 4510 1972-02-12 DESIGNER 16 1793 1976-12-15 ANALYST 18 F 4578 1971-07-28 ANALYST 16 F 2167 1963-12-05 CLERK 14 M 3490 1958-05-16 SALESREP 19 M 0972 1980-06-19 MANAGER 14 M 5498 1970-08-15 MANAGER 16 F 7831 1980-09-30 MANAGER 16 F 6423 1973-09-14 MANAGER 16 M 6789 1949-08-17 MANAGER 16 M 4738 1975-04-05 MANAGER 20 F 3476 1973-10-10 MANAGER 18 M 3978 1965-01-01 PRES 18 F char(4) date char(8) smallint char(1) not null

LASTNAME

HIREDATE

JOB

SEX

BIRTHDATE

EMPNO

MID INIT

WORK DEPT

PHONE NO

ED LEVEL

char(6) varchar(12) not not null null HAAS THOMPSON KWAN GEYER STERN PULASKI HENDERSON SPENSER LUCCHESSI OCONNELL QUINTANA NICHOLLS ADAMSON PIANKA YOSHIMURA SCOUTTEN WALKER BROWN JONES LUTZ JEFFERSON MARINO SMITH JOHNSON PEREZ SCHNEIDER PARKER SMITH SETRIGHT MEHTA

char(1) varchar(15) not not null null

000010

CHRISTINE

000020

MICHAEL

000030

SALLY

000050

JOHN

000060

IRVING

000070

EVA

000090

EILEEN

000100

THEODORE

000110

VINCENZO

000120

SEAN

000130

DOLORES

000140

HEATHER

000150

BRUCE

000160

ELIZABETH

000170

MASATOSHI

000180

MARILYN

000190

JAMES

000200

DAVID

000210

WILLIAM

000220

JENNIFER

000230

JAMES

000240

SALVATORE

000250

DANIEL

000260

SYBIL

000270

MARIA

000280

ETHEL

000290

JOHN

Tables de la base de donnes SAMPLE

Annexe A. Tables de la base de donnes SAMPLE

000300

PHILIP

000310

MAUDE

000320

RAMLAL

81

82
LASTNAME SALARY BONUS COMM M M 1926-05-17 23840,00 500,00 1941-07-18 25370,00 500,00 2030,00 1907,00 LEE GOUNOT E21 5698 1947-05-05 FIELDREP 16 E21 2103 1976-02-23 FIELDREP 14 HIREDATE JOB SEX BIRTHDATE WORK DEPT PHONE NO ED LEVEL

FIRSTNME

EMPNO

MID INIT

000330

WING

Tables de la base de donnes SAMPLE

Initiation SQL

000340

JASON

Tables de la base de donnes SAMPLE Table EMP_ACT


Nom : Type : Desc : EMPNO PROJNO ACTNO EMPTIME EMSTDATE dec(5,2) date Temps Date de dbut consacr par de lactivit lemploy travailler sur le projet 0,50 1982-01-01 1,00 1982-01-01 1,00 1982-01-01 0,50 1982-03-15 0,50 1982-03-15 0,50 1982-04-15 1,00 1982-10-15 1,00 1982-02-15 1,00 1982-09-15 1,00 1982-01-01 0,50 1982-02-01 0,50 1982-12-01 1,00 1983-01-01 0,50 1982-02-01 1,00 1982-03-15 0,25 1982-08-15 0,25 1982-08-15 0,50 1982-10-15 0,50 1982-08-15 0,50 1982-06-15 1,00 1982-07-01 1,00 1982-01-01 0,50 1982-03-01 0,50 1982-03-01 1,00 1982-04-15 0,50 1982-06-01 0,50 1982-03-01 1,00 1982-04-01 0,25 1982-09-01 0,75 1982-09-01 EMENDATE date Date de fin de lactivit char(6) not null char(6) not null smallint not null Matricule de lemploy Numro du projet Numro de lactivit

Valeurs :

000010 000070 000230 000230 000230 000230 000230 000240 000240 000250 000250 000250 000250 000250 000250 000250 000250 000250 000250 000260 000260 000260 000260 000260 000260 000260 000270 000270 000270 000270

AD3100 AD3110 AD3111 AD3111 AD3111 AD3111 AD3111 AD3111 AD3111 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113

10 10 60 60 70 80 180 70 80 60 60 60 60 70 70 70 80 80 180 70 70 80 80 180 180 180 60 60 60 70

1982-07-01 1983-02-01 1982-03-15 1982-04-15 1982-10-15 1982-10-15 1983-01-01 1982-09-15 1983-01-01 1982-02-01 1982-03-15 1983-01-01 1983-02-01 1982-03-15 1982-08-15 1982-10-15 1982-10-15 1982-12-01 1983-01-01 1982-07-01 1983-02-01 1982-03-01 1982-04-15 1982-04-15 1982-06-01 1982-07-01 1982-04-01 1982-09-01 1982-10-15 1982-10-15

Annexe A. Tables de la base de donnes SAMPLE

83

Tables de la base de donnes SAMPLE


Nom : EMPNO 000270 000270 000270 000030 000130 000130 000140 000030 000140 000140 000140 000140 000010 000110 000010 000200 000200 000220 000150 000150 000170 000170 000190 000190 000160 000170 000180 000210 000210 000050 000090 000280 000290 000300 000310 000050 000100 PROJNO AD3113 AD3113 AD3113 IF1000 IF1000 IF1000 IF1000 IF2000 IF2000 IF2000 IF2000 IF2000 MA2100 MA2100 MA2110 MA2111 MA2111 MA2111 MA2112 MA2112 MA2112 MA2112 MA2112 MA2112 MA2113 MA2113 MA2113 MA2113 MA2113 OP1000 OP1010 OP1010 OP1010 OP1010 OP1010 OP2010 OP2010 ACTNO 70 80 80 10 90 100 90 10 100 100 110 110 10 20 10 50 60 40 60 180 60 70 70 80 60 80 70 80 180 10 10 130 130 130 130 10 10 EMPTIME EMSTDATE 1,00 1982-10-15 1,00 1982-01-01 0,50 1982-03-01 0,50 1982-06-01 1,00 1982-01-01 0,50 1982-10-01 0,50 1982-10-01 0,50 1982-01-01 1,00 1982-01-01 0,50 1982-03-01 0,50 1982-03-01 0,50 1982-10-01 0,50 1982-01-01 1,00 1982-01-01 1,00 1982-01-01 1,00 1982-01-01 1,00 1982-06-15 1,00 1982-01-01 1,00 1982-01-01 1,00 1982-07-15 1,00 1982-01-01 1,00 1982-06-01 1,00 1982-02-01 1,00 1982-10-01 1,00 1982-07-15 1,00 1982-01-01 1,00 1982-04-01 0,50 1982-10-01 0,50 1982-10-01 0,25 1982-01-01 1,00 1982-01-01 1,00 1982-01-01 1,00 1982-01-01 1,00 1982-01-01 1,00 1982-01-01 0,75 1982-01-01 1,00 1982-01-01 EMENDATE 1983-02-01 1982-03-01 1982-04-01 1983-01-01 1982-10-01 1983-01-01 1983-01-01 1983-01-01 1982-03-01 1982-07-01 1982-07-01 1983-01-01 1982-11-01 1982-03-01 1983-02-01 1982-06-15 1983-02-01 1983-02-01 1982-07-15 1983-02-01 1983-06-01 1983-02-01 1982-10-01 1983-10-01 1983-02-01 1983-02-01 1982-06-15 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01

84

Initiation SQL

Tables de la base de donnes SAMPLE


Nom : EMPNO 000320 000320 000330 000330 000340 000340 000020 PROJNO OP2011 OP2011 OP2012 OP2012 OP2013 OP2013 PL2100 ACTNO 140 150 140 160 140 170 30 EMPTIME EMSTDATE 0,75 1982-01-01 0,25 1982-01-01 0,25 1982-01-01 0,75 1982-01-01 0,50 1982-01-01 0,50 1982-01-01 1,00 1982-01-01 EMENDATE 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1982-09-15

Table EMP_PHOTO
Nom : Type : Desc : Valeurs : EMPNO char(6) not null Matricule de lemploy 000130 000130 000130 000140 000140 000140 000150 000150 000150 000190 000190 000190 PHOTO_FORMAT varchar(10) not null Format de la photo bitmap gif xwd bitmap gif xwd bitmap gif xwd bitmap gif xwd PICTURE blob(100k) Photo de lemploy db200130.bmp db200130.gif db200130.xwd db200140.bmp db200140.gif db200140.xwd db200150.bmp db200150.gif db200150.xwd db200190.bmp db200190.gif db200190.xwd

v La Photo de Dolores Quintana la page 92, reprsente lemploye Dolores Quintana. v La Photo dHeather A. Nicholls la page 93, reprsente lemploye Heather Nicholls. v La Photo de Bruce Adamson la page 95, reprsente lemploy Bruce Adamson. v La Photo de James H. Walker la page 96, reprsente lemploy James Walker.

Table EMP_RESUME
Nom : Type : Desc : EMPNO char(6) not null Matricule de lemploy RESUME_FORMAT varchar(10) not null Format de la fiche RESUME clob(5k) Fiche de lemploy

Annexe A. Tables de la base de donnes SAMPLE

85

Tables de la base de donnes SAMPLE


Nom : Valeurs : EMPNO 000130 000130 000140 000140 000150 000150 000190 000190 RESUME_FORMAT ascii script ascii script ascii script ascii script RESUME db200130.asc db200130.scr db200140.asc db200140.scr db200150.asc db200150.scr db200190.asc db200190.scr

v La Fiche descriptive de Dolores Quintana la page 92, concerne lemploye Dolores Quintana. v La Fiche descriptive dHeather A. Nicholls la page 93, concerne lemploye Heather Nicholls. v La Fiche descriptive de Bruce Adamson la page 95, concernce lemploy Bruce Adamson. v La Fiche descriptive de James H. Walker la page 96, concerne lemploy James Walker.

Table IN_TRAY
Nom : Type : Desc : RECEIVED timestamp Date et heure de rception SOURCE char(8) ID de lexpditeur de la note SUBJECT char(64) Commentaire NOTE_TEXT varchar(3000) Note

Table ORG
Nom : Type : Desc : Valeurs : DEPTNUMB smallint not null Numro du service 10 15 20 38 42 51 66 84 DEPTNAME varchar(14) Nom du service Sige New England Mid Atlantic South Atlantic Great Lakes Plains Pacific Mountain MANAGER smallint Matricule du directeur 160 50 10 30 100 140 270 290 DIVISION varchar(10) Rgion o se trouve la socit Corporate Eastern Eastern Eastern Midwest Midwest Western Western LOCATION varchar(13) Ville New York Boston Washington Atlanta Chicago Dallas San Francisco Denver

86

Initiation SQL

Tables de la base de donnes SAMPLE Table PROJECT


Nom : Type : Desc : PROJNO char(6) not null Numro du projet PROJNAME varchar(24) not null Nom du projet DEPTNO char(3) not null Responsable du service RESPEMP char(6) not null Responsable ressources humaines 000010 000070 PRSTAFF dec(5,2) Effectif moyen estim 6.5 6 PRSTDATE date Date de dbut estime 1982-01-01 1982-01-01 PRENDATE date Date de fin estime MAJPROJ char(6) Projet principal, sil sagit dun sous-projet AD3100

Valeurs :

AD3100 AD3110

ADMIN SERVICES GENERAL ADMIN SYSTEMS

D01 D21

1983-02-01 1983-02-01

AD3111 AD3112 AD3113 IF1000 IF2000 MA2100 MA2110 MA2111

PAYROLL D21 PROGRAMMING PERSONNEL D21 PROGRAMMING ACCOUNT D21 PROGRAMMING QUERY SERVICES C01

000230 000250 000270 000030 000030 000010 000060 000220

2 1 2 2 1 12 9 2

1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01

1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1982-12-01

AD3110 AD3110 AD3110 MA2100 MA2110

USER C01 EDUCATION WELD LINE D01 AUTOMATION WL D11 PROGRAMMING WL PROGRAM DESIGN W L ROBOT DESIGN W L PROD CONT PROGS D11

MA2112 MA2113

D11 D11

000150 000160

3 3

1982-01-01 1982-02-15

1982-12-01 1982-12-01

MA2110 MA2110

OP1000 OP1010 OP2000

OPERATION E01 SUPPORT OPERATION E11 GEN SYSTEMS SERVICES SYSTEMS SUPPORT SCP SYSTEMS SUPPORT E01

000050 000090 000050

6 5 5

1982-01-01 1982-01-01 1982-01-01

1983-02-01 1983-02-01 1983-02-01

OP1000 -

OP2010 OP2011

E21 E21

000100 000320

4 1

1982-01-01 1982-01-01

1983-02-01 1983-02-01

OP2000 OP2010

OP2012 OP2013

APPLICATIONS E21 SUPPORT DB/DC SUPPORT E21

000330 000340

1 1

1982-01-01 1982-01-01

1983-02-01 1983-02-01

OP2010 OP2010

Annexe A. Tables de la base de donnes SAMPLE

87

Tables de la base de donnes SAMPLE


Nom : PROJNO PL2100 PROJNAME WELD LINE PLANNING DEPTNO B01 RESPEMP 000020 PRSTAFF 1 PRSTDATE 1982-01-01 PRENDATE 1982-09-15 MAJPROJ MA2100

Table SALES
Nom : Type : Desc : Valeurs : SALES_DATE date Date de la vente 1995-12-31 1995-12-31 1995-12-31 1995-12-31 1995-12-31 1996-03-29 1996-03-29 1996-03-29 1996-03-29 1996-03-29 1996-03-29 1996-03-29 1996-03-29 1996-03-29 1996-03-30 1996-03-30 1996-03-30 1996-03-30 1996-03-30 1996-03-30 1996-03-30 1996-03-30 1996-03-30 1996-03-30 1996-03-31 1996-03-31 1996-03-31 1996-03-31 1996-03-31 1996-03-31 1996-03-31 1996-04-01 1996-04-01 1996-04-01 SALES_PERSON varchar(15) Nom de lemploy LUCCHESSI LEE LEE LEE GOUNOT LUCCHESSI LUCCHESSI LEE LEE LEE LEE GOUNOT GOUNOT GOUNOT LUCCHESSI LUCCHESSI LUCCHESSI LEE LEE LEE LEE GOUNOT GOUNOT GOUNOT LUCCHESSI LEE LEE LEE LEE GOUNOT GOUNOT LUCCHESSI LUCCHESSI LEE REGION varchar(15) Rgion de la vente Ontario-South Ontario-South Quebec Manitoba Quebec Ontario-South Quebec Ontario-South Ontario-North Quebec Manitoba Ontario-South Quebec Manitoba Ontario-South Quebec Manitoba Ontario-South Ontario-North Quebec Manitoba Ontario-South Quebec Manitoba Manitoba Ontario-South Ontario-North Quebec Manitoba Ontario-South Quebec Ontario-South Manitoba Ontario-South SALES int Nombre de ventes 1 3 1 2 1 3 1 2 2 3 5 3 1 7 1 2 1 7 3 7 4 2 18 1 1 14 3 7 3 2 1 3 1 8

88

Initiation SQL

Tables de la base de donnes SAMPLE


Nom : SALES_DATE 1996-04-01 1996-04-01 1996-04-01 1996-04-01 1996-04-01 1996-04-01 1996-04-01 SALES_PERSON LEE LEE LEE GOUNOT GOUNOT GOUNOT GOUNOT REGION Ontario-North Quebec Manitoba Ontario-South Ontario-North Quebec Manitoba SALES 8 9 3 1 3 7

Table STAFF
Nom : Type : Desc : Valeurs : ID smallint not null Matricule de lemploy 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 NAME varchar(9) Nom de lemploy Sanders Pernal Marenghi OBrien Hanes Quigley Rothman James Koonitz Plotz Ngan Naughton Yamaguchi Fraye Williams Molinare Kermisch Abrahams Sneider Scoutten Lu Smith Lundquist Daniels DEPT smallint Numro du service 20 20 38 38 15 38 15 20 42 42 15 38 42 51 51 10 15 38 20 42 10 51 51 10 JOB char(5) Poste Mgr Sales Mgr Sales Mgr Sales Sales Clerk Sales Mgr Clerk Clerk Clerk Mgr Sales Mgr Clerk Clerk Clerk Clerk Mgr Sales Clerk Mgr YEARS smallint Annes de prsence 7 8 5 6 10 7 6 7 5 6 6 6 7 4 3 8 10 7 3 5 SALARY dec(7,2) Salaire actuel 18357,50 18171,25 17506,75 18006,00 20659,80 16808,30 16502,83 13504,60 18001,75 18352,80 12508,20 12954,75 10505,90 21150,00 19456,50 22959,20 12258,50 12009,75 14252,75 11508,60 20010,00 17654,50 13369,80 19260,25 COMM dec(7,2) Commission 612,45 846,55 650,25 1152,00 128,20 1386,70 206,60 180,00 75,60 637,65 110,10 236,50 126,50 84,20 992,80 189,65 -

Annexe A. Tables de la base de donnes SAMPLE

89

Tables de la base de donnes SAMPLE


Nom : ID 250 260 270 280 290 300 310 320 330 340 350 NAME Wheeler Jones Lea Wilson Quill Davis Graham Gonzales Burke Edwards Gafney DEPT 51 10 66 66 84 84 66 66 66 84 84 JOB Clerk Mgr Mgr Sales Mgr Sales Sales Sales Clerk Sales Clerk YEARS 6 12 9 9 10 5 13 4 1 7 5 SALARY 14460,00 21234,00 18555,50 18674,50 19818,00 15454,50 21000,00 16858,20 10988,00 17844,00 13030,50 COMM 513,30 811,50 806,10 200,30 844,00 55,50 1285,00 188,00

Table STAFFG
Remarque : La table STAFFG ne concerne que les pages de codes double octet.
Nom : Type : Desc : Valeurs : ID smallint not null Matricule de lemploy 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 NAME DEPT JOB graphic(5) Poste Mgr Sales Mgr Sales Mgr Sales Sales Clerk Sales Mgr Clerk Clerk Clerk Mgr Sales Mgr Clerk YEARS smallint Annes de prsence 7 8 5 6 10 7 6 7 5 6 6 6 7 4 SALARY dec(9,0) Salaire actuel 18357,50 18171,25 17506,75 18006,00 20659,80 16808,30 16502,83 13504,60 18001,75 18352,80 12508,20 12954,75 10505,90 21150,00 19456,50 22959,20 12258,50 COMM dec(9,0) Commission 612,45 846,55 650,25 1152,00 128,20 1386,70 206,60 180,00 75,60 637,65 110,10

vargraphic(9) smallint Nom de lemploy Sanders Pernal Marenghi OBrien Hanes Quigley Rothman James Koonitz Plotz Ngan Naughton Yamaguchi Fraye Williams Molinare Kermisch Numro du service 20 20 38 38 15 38 15 20 42 42 15 38 42 51 51 10 15

90

Initiation SQL

Tables de la base de donnes SAMPLE


Nom : ID 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 NAME Abrahams Sneider Scoutten Lu Smith Lundquist Daniels Wheeler Jones Lea Wilson Quill Davis Graham Gonzales Burke Edwards Gafney DEPT 38 20 42 10 51 51 10 51 10 66 66 84 84 66 66 66 84 84 JOB Clerk Clerk Clerk Mgr Sales Clerk Mgr Clerk Mgr Mgr Sales Mgr Sales Sales Sales Clerk Sales Clerk YEARS 3 8 10 7 3 5 6 12 9 9 10 5 13 4 1 7 5 SALARY 12009,75 14252,75 11508,60 20010,00 17654,50 13369,80 19260,25 14460,00 21234,00 18555,50 18674,50 19818,00 15454,50 21000,00 16858,20 10988,00 17844,00 13030,50 COMM 236,50 126,50 84,20 992,80 189,65 513,30 811,50 806,10 200,30 844,00 55,50 1285,00 188,00

Annexe A. Tables de la base de donnes SAMPLE

91

Tables de la base de donnes SAMPLE Modles de fichiers utilisant les types dobjet BLOB et CLOB
Vous trouverez dans cette section les donnes contenues dans les fichiers de EMP_PHOTO (photographies des employs) et de EMP_RESUME (fiches des employs).

Photo de Dolores Quintana

Figure 7. Dolores M. Quintana

Fiche descriptive de Dolores Quintana


Le texte suivant se trouve dans les fichiers db200130.asc et db200130.scr. Fiche descriptive : Dolores M. Quintana

Personal Information Address: Phone: Birthdate: Sex: Marital Status: Height: Weight: Department Information Employee Number: Dept Number: Manager: Position: Phone: Hire Date: Education 1965

1150 Eglinton Ave Mellonville, Idaho 83725 (208) 555-9933 September 15, 1952 Female Married 52 120 lbs.

000130 C01 Sally Kwan Analyst (208) 555-4578 1971-07-28

Math and English, B.A. Adelphi University

92

Initiation SQL

Tables de la base de donnes SAMPLE


1960 Dental Technician Florida Institute of Technology

Work History 10/91 - present Advisory Systems Analyst Producing documentation tools for engineering department. Technical Writer Writer, text programmer, and planner. COBOL Payroll Programmer Writing payroll programs for a diesel fuel company.

12/85 - 9/91 1/79 - 11/85

Interests v Cooking v Reading v Sewing v Remodeling

Photo dHeather A. Nicholls

Figure 8. Heather A. Nicholls

Fiche descriptive dHeather A. Nicholls


Le texte suivant se trouve dans les fichiers db200140.asc et db200140.scr. Resume: Heather A. Nicholls

Personal Information Address: Phone: Birthdate:

844 Don Mills Ave Mellonville, Idaho 83734 (208) 555-2310 January 19, 1946
Annexe A. Tables de la base de donnes SAMPLE

93

Tables de la base de donnes SAMPLE


Sex: Marital Status: Height: Weight: Department Information Employee Number: Dept Number: Manager: Position: Phone: Hire Date: Education 1972 1969 Work History 2/83 - present 12/76 - 1/83 9/72 - 11/76 Architect, OCR Development Designing the architecture of OCR products. Text Programmer Optical character recognition (OCR) programming in PL/I. Punch Card Quality Analyst Checking punch cards met quality specifications. Computer Engineering, Ph.D. University of Washington Music and Physics, M.A. Vassar College Female Single 58 130 lbs.

000140 C01 Sally Kwan Analyst (208) 555-1793 1976-12-15

Interests v Model railroading v Interior decorating v Embroidery v Knitting

94

Initiation SQL

Tables de la base de donnes SAMPLE Photo de Bruce Adamson

Figure 9. Bruce Adamson

Fiche descriptive de Bruce Adamson


Le texte suivant se trouve dans les fichiers db200150.asc et db200150.scr. Resume: Bruce Adamson

Personal Information Address: Phone: Birthdate: Sex: Marital Status: Height: Weight: Department Information Employee Number: Dept Number: Manager: Position: Phone: Hire Date: Education 1971 1968

3600 Steeles Ave Mellonville, Idaho 83757 (208) 555-4489 May 17, 1947 Male Married 60 175 lbs.

000150 D11 Irving Stern Designer (208) 555-4510 1972-02-12

Environmental Engineering, M.Sc. Johns Hopkins University American History, B.A. Northwestern University
Annexe A. Tables de la base de donnes SAMPLE

95

Tables de la base de donnes SAMPLE


Work History 8/79 - present 2/72 - 7/79 9/71 - 1/72 Neural Network Design Developing neural networks for machine intelligence products. Robot Vision Development Developing rule-based systems to emulate sight. Numerical Integration Specialist Helping bank systems communicate with each other.

Interests v Racing motorcycles v Building loudspeakers v Assembling personal computers v Sketching

Photo de James H. Walker

Figure 10. James H. Walker

Fiche descriptive de James H. Walker


Le texte suivant se trouve dans les fichiers db200190.asc et db200190.scr. Resume: James H. Walker

Personal Information Address: Phone: Birthdate: Sex: Marital Status: Height: Weight:

3500 Steeles Ave Mellonville, Idaho 83757 (208) 555-7325 June 25, 1952 Male Single 511 166 lbs.

96

Initiation SQL

Tables de la base de donnes SAMPLE


Department Information Employee Number: Dept Number: Manager: Position: Phone: Hire Date: Education 1974 1972 Computer Studies, B.Sc. University of Massachusetts Linguistic Anthropology, B.A. University of Toronto 000190 D11 Irving Stern Designer (208) 555-2986 1974-07-26

Work History 6/87 - present 4/77 - 5/87 9/74 - 3/77 Microcode Design Optimizing algorithms for mathematical functions. Printer Technical Support Installing and supporting laser printers. Maintenance Programming Patching assembly language compiler for mainframes.

Interests v Wine tasting v Skiing v Swimming v Dancing

Annexe A. Tables de la base de donnes SAMPLE

97

Tables de la base de donnes SAMPLE

98

Initiation SQL

Annexe B. Utilisation de la Bibliothque DB2


La bibliothque DB2 Universal Database est constitue de rubriques daide en ligne, de manuels au format HTML et PDF, et de programmes exemples au format HTML. La prsente annexe dcrit les informations disponibles et indique comment y accder. Le Centre daide et dinformation vous aide accder aux informations en ligne relatives au produit. Pour plus de dtails, reportez-vous Recherche dinformations laide du Centre daide et dinformation la page 117. Vous pouvez consulter des manuels DB2, afficher des informations sur les tches et sur la rsolution des incidents, visualiser des programmes exemples et avoir accs aux informations DB2 disponibles sur le Web.

Manuels imprims et fichiers au format PDF DB2 Informations sur DB2


Le tableau suivant rpartit les manuels db2 comme suit : Manuels dutilisation et de rfrence de DB2 Ces manuels contiennent les informations communes relatives lutilisation de DB2 sur toutes les plateformes. Manuels dinstallation et de configuration de DB2 Ces manuels concernent lutilisation de DB2 sur une plateforme spcifique. Par exemple, il existe des manuels Mise en route distincts pour DB2 sur des plateformes OS/2, Windows et UNIX. Exemples de programmes multiplateformes au format HTML Ces exemples de programmes au format HTML sont installs avec le composant Application Development Client. Ils nont quune vocation informative et ne remplacent pas les programmes rels. Documents Release Notes Ces fichiers contiennent les informations de dernire minute nayant pas pu tre intgres dans les manuels DB2. Les manuels dinstallation, les remarques sur le produit et les tutoriels sont directement consultables en format HTML partir du CD-ROM produit. La plupart des manuels existent au format HTML des fins de consultation et au format Adobe Acrobat (PDF) sur le CD-ROM DB2 Universal Database publications pour consultation et impression. Pour commander une copie

Copyright IBM Corp. 1993, 2000

99

papier des manuels, reportez-vous Commande des manuels imprims la page 112 . Le tableau ci-aprs fournit la liste des manuels pouvant faire lobjet dune commande. Sur les plateformes OS/2 et Windows, vous pouvez installer les fichiers HTML dans le rpertoire sqllib\doc\html. Les informations sur DB2 sont traduites en diffrentes langues mais pas ncessairement dans leur totalit. Lorsque des informations nexistent pas dans une langue dtermine, elles sont fournies en anglais. Sur les plateformes UNIX, vous pouvez installer des versions multilingues des fichiers HTML dans les sous-rpertoires doc/%L/html, %L reprsentant lenvironnement local. Pour plus de dtails, reportez-vous au manuel Mise en route appropri. Vous pouvez vous procurer des manuels DB2 et accder aux informations de diffrentes manires : v Affichage des informations en ligne la page 116 v Recherche dinformations en ligne la page 120 v Commande des manuels imprims la page 112 v Impression des manuels au format PDF la page 112

100

Initiation SQL

Tableau 1. Informations sur DB2 Nom Description Rfrences Nom de fichier PDF Manuels dutilisation et de rfrence de DB2 Administration Guide Administration Guide: Planning prsente les concepts mis en oeuvre dans les bases de donnes, fournit des informations sur les enjeux lis la conception (conception logique et physique de base de donnes) et traite des fonctions de haute disponibilit. Administration Guide: Implementation fournit des informations sur la mise en oeuvre de votre structure, de laccs aux bases de donnes, du contrle, de la sauvegarde et de la reprise, entre autres. Administration Guide: Performance fournit des informations sur lenvironnement de base de donnes, ainsi que sur lvaluation et ladaptation des performances. Les trois volumes du manuel Administration Guide en anglais peuvent tre commands sous la rfrence SBOF-8922. Administrative API Reference SC09-2947 Dcrit les API et les structures de donnes DB2 utilises pour grer des db2b0x70 bases de donnes. Explique comment appeler les API partir des applications. SC09-2948 Fournit des informations relatives la configuration de lenvironnement et prsente, tape par tape, les instructions db2axx70 ncessaires la compilation, la dfinition des accs et lexcution dapplications DB2 sur les plateformes Windows, OS/2 et UNIX. db2b0 SC09-2946 db2d1x70 db2d0 Rpertoire HTML

SC09-2944 db2d2x70

SC09-2945 db2d3x70

Application Building Guide

db2ax

Annexe B. Utilisation de la Bibliothque DB2

101

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF APPC, CPI-C, and SNA Sense Codes Fournit des informations gnrales relatives aux codes de dtection APPC, CPI-C et SNA pouvant tre rencontrs lors de lutilisation des produits DB2 Universal Database. Ce manuel est disponible au format HTML uniquement. Application Development Guide SC09-2949 Fournit des informations relatives au dveloppement dapplications accdant db2a0x70 des bases de donnes DB2 laide dinstructions SQL imbriques ou Java (JDBC et SQLJ). Ce manuel traite, entre autres, de lcriture de procdures mmorises et de fonctions UDF, de la cration de types UDT, de lutilisation des dclencheurs et du dveloppement dapplications dans des environnements partitionns ou avec des systmes fdrs. Dcrit comment dvelopper des applications permettant daccder des bases de donnes DB2 laide de linterface DB2 CLI (interface SQL dappel compatible avec le systme ODBC de Microsoft). SC09-2950 db2l0x70 db2a0 Aucun numro de rfrence db2apx70 db2ap Rpertoire HTML

CLI Guide and Reference

db2l0

Command Reference

Explique comment utiliser linterprteur SC09-2951 de commandes et fournit une description des commandes de gestion des bases de db2n0x70 donnes.

db2n0

102

Initiation SQL

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF DB2 Connectivit Informations complmentaires Fournit des informations de rfrence et Aucun numro de configuration utiles toute personne de rfrence souhaitant utiliser DB2 pour AS/400, db2h1x70 DB2 pour OS/390, DB2 pour MVS ou DB2 pour VM en tant que demandeurs dapplication DRDA avec les serveurs DB2 Universal Database et aux personnes souhaitant utiliser les serveurs dapplications DRDA avec les demandeurs dapplication DB2 Connect. Ce manuel dtaille galement lutilisation de serveurs dapplications DRDA avec les demandeurs dapplication DB2 Connect. Ce manuel est disponible au format HTML ou PDF uniquement. Data Movement Utilities Guide and Reference Explique comment utiliser les utilitaires SC09-2955 DB2 UDB qui simplifient le dplacement db2dmx70 des donnes, tels que import, export, load, AutoLoader et DPROP. Fournit des informations sur la cration et la gestion dun entrept de donnes au moyen de Data Warehouse Center. SC26-9993 db2ddx70 db2ad db2dm db2h1 Rpertoire HTML

Data Warehouse Center Administration Guide Data Warehouse Center Application Integration Guide

db2dd

Fournit des informations permettant aux SC26-9994 programmeurs dintgrer des applications via Data Warehouse Center db2adx70 et via Information Catalog Manager. SC09-2954 db2c0x70

DB2 Connect Users Guide Prsente les concepts, ainsi que des informations gnrales et de programmation sur les produits DB2 Connect. DB2 Query Patroller Administration Guide

db2c0

SC09-2958 Fournit des indications gnrales sur le fonctionnement du systme DB2 Query Patroller, des informations fonctionnelles db2dwx70 et administratives spcifiques ainsi que des informations sur les utilitaires graphiques dadministration. Dcrit lutilisation des outils et des fonctions de DB2 Query Patroller. SC09-2960 db2wwx70

db2dw

DB2 Query Patroller Users Guide

db2ww

Annexe B. Utilisation de la Bibliothque DB2

103

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF Glossaire Fournit des dfinitions de termes utiliss Aucun numro dans DB2 et ses composants. de rfrence Ce glossaire est disponible au format HTML et dans le manuel SQL Reference. Extensions Image, Audio et Fournit des informations gnrales sur Vido - Administration et les extensions DB2, ainsi que des programmation informations sur ladministration et la configuration des extensions Image, Audio et Vido et la programmation via ces extensions. Il comporte des informations de rfrence, de diagnostic (avec des messages) et des exemples. Information Catalog Manager Administration Guide Information Catalog Manager Programming Guide and Reference Information Catalog Manager - Guide de lutilisateur Installation et configuration Informations complmentaires Fournit des directives sur la gestion des catalogues dinformations. Fournit des dfinitions relatives aux interfaces structures pour Information Catalog Manager. Fournit des informations sur la mise en oeuvre de linterface utilisateur dInformation Catalog Manager. db2t0x70 SC11-1682 dmbu7x70 dmbu7 db2t0 Rpertoire HTML

SC26-9995 db2dix70 SC26-9997 db2bix70 SC11-1678 db2aix70

db2di

db2bi

db2ai

Aide la planification, linstallation et la GC11-1641 configuration de clients DB2 en fonction de la plateforme utilise. Ce supplment db2iyx70 contient des informations sur la dfinition des accs et la configuration des communications client et serveur, linterface graphique DB2 GUI, DRDA AS, linstallation rpartie et prsente galement la configuration de requtes rparties et de mthodes daccs aux sources de donnes htrognes.

db2iy

104

Initiation SQL

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF Guide des messages Contient une liste des messages et des codes renvoys par DB2, Information Catalog Manager et Data Warehouse Center, et dcrit les oprations correctives effectuer, le cas chant. Volume 1 GC11-1653 db2m1x70 Volume 2 GC11-1654 db2m0 Rpertoire HTML

Les deux volumes du manuel Guide des db2m2x70 messages en anglais peuvent tre commands sous la rfrence SBOF-8922. OLAP Integration Server Administration Guide OLAP Integration Server Metaoutline Users Guide Explique lutilisation du composant Administration Manager de OLAP Integration Server. Explique comment crer et peupler des mtastructures OLAP via linterface standard OLAP Metaoutline (et non via lAssistant Metaoutline). Explique comment crer des modles OLAP via linterface standard OLAP Model Interface (et non via lAssistant de modlisation). Fournit des informations de configuration pour OLAP Starter Kit. Dcrit lutilisation du tableur Excel pour analyser les donnes OLAP. SC27-0787 db2dpx70 SC27-0784 db2upx70 SC27-0783 db2lpx70 SC11-1700 db2ipx70 SC27-0786 db2epx70 db2tp db2ep db2ip n/a n/a n/a

OLAP Integration Server Model Users Guide

OLAP - Installation et utilisation OLAP Spreadsheet Add-in Users Guide for Excel OLAP Spreadsheet Add-in Users Guide for Lotus 1-2-3 Replication Guide and Reference

Dcrit lutilisation du tableur Lotus 1-2-3 SC27-0785 pour analyser les donnes OLAP. db2tpx70 Fournit des informations de planification, de configuration, dadministration et dutilisation sur les outils de rplication IBM livrs avec DB2. SC26-9920 db2e0x70

db2e0

Annexe B. Utilisation de la Bibliothque DB2

105

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF SC11-1684 Extension Spatiale - Guide Fournit des informations dinstallation, dutilisation et de rfrence de configuration, dadministration, de db2sbx70 programmation et didentification et rsolution des incidents pour lextension Spatiale. Ce manuel contient galement des descriptions dtailles des concepts de donnes spatiales et des informations de rfrence (messages et SQL) propres lextension Spatiale. Initiation SQL Prsente les concepts SQL et fournit des exemples de structures et de tches. Dcrit la syntaxe des instructions SQL, les rgles smantiques et celles lies au langage. Fournit galement des informations sur les incompatibilits entre versions, sur les limites des produits et les vues de catalogue. SC11-1655 db2y0x70 Volume 1 SC09-2974 db2s1x70 Volume 2 SC09-2975 db2s0 db2sb Rpertoire HTML

db2y0

SQL Reference, Volume 1 et Volume 2

Les deux volumes du manuel SQL db2s2x70 Reference en anglais peuvent tre commands sous la rfrence SBOF-8933. System Monitor Guide and Dcrit comment collecter diffrents types SC09-2956 Reference dinformations relatives aux bases de db2f0x70 donnes et au gestionnaire de bases de donnes. Dcrit galement comment exploiter les informations pour analyser lactivit de la base de donnes, amliorer les performances du systme et dterminer lorigine des incidents. Extension Texte Administration et programmation Fournit des informations gnrales sur les extensions DB2, ainsi que des informations sur ladministration et la configuration de lextension Texte et la programmation via cette extension. Il comporte des informations de rfrence, de diagnostic (avec des messages) et des exemples. SC11-1683 desu9x70 db2f0

desu9

106

Initiation SQL

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF Troubleshooting Guide Fournit des informations daide pour GC09-2850 dterminer la source des erreurs, effectuer une rcupration aprs incident db2p0x70 et utiliser les outils de diagnostic mis disposition par le service dassistance DB2. Dcrit les nouvelles fonctions et SC11-1656 amliorations apportes DB2 Universal db2q0x70 Database, version 7. Manuels dinstallation et de configuration de DB2 DB2 Connect Enterprise Edition pour OS/2 et Windows - Mise en route GC11-1640 Contient des informations sur la planification, la migration, linstallation db2c6x70 et la configuration de DB2 Connect Enterprise Edition sous OS/2 et systmes Windows 32 bits. Contient galement des informations dinstallation et de configuration relatives la plupart des clients pris en charge. GC11-1639 db2cyx70 db2c6 db2p0 Rpertoire HTML

Nouveauts

db2q0

DB2 Connect Enterprise Contient des informations sur la Edition pour UNIX - Mise planification, linstallation, la en route configuration et les fonctions de DB2 Connect Enterprise Edition sous UNIX. Contient galement des informations dinstallation et de configuration relatives la plupart des clients pris en charge. DB2 Connect Personal Edition - Mise en route

db2cy

GC11-1647 Contient des informations sur la planification, la migration, linstallation et les fonctions de DB2 Connect Personal db2c1x70 Edition sous OS/2 et systmes Windows 32 bits. Contient galement des informations dinstallation et de configuration relatives tous les clients pris en charge. Contient des informations sur la planification, la migration, linstallation et la configuration de DB2 Connect Personal Edition sur toutes les plateformes Linux. GC11-1642 db2c4x70

db2c1

DB2 Connect Personal Edition pour Linux Mise en route

db2c4

Annexe B. Utilisation de la Bibliothque DB2

107

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF DB2 Data Links Manager - Mise en route Contient des informations sur la planification, linstallation et les fonctions de DB2 Data Links Manager sous AIX et Windows 32 bits. GC11-1646 db2z6x70 db2v3 db2z6 Rpertoire HTML

GC11-1644 DB2 Enterprise Extended Contient des informations sur la Edition pour UNIX - Mise planification, la migration, linstallation db2v3x70 en route et la configuration de DB2 Enterprise Extended Edition sous UNIX. Contient galement des informations dinstallation et de configuration relatives la plupart des clients pris en charge. DB2 Enterprise - Extended Contient des informations sur la Edition pour Windows planification, linstallation et la Mise en route configuration de DB2 Enterprise Extended Edition sous Windows 32 bits. Contient galement des informations dinstallation et de configuration relatives la plupart des clients pris en charge. DB2 pour OS/2 - Mise en route GC11-1643 db2v6x70

db2v6

GC11-1648 Contient des informations sur la planification, la migration, linstallation db2i2x70 et la configuration de DB2 Universal Database sous OS/2. Contient galement des informations dinstallation et de configuration relatives la plupart des clients pris en charge.

db2i2

GC11-1650 DB2 pour UNIX - Mise en Contient des informations sur la route planification, la migration, linstallation db2ixx70 et la configuration de DB2 Universal Database sous UNIX. Contient galement des informations dinstallation et de configuration relatives la plupart des clients pris en charge. DB2 pour Windows - Mise Contient des informations sur la en route planification, la migration, linstallation et la configuration de DB2 Universal Database sous systmes Windows 32 bits. Contient galement des informations dinstallation et de configuration relatives la plupart des clients pris en charge. GC11-1651 db2i6x70

db2ix

db2i6

108

Initiation SQL

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF DB2 Personal Edition Mise en route Contient des informations sur la planification, la migration, linstallation et la configuration de DB2 Universal Database Personal Edition sous OS/2 et systmes Windows 32 bits. Contient des informations sur la planification, la migration, linstallation et la configuration de DB2 Universal Database Personal Edition sur toutes les plateformes Linux. Contient des informations relatives linstallation de DB2 Query Patroller. Fournit des informations sur linstallation dagents dentrept, des fonctions Transformation correspondantes et du produit Information Catalog Manager. GC11-1649 db2i1x70 db2i1 Rpertoire HTML

DB2 Personal Edition pour Linux - Mise en route

GC11-1652 db2i4x70

db2i4

DB2 Query Patroller Installation Guide DB2 Warehouse Manager - Installation

GC09-2959 db2iwx70 GC11-1681 db2idx70

db2iw

db2id

Annexe B. Utilisation de la Bibliothque DB2

109

Tableau 1. Informations sur DB2 (suite) Nom Description Rfrences Nom de fichier PDF Exemples de programmes multiplateformes au format HTML Exemples de programmes au format HTML Fournit les exemples de programmes au format HTML des langages de programmation sur toutes les plateformes prises en charges par DB2. Ces programmes sont fournis titre informatif. Certains exemples de programmes ne sont pas disponibles dans tous les langages. Ces exemples de programmes ne sont disponibles que si le composant DB2 Application Development Client est install. Pour plus de dtails sur ces programmes, reportez-vous au manuel Application Building Guide. Remarques sur le produit DB2 Connect Release Notes Ces documents contiennent les informations de dernire minute nayant pas pu tre intgres dans les manuels DB2 Connect. Ces documents contiennent des informations de dernire minute relatives linstallation et qui nont pas pu tre intgres dans les manuels DB2. Ces documents contiennent des informations de dernire minute relatives lensemble des produits et fonctions DB2 et qui nont pas pu tre intgres dans les manuels DB2. Voir remarque #2. db2cr Aucun numro de rfrence db2hs Rpertoire HTML

Remarques sur linstallation de DB2

Ces documents sont disponibles sur le CD-ROM produit uniquement. Voir remarque #2. db2ir

DB2 Release Notes

Remarques : 1. Le caractre x se trouvant en sixime position dans le nom du fichier indique dans quelle langue est fourni le manuel. Par exemple, le nom de fichier db2d0e70 identifie la version anglaise du manuel Administration Guide et db2d0f70, la version franaise. Les lettres ci-dessous sont utilises dans les noms de fichier pour indiquer la langue dans laquelle les manuels sont disponibles.

110

Initiation SQL

Langue Portugais (Brsil) Bulgare Tchque Danois Nerlandais Anglais Finnois Franais Allemand Grec Hongrois Italien Japonais Coren Norvgien Polonais Portugais Russe Chinois simplifi Slovne Espagnol Sudois Chinois traditionnel Turc

Identificateur b u x d q e y f g a h i j k n p v r c l z s t m

2. Les informations de dernire minute qui nont pas pu tre intgres dans les manuels DB2 sont disponibles dans les Remarques sur le produit au format HTML et sous forme de fichier ASCII. La version HTML peut tre obtenue partir du Centre daide et dinformation et des CD-ROM produit. Pour consulter un fichier ASCII : v Pour les plateformes UNIX, reportez-vous au fichier Release.Notes qui se trouve dans le rpertoire DB2DIR/Readme/%L o %L reprsente le nom denvironnement local et DB2DIR : /usr/lpp/db2_07_01 sous AIX /opt/IBMdb2/V7.1 sous HP-UX, PTX, Solaris et Silicon Graphics IRIX /usr/IBMdb2/V7.1 sous Linux. v Pour les autres plateformes, reportez-vous au fichier RELEASE.TXT situ dans le rpertoire dinstallation du produit. Sur les plateformes OS/2, cliquez deux fois sur le dossier DB2, puis sur licne Remarques sur le produit.

Annexe B. Utilisation de la Bibliothque DB2

111

Impression des manuels au format PDF


Si vous prfrez disposer de documents imprims, vous pouvez dcompacter et imprimer les fichiers contenus sur le CD-ROM des publications DB2. Adobe Acrobat Reader vous permet dimprimer la totalit dun manuel ou un ensemble de pages dtermin. Pour connatre le nom de fichier correspondant chaque manuel, reportez-vous au tableau tableau 1 la page 101. Vous pouvez obtenir la dernire version dAdobe Acrobat Reader partir du site Web Adobe en vous connectant ladresse http://www.adobe.com. Les fichiers PDF se trouvent sur le CD-ROM des publications DB2 et sont dots du suffixe PDF. Pour accder ces fichiers, procdez comme suit : 1. Insrez le CD-ROM des publications DB2. Sur les plateformes UNIX, montez-le. Pour connatre les procdures de montage du CD-ROM, reportez-vous au manuel Mise en route. 2. Dmarrez Acrobat Reader. 3. Ouvrez le fichier PDF de votre choix dans un des rpertoires suivants : v Sur les plateformes OS/2 et Windows : rpertoire x:\doc\langue, o x dsigne lunit de CD-ROM et langue le code pays deux caractres correspondant votre langue (par exemple, FR pour le franais). v Sur des plateformes UNIX : Rpertoire /cdrom/doc/%L du CD-ROM, o /cdrom dsigne le point de montage du CD-ROM et %L le nom de lenvironnement local souhait. Vous pouvez galement copier les fichiers PDF du CD-ROM sur une unit locale ou rseau, et les y consulter.

Commande des manuels imprims


Vous pouvez commander les manuels DB2 imprims sparment ou sous forme de jeu (pour lAmrique du Nord uniquement) en utilisant une rfrence SBOF. Pour commander des manuels, contactez votre distributeur agr ou votre partenaire commercial, ou composez le 1-800-879-2755 aux tats-Unis ou le 1-800-IBM-4YOU au Canada. Vous pouvez aussi les commander sur la page Web Publications en vous connectant ladresse http://www.elink.ibmlink.ibm.com/pbl/pbl. Il existe deux jeux de manuels disponibles. Le jeu SBOF-8935 fournit des informations dutilisation et de rfrence sur DB2 Warehouse Manager, et le jeu SBOF-8931, des informations de mme type concernant tous les autres produits et fonctions de DB2 Universal Database. Le contenu de chaque jeu est rpertori dans le tableau ci-aprs.

112

Initiation SQL

Tableau 2. Commande de manuels imprims Rfrence SBOF SBOF-8931 v Administration Guide: Planning v v v v v v v v v v v v v v Manuels v OLAP Integration Server Administration Guide Administration Guide: Implementation v OLAP Integration Server Metaoutline Administration Guide: Performance Users Guide Administrative API Reference v OLAP Integration Server Model Users Application Building Guide Guide Application Development Guide v OLAP Integration Server Users Guide CLI Guide and Reference v OLAP - Installation et utilisation Command Reference v OLAP Spreadsheet Add-in Users Data Movement Utilities Guide and Guide for Excel Reference v OLAP Spreadsheet Add-in Users Data Warehouse Center Guide for Lotus 1-2-3 Administration v Replication Guide and Reference Data Warehouse Center Application v Extension Spatiale : Administration et Integration Guide programmation DB2 Connect Users Guide v Initiation SQL Installation et configuration v SQL Reference, Volumes 1 et 2 Informations complmentaires v System Monitor Guide and Reference Extensions Image, Audio et Vido : v Extension Texte : Administration et Administration et programmation programmation Guide des messages, Volumes 1 et 2 v Troubleshooting Guide v Nouveauts SBOF-8935 v Information Catalog Manager Administration Guide v Information Catalog Manager - Guide de lutilisateur v Information Catalog Manager Programming Guide and Reference v Query Patroller Administration Guide v Query Patroller Users Guide

Annexe B. Utilisation de la Bibliothque DB2

113

Documentation en ligne DB2 Accs laide en ligne


Des rubriques daide en ligne sont disponibles avec tous les composants DB2. Le tableau ci-aprs dcrit les diffrents types daide disponibles.
Type daide Aide sur les commandes Contenu Explique la syntaxe des commandes de linterprteur de commandes. Mode daccs partir de linterprteur de commandes, en mode interactif, entrez : ? commande o commande correspond un mot cl ou la commande complte. Par exemple, ? catalog permet dafficher laide sur les commandes CATALOG, alors que ? catalog database permet dafficher laide sur la commande CATALOG DATABASE. Dcrit les tches effectuer partir dune fentre ou dun bloc-notes, cliquez sur le bouton de fonction Aide ou appuyez sur la dans une fentre ou un bloc-notes. Laide fournit les touche F1. informations quil est Aide sur le Centre de ncessaire de connatre et commande dcrit comment utiliser les lments de contrle de Aide sur le Centre de fentre ou de bloc-notes. contrle Aide sur lAssistant de configuration client Aide sur Data Warehouse Center Aide sur lAnalyseur dvnements Aide sur Information Catalog Manager Aide sur le Centre dadministration des satellites Aide sur le Centre de gestion des scripts

114

Initiation SQL

Type daide Aide sur les messages

Contenu Dcrit lorigine dun message et indique les oprations correctives effectuer, le cas chant.

Mode daccs partir de linterprteur de commandes, en mode interactif, entrez : ? XXXnnnnn o XXXnnnnn correspond un numro de message correct. Par exemple, ? SQL30081 permet dafficher laide sur le message SQL30081. Pour afficher laide cran par cran, entrez : ? XXXnnnnn | more Pour sauvegarder laide sur un message dans un fichier, entrez : ? XXXnnnnn > nomfichier.ext o nomfichier.ext correspond au fichier dans lequel vous souhaitez sauvegarder laide sur un message.

Aide sur le SQL

Dcrit la syntaxe des instructions SQL.

partir de linterprteur de commandes, en mode interactif, entrez : help instruction o instruction correspond une instruction SQL. Par exemple, help SELECT permet dafficher laide sur linstruction SELECT. Remarque : Laide SQL nest pas disponible sur les plateformes UNIX.

Aide sur SQLSTATE

Dcrit les codes SQLSTATE et de classe.

partir de linterprteur de commandes, en mode interactif, entrez : ? sqlstate or ? code-classe o sqlstate correspond un code dtat SQL correct compos de cinq chiffres et code-classe aux deux premiers chiffres du code dtat SQL. Par exemple, ? 08003 permet dafficher laide sur ltat SQL 08003, alors que ? 08 permet de visualiser laide sur le code de classe 08.

Annexe B. Utilisation de la Bibliothque DB2

115

Affichage des informations en ligne


Les manuels livrs avec ce produit sont au format lectronique HTML, ce qui vous permet de rechercher et de consulter aisment les informations, laide de liens hypertexte. Cela permet galement de partager plus efficacement la bibliothque lectronique entre les diffrents utilisateurs du site. La visualisation des manuels en ligne et des exemples de programmes peut tre effectue laide de tout navigateur compatible avec la version 3.2 de HTML. Pour visualiser les manuels en ligne ou les exemples de programmes : v Si vous utilisez les outils dadministration DB2, utilisez le Centre daide et dinformation. v Dans un navigateur, cliquez sur Fichier >Ouvrir une page. La page qui saffiche contient des descriptions des manuels DB2 et les liens correspondants : Pour les plateformes UNIX, ouvrez la page suivante :
INSTHOME /sqllib/doc/%L/html/index.htm

o %L est le nom de lenvironnement local. Pour les autres plateformes, ouvrez la page suivante :
sqllib\doc\html\index.htm

Cette page est disponible partir de lunit sur laquelle DB2 est install. Si le Centre daide et dinformation nest pas install, vous pouvez galement louvrir en cliquant deux fois sur licne Informations DB2. Selon le systme utilis, cette icne est disponible partir du dossier principal du produit ou du menu Dmarrer de Windows. Installation du navigateur Netscape Si vous ne disposez pas encore dun navigateur Web, vous pouvez installer Netscape partir du CD-ROM correspondant fourni avec les produits DB2. Pour obtenir plus de dtails sur la procdure dinstallation, procdez comme suit : 1. Insrez le CD-ROM Netscape. 2. Montez le CD-ROM (uniquement sur les plateformes UNIX). Pour connatre les procdures de montage du CD-ROM, reportez-vous au manuel Mise en route. 3. Pour la procdure dinstallation, reportez-vous au fichier CDNAVnn.txt, o nn dsigne lidentificateur de langue deux caractre. Ce fichier se trouve dans le rpertoire principal du CD-ROM.

116

Initiation SQL

Recherche dinformations laide du Centre daide et dinformation Le Centre daide et dinformation permet daccder rapidement aux informations relatives DB2. Le Centre daide et dinformation est disponible sur toutes les plateformes sur lesquelles les outils dadministration DB2 sont installs. Vous pouvez ouvrir le Centre daide et dinformation en cliquant deux fois sur licne correspondante. Selon le systme utilis, cette icne est disponible partir du dossier principal du produit ou du menu Dmarrer de Windows. Vous pouvez aussi accder au Centre daide et dinformation en utilisant la barre doutils et le menu Aide sur la plateforme DB2 Windows. Le Centre daide et dinformation fournit six types dinformations. Cliquez sur longlet appropri pour afficher les informations. Procdures Rfrence Manuels Affiche la liste des tches pouvant tre excutes laide de DB2. Affiche la liste des informations de rfrence sur DB2 (mots cls, commandes, API, etc.). Affiche la liste des manuels DB2.

Rsolution des incidents Affiche la liste des catgories de messages derreur et les actions correctives correspondantes. Programmes exemples Affiche la liste des exemples de programmes livrs avec lapplication DB2 Application Development Client. Si cette application nest pas installe, aucun onglet ne saffiche. Web Affiche la liste des informations DB2 disponibles sur le Web. Pour pouvoir accder ces informations, une connexion doit tre tablie entre votre systme et le Web.

Lorsque vous slectionnez un lment apparaissant dans lune des listes, le Centre daide et dinformation lance un programme daffichage de sorte que vous puissiez consulter les informations correspondantes. Selon le type dinformation slectionn, il peut sagir du programme systme daffichage de laide, dun diteur de texte ou dun logiciel de navigation Web. Le Centre daide et dinformation comporte une fonction de recherche qui vous permet de localiser une rubrique dtermine sans consulter les listes. Pour une recherche en texte intgral, suivez le lien hypertexte allant du Centre daide et dinformation au formulaire Recherche dans la documentation DB2.

Annexe B. Utilisation de la Bibliothque DB2

117

Normalement, le serveur de recherche HTML dmarre automatiquement. Si une recherche effectue dans les informations HTML est infructueuse, il peut tre ncessaire de dmarrer le serveur de recherche en procdant comme suit : Sous Windows Cliquez sur Dmarrer, puis slectionnez Programmes > DB2 > Informations > Dmarrage du serveur de recherche HTML. Sous OS/2 Cliquez deux fois sur le dossier DB2 pour OS/2, puis nouveau deux fois sur licne Dmarrage du serveur de recherche HTML. Si vous rencontrez des difficults lors de vos recherches dans les informations HTML, reportez-vous aux remarques sur le produit. Remarque : La fonction de recherche nest pas disponible dans les environnements Linux, PTX et Silicon Graphics IRIX.

Assistants DB2
Les assistants vous guident dans lexcution de certaines tches dadministration en vous indiquant les tapes effectuer les unes aprs les autres. Vous pouvez disposer des assistants via le Centre de contrle et lAssistant de configuration client. Le tableau suivant fournit la liste des assistants et en dtaille les fonctions : Remarque : Les assistants Cration de base de donnes, Index et Mise jour multisite sont disponibles pour lenvironnement de bases de donnes partitionnes.
Assistant Ajout dune base de donnes Opration concerne Catalogage dune base de donnes sur un poste de travail client. Mode daccs partir de lAssistant de configuration client, cliquez sur Ajout. partir du Centre de contrle, cliquez laide du bouton droit de la souris sur la base de donnes que vous souhaitez sauvegarder et slectionnez Sauvegarde > Base de donnes - Assistant. partir du Centre de contrle, cliquez laide du bouton droit de la souris sur le dossier Bases de donnes et slectionnez Mise jour multisite.

Sauvegarde de base Dtermination, cration et planification dun de donnes plan de sauvegarde.

Configuration de mise jour multisite

Configuration dune mise jour multisite, dune transaction rpartie ou dune validation en deux phases.

118

Initiation SQL

Assistant Cration dune base de donnes

Opration concerne Cration dune base de donnes et excution de certaines tches lmentaires de configuration.

Mode daccs partir du Centre de contrle, cliquez laide du bouton droit de la souris sur le dossier Bases de donnes et slectionnez Cration > Base de donnes Assistant. partir du Centre de contrle, cliquez laide du bouton droit de la souris sur licne Tables et slectionnez Cration > Table Assistant. partir du Centre de contrle, cliquez laide du bouton droit de la souris sur licne Espaces table et slectionnez Cration > Espace table Assistant. partir du Centre de contrle, cliquez laide du bouton droit de la souris sur licne Index et slectionnez Cration > Index Assistant. partir du Centre de contrle, cliquez laide du bouton droit de la souris sur la base de donnes dont vous voulez ajuster les performances et slectionnez Configuration des performances Assistant. Dans un environnement de bases de donnes partitionnes, dans lcran Partitions de base de donnes, cliquez laide du bouton droit de la souris sur la premire partition dont vous voulez ajuster les performances, puis slectionnez Configuration des performances Assistant.

Cration dune table

Slection des types de donnes de base et cration dune cl primaire pour la table.

Cration dun espace table

Cration dun espace table.

Cration dindex

Dtermination des index crer et supprimer pour toutes vos requtes.

Configuration des performances

Ajustement des performances dune base de donnes avec mise jour des paramtres de configuration en fonction de vos besoins.

Restauration de la base de donnes

Rcupration dune base de donnes aprs un incident. Cet assistant vous aide dterminer la copie de sauvegarde et les journaux utiliser.

partir du Centre de contrle, cliquez laide du bouton droit de la souris sur la base de donnes que vous souhaitez restaurer et slectionnez Restauration > Base de donnes - Assistant.

Annexe B. Utilisation de la Bibliothque DB2

119

Configuration dun serveur de documents


Les informations relatives DB2 sont installes par dfaut sur votre systme local. Cela implique que les fichiers correspondants doivent tre installs sur le poste de chaque utilisateur. Afin de lviter et de ne stocker les informations DB2 qu un seul emplacement, procdez comme suit : 1. Copiez tous les fichiers et sous-rpertoires de \sqllib\doc\html partir de votre systme local vers un serveur Web. Chaque manuel dispose dun sous-rpertoire contenant tous les fichiers HTML et GIF qui le constituent. Assurez-vous que la structure de rpertoire reste identique. 2. Configurez le serveur Web de sorte quil recherche les fichiers leur nouvel emplacement. Pour plus de dtails, reportez-vous au manuel Installation et configuration - Informations complmentaires. 3. La version Java de lutilitaire Information Center (Infocentre) vous permet dindiquer une adresse URL de base pour tous les fichiers HTML. Vous devez utiliser cette adresse URL pour obtenir la liste des manuels. 4. Une fois la visualisation des fichiers de manuels active, il est conseill de marquer par des signets les rubriques couramment consultes telles que : v La liste des manuels v La table de matires des manuels couramment affichs v Les rubriques frquemment cites, telles que la rubrique ALTER TABLE. v Le formulaire de recherche Pour plus dinformations sur la prise en charge des fichiers de documentation lectronique DB2 Universal Database partir dune machine centrale, reportez-vous lAnnexe relative NetQuestion dans le manuel Installation et configuration - Informations complmentaires.

Recherche dinformations en ligne


Pour rechercher des informations dans les fichiers HTML, procdez selon lune des mthodes suivantes : v Cliquez sur Recherche dans la partie suprieure du cadre des manuels HTML. Utilisez le formulaire de recherche pour effectuer une recherche sur une rubrique particulire. La fonction de recherche nest pas disponible dans les environnements Linux, PTX et Silicon Graphics IRIX. v Cliquez sur Index dans la partie suprieure du cadre des manuels HTML. Utilisez lindex pour rechercher une rubrique spcifique dans un manuel. v Affichez la table des matires ou lindex du manuel HTML et utilisez la fonction de recherche du navigateur Web pour rechercher une rubrique spcifique dun manuel. v Utilisez la fonction de signets de lexplorateur Web pour revenir rapidement une rubrique spcifique.

120

Initiation SQL

v Utilisez la fonction de recherche du Centre daide et dinformation pour effectuer une recherche sur des rubriques spcifiques. Pour plus de dtails, reportez-vous la section Recherche dinformations laide du Centre daide et dinformation la page 117.

Annexe B. Utilisation de la Bibliothque DB2

121

122

Initiation SQL

Annexe C. Remarques
Le prsent document peut contenir des informations ou des rfrences concernant certains produits, logiciels ou services IBM non annoncs dans ce pays. Pour plus de dtails, rfrez-vous aux documents dannonce disponibles dans votre pays, ou adressez-vous votre partenaire commercial IBM. Toute rfrence un produit, logiciel ou service IBM nimplique pas que seul ce produit, logiciel ou service puisse tre utilis. Tout autre lment fonctionnellement quivalent peut tre utilis, sil nenfreint aucun droit dIBM. Il est de la responsabilit de lutilisateur dvaluer et de vrifier lui-mme les installations et applications ralises avec des produits, logiciels ou services non expressment rfrencs par IBM. IBM peut dtenir des brevets ou des demandes de brevets couvrant les produits mentionns dans le prsent document. La remise de ce document ne vous aucun droit de licence sur ces brevets ou demandes de brevet. Si vous dsirez recevoir des informations concernant lacquisition de licences, veuillez en faire la demande par crit ladresse suivante : IBM EMEA Director of Licensing IBM Europe Middle-East Africa Tour Descartes La Dfense 5 2, avenue Gambetta 92066 Paris-La Dfense Cedex France Pour le Canada, veuillez adresser votre courrier : IBM Director of Commercial Relations IBM Canada Ltd 3600 Steeles Avenue East Markham, Ontario L3R 9Z7 Canada Les informations sur les licences concernant les produits utilisant un jeu de caractres double octet peuvent tre obtenues par crit ladresse suivante : IBM World Trade Asia Corporation Licensing 2-31 Roppongi 3-chome, Minato-ku Tokyo 106, Japon

Copyright IBM Corp. 1993, 2000

123

Le paragraphe suivant ne sapplique ni au Royaume-Uni, ni dans aucun pays dans lequel il serait contraire aux lois locales : LE PRESENT DOCUMENT EST LIVRE EN LETAT. IBM DECLINE TOUTE RESPONSABILITE, EXPRESSE OU IMPLICITE, RELATIVE AUX INFORMATIONS QUI Y SONT CONTENUES, Y COMPRIS EN CE QUI CONCERNE LES GARANTIES DE QUALITE MARCHANDE OU DADAPTATION A VOS BESOINS. Certaines juridictions nautorisent pas lexclusion des garanties implicites, auquel cas lexclusion ci-dessus ne vous sera pas applicable. Le prsent document peut contenir des inexactitudes ou des coquilles. Il est mis jour priodiquement. Chaque nouvelle dition inclut les mises jour. IBM peut modifier sans pravis les produits et logiciels dcrits dans ce document. Les rfrences des sites Web non IBM sont fournies titre dinformation uniquement et nimpliquent en aucun cas une adhsion aux donnes quils contiennent. Les lments figurant sur ces sites Web ne font pas partie des lments du prsent produit IBM et lutilisation de ces sites relve de votre seule responsabilit. IBM pourra utiliser ou diffuser, de toute manire quelle jugera approprie et sans aucune obligation de sa part, tout ou partie des informations qui lui seront fournies. Les licencis souhaitant obtenir des informations permettant : (i) lchange des donnes entre des logiciels crs de faon indpendante et dautres logiciels (dont celui-ci), et (ii) lutilisation mutuelle des donnes ainsi changes, doivent adresser leur demande : IBM Canada Limited Office of the Lab Director 1150 Eglinton Ave. East North York, Ontario M3C 1H7 CANADA Ces informations peuvent tre soumises des conditions particulires prvoyant notamment le paiement dune redevance. Le logiciel sous licence dcrit dans ce document et tous les lments sous licence disponibles sy rapportant sont fournis par IBM conformment aux termes du Contrat sur les produits et services IBM, des Conditions internationales dutilisation des logiciels IBM ou de tout autre accord quivalent.

124

Initiation SQL

Les donnes de performance indiques dans ce document ont t dtermines dans un environnement contrl. Par consquent, les rsultats peuvent varier de manire significative selon lenvironnement dexploitation utilis. Certaines mesures values sur des systmes en cours de dveloppement ne sont pas garanties sur tous les systmes disponibles. En outre, elles peuvent rsulter dextrapolations. Les rsultats peuvent donc varier. Il incombe aux utilisateurs de ce document de vrifier si ces donnes sont applicables leur environnement dexploitation. Les informations concernant des produits non IBM ont t obtenues auprs des fournisseurs de ces produits, par lintermdiaire dannonces publiques ou via dautres sources disponibles. IBM na pas test ces produits et ne peut confirmer lexactitude de leurs performances ni leur compatibilit. Elle ne peut recevoir aucune rclamation concernant des produits non IBM. Toute question concernant les performances de produits non IBM doit tre adresse aux fournisseurs de ces produits. Toute instruction relative aux intentions dIBM pour ses oprations venir est susceptible dtre modifie ou annule sans pravis, et doit tre considre uniquement comme un objectif. Ce document peut contenir des exemples de donnes et des rapports utiliss couramment dans lenvironnement professionnel. Ces exemples mentionnent des noms fictifs de personnes, de socits, de marques ou de produits des fins illustratives ou explicatives uniquement. Toute ressemblance avec des noms de personnes, de socits ou des donnes relles serait purement fortuite. LICENCE DE COPYRIGHT : Le prsent logiciel peut contenir des exemples de programmes dapplication en langage source destins illustrer les techniques de programmation sur diffrentes plateformes dexploitation. Vous avez le droit de copier, de modifier et de distribuer ces exemples de programmes sous quelque forme que ce soit et sans paiement daucune redevance IBM, des fins de dveloppement, dutilisation, de vente ou de distribution de programmes dapplication conformes aux interfaces de programmation des plateformes pour lesquelles ils ont t crits ou aux interfaces de programmation IBM. Ces exemples de programmes nont pas t rigoureusement tests dans toutes les conditions. Par consquent, IBM ne peut garantir expressment ou implicitement la fiabilit, la maintenabilit ou le fonctionnement de ces programmes.

Annexe C. Remarques

125

Toute copie totale ou partielle de ces programmes exemples et des oeuvres qui en sont drives doit comprendre une notice de copyright, libelle comme suit : (nom de votre socit) (anne). Des segments de code sont drivs des Programmes exemples dIBM Corp. Copyright IBM Corp. _indiquez lanne ou les annes_. All rights reserved.

Marques
Les termes qui suivent, accompagns dun astrisque (*) dans le document, sont des marques dInternational Business Machines Corporation dans certains pays.
ACF/VTAM AISPO AIX AIX/6000 AIXwindows AnyNet APPN AS/400 BookManager CICS C Set++ C/370 DATABASE 2 DataHub DataJoiner DataPropagator DataRefresher DB2 DB2 Connect DB2 Extenders DB2 OLAP Server DB2 Universal Database Distributed Relational Database Architecture DRDA eNetwork Extended Services FFST First Failure Support Technology IBM IMS IMS/ESA LAN DistanceMVS MVS/ESA MVS/XA Net.Data OS/2 OS/390 OS/400 PowerPC QBIC QMF RACF RISC System/6000 RS/6000 S/370 SP SQL/DS SQL/400 System/370 System/390 SystemView VisualAge VM/ESA VSE/ESA VTAM WebExplorer WIN-OS/2

Les termes qui suivent sont des marques dautres socits : Microsoft, Windows et Windows NT sont des marques de Microsoft Corporation dans certains pays.

126

Initiation SQL

Java, ou toutes les marques et logos incluant Java, et Solaris sont des marques de Sun Microsystems, Inc. Tivoli et NetView sont des marques de Tivoli Systems Inc. dans certains pays. UNIX est une marque enregistre aux Etats-Unis et/ou dans dautres pays et utilise avec lautorisation exclusive de la socit X/Open Company Limited. Dautres socits sont propritaires des autres marques, noms de produits ou logos accompagns de deux astrisques (**) qui pourraient apparatre dans ce document.

Annexe C. Remarques

127

128

Initiation SQL

Index
A
ADD CONSTRAINT, instruction 57 Administration Guide vii affichage informations en ligne 116 aide en ligne 114 ALL, utilis dans une sous-requte 52 ALTER TABLE, instruction 57 ANY, mot cl 52 Application Development Guide vii AS, clause 26 Assistant - Ajout dune base de donnes 118, 119 Assistant - Configuration des performances 119 Assistant - Cration dun espace table 119 Assistant - Cration dune base de donnes 118 Assistant - Cration dune table 119 Assistant - Index 119 Assistant - Restauration de la base de donnes 119 Assistant - Sauvegarde de la base de donnes 118 Assistant Configuration de mise jour multisite 118 Assistants ajout dune base de donnes 118, 119 configuration de mise jour multisite 118 configuration des performances 119 cration dun espace table 119 cration dune base de donnes 118 cration dune table 119 excution de tches 118 index 119 restauration de la base de donnes 119 sauvegarde de la base de donnes 118 association, dans des requtes 47 Copyright IBM Corp. 1993, 2000

B
base de donnes relationnelle, dfinition 1 base de donnes relationnelle noeuds multiples, dfinition 1 base de donnes relationnelle partitionne, dfinition 1 base de donnes SAMPLE 77 cration 78 effacement 79 BETWEEN, prdicat 51 Bibliographie vii Bibliothque DB2 affichage en ligne 116 aide en ligne 114 assistants 118 Centre daide et dinformation 117 commande de manuels imprims 112 configuration dun serveur de documents 120 identificateur de langue pour les manuels 110 impression des manuels au format PDF 112 informations de dernire minute 111 manuels 99 recherche en ligne 120 structure 99 BIGINT, type de donnes 5 BLOB, chane 73 BLOB, type de donnes 73

cl associe 56 compose 56 dfinition 56 primaire 56 unique 56 cl associe 56 cl compose 56 cl parente, dfinition 56 cl primaire 56 cl unique 56 contrainte dunicit 56 CLOB, chane 73 CLOB, type de donnes 73 colonne ASC, tri par ordre croissant 23 dfinition 3 DESC, tri par ordre dcroissant 23 colonne, fonction 29 AVG 29 COUNT 29 MAX 29 MIN 29 colonne de groupage, dfinition 31 condition de jointure 62 condition de recherche 20 Configuration dun serveur de documents 120 CONNECT, instruction 18 explicite 18 implicite 18 contrainte dunicit 56 contraintes contraintes dunicit 9 contraintes rfrentielles 9 contraintes dintgrit rfrentielle cl associe 56 cl parente 56 dfinition 55 description 56 contraintes dunicit dfinition 55 contraintes de vrification de table dfinition 55 description 57 vrification diffre de contrainte 57

C
catalogues systme 75 Centre daide et dinformation 117 chane LOB (objets de grande taille) 73 chane de caractres en tant que type de donnes 5 longueur fixe 5 longueur variable 5 chane graphique longueur fixe 5 longueur variable 5 CHAR, type de donnes 5 classement des lignes 23

129

conversion de donnes conditions de jointure 64 oprateurs ensemblistes 49 corrlation description 40 nom 43 sous-requte 41 sous-requtes utilisant des jointures 44 CREATE DISTINCT TYPE 71 CREATE FUNCTION 72 CREATE TABLE, instruction 9 NOT NULL/NOT NULL WITH DEFAULT, valeur de colonne 9 CREATE TRIGGER 58 CREATE VIEW, instruction 13 WITH CHECK OPTION 13 cration de la base de donnes SAMPLE 78 CUBE 67 lignes tabulations croises 67 lignes de sous-totaux 67 CURRENT DATE, registre spcial 74 CURRENT FUNCTION PATH, registre spcial 74 CURRENT SERVER, registre spcial 75 CURRENT TIME, registre spcial 75 CURRENT TIMESTAMP, registre spcial 75 CURRENT TIMEZONE, registre spcial 75

E
effacement de la base de donnes SAMPLE 79 limination des lignes en double 24 emplacement des objets LOB, dfinition 74 entier binaire, description 5 EXCEPT, oprateur 48 classement des rsultats 49 limites dutilisation de loprateur 49 types de donnes 49 EXCEPT ALL 48 EXISTS, prdicat 51 expression CASE description 36 fonction SIGN 36 expression de table commune description 39 expressions 25 expressions, noms 26 expressions de table description 38 expressions de table imbriques, description 38 extraction de donnes 19

fonctions UDF 72 (suite) fonction de table externe OLE DB 72 fonction drive 72 fonction scalaire externe 72 FROM, clause 19 FULLSELECT 35 ALL, mot cl 52 ANY, mot cl 52 avec instruction INSERT 10 sous-requte 10, 52 FULLSELECT, dfinition 10 FULLSELECT scalaires description 35 fusion des rsultats de plusieurs requtes 47

G
gestionnaire de bases de donnes GROUP BY 25 GROUP BY, clause avec clause HAVING 32 colonne de groupage 31 1

H
HAVING 25 HAVING, clause description 32 HTML programmes exemples

F
FLOAT, type de donnes 5 fonction colonne 29 dfinie par lutilisateur 29 description 28 intgre 29 OLAP (traitement analytique en ligne) 68 scalaire 29 table 31 fonction de table SQLCACHE_SNAPSHOT 31 fonction de table externe 72 fonction de table externe OLE DB 72 fonction drive 72 fonction scalaire externe 72 fonctions de colonne 29 fonctions scalaires ABS 30 HEX 30 LENGTH 30 SIGN 30 YEAR 30 fonctions UDF 72 dfinition 72 fonction de table externe 72

110

I
ID autorisation 4 identificateur de langue manuels 110 imbrication de sous-requtes corrles 45 impression des manuels au format PDF 112 IN, prdicat 50 informations de dernire minute 111 informations en ligne affichage 116 recherche 120 INSERT, instruction 10 NOT NULL/NOT NULL WITH DEFAULT, valeur de colonne 10 installation navigateur Netscape 116 INTEGER, type de donnes 5 interprteur de commandes 1 INTERSECT, oprateur 49 classement des rsultats 49

D
DATE, type de donnes 5 DATETIME, type de donnes 5 DBLOB, chane 73 DBLOB, type de donnes 73 dcimal, description 5 DECIMAL, type de donnes 5 dclencheurs CREATE TRIGGER 58 dclencheur AFTER 58 dclencheur BEFORE 58 dfinition 55 description 58 variables de transition 61 DELETE, instruction 13 DISTINCT, mot cl 24, 30 distinct, type de donnes 71 DOUBLE, type de donnes 5

130

Initiation SQL

INTERSECT, oprateur 49 (suite) limites dutilisation de loprateur 49 types de donnes 49 INTERSECT ALL 49

modle de table STAFFG 90 modles de tables 77, 99

N
navigateur Netscape installation 116 nom de corrlation rfrence qualifie un nom de colonne 40 rgles 40 nombres, description 5 NOT BETWEEN, prdicat 51 NOT EXISTS, prdicat 51 NOT IN, prdicat 50 NOT LIKE, prdicat 51 NULL, description de la valeur 5 NULL, valeur 47 suppression dune valeur de colonne 12

J
jointure conditions de jointure 62 conversion de donnes 64 dfinition 26 produit crois 62 sans conditions de jointure 62 sous-requtes corrles 44 jointure externe description 62 jointure externe complte 62 jointure externe droite 62 jointure externe gauche 62 jointure externe complte 62 jointure externe droite 62 jointure externe gauche 62 jointure interne 62

O
OLAP, fonctions 68 classement des lignes 68 groupe dagrgation 68 partitionnement des lignes 68 oprateur de comparaison utilis dans une sous-requte 52 oprateurs arithmtiques 25 ORDER BY, clause 23 oprateurs ensemblistes 49 ordre des oprations 25, 29

registre spcial 74 (suite) CURRENT FUNCTION PATH 74 CURRENT PATH 74 CURRENT SERVER 74 CURRENT TIME 75 CURRENT TIMESTAMP 75 CURRENT TIMEZONE 75 USER 75 relations entre les tables et les vues 13 releveur de coordonnes 74 Remarques sur le produit 111 requte externe, corrlation 43 requtes, association 49 requtes rcursives, description 67 restrictions oprateurs ensemblistes 49 ROLLUP 67 lignes de sous-totaux 67

S
scalaire, fonction 29 DECIMAL 38 schma dfinition 4 schmas rservs 4 SELECT, instruction 19 SET, clause avec instruction UPDATE 12 SET CONSTRAINTS, instruction 57 signe, en tant quattribut numrique 5 SMALLINT, type de donnes 5 SmartGuides assistants 118 SOME, mot cl 52 sous-requte dfinition 28 sous-requte corrle description 41 quand utiliser 43 SQL (Langage dinterrogation structur), dfinition 1 SQL interactif, dfinition 1 SQL Reference vii structure de donnes colonne 3 ligne 3 valeur 3

L
langage de procdure SQL vii ligne dfinition 3 slection 20 lignes de sous-totaux 67 lignes de tabulation croise 67 LIKE, prdicat 51 liste de slection 19 LOB chane, dfinition 74 releveur de coordonnes, dfinition 74

P
PDF 112 prcision, en tant quattribut numrique 5 prdicat IS NOT NULL 20 IS NULL 20 prdicat de niveau suprieur produit crois 62 programmes exemples HTML 110 multiplateformes 110

M
manuels 99, 112 messages derreur identificateur de message 18 SQLSCODE 18 SQLSTATE 18 Mise en route vii modle de table CL_SCHED 79 modle de table DEPARTMENT 79 modle de table EMP_ACT 83 modle de table EMP_PHOTO 85 modle de table EMP_RESUME 85 modle de table EMPLOYEE 80 modle de table IN_TRAY 86 modle de table ORG 86 modle de table PROJECT 87 modle de table SALES 88 modle de table STAFF 89

52

Q
qualification des objets 4, 17

R
REAL, type de donnes 5 recherche informations en ligne 117, 120 rfrence corrle, description 41 registre spcial 74 CURRENT DATE 74 CURRENT DEGREE 74

T
table base de donnes SAMPLE cl associe 56 Index 77

131

table (suite) cl primaire 56 cl unique 56 combinaison de donnes (jointure) 26 contrainte dunicit 56 dfinition 3 fonctions 31 qualification dun nom de colonne 40 table de base 3 table rsultat 3 table de base 3 table rsultat 3 TIME, type de donnes 5 TIMESTAMP, type de donnes 5 traitement analytique en ligne (OLAP) 68 transtypage de types de donnes description 36 type de donnes distinct 71 types de donnes BIGINT 5 CHAR 5 DATE 5 DATETIME 5 DECIMAL 5 DOUBLE 5 FLOAT 5 INTEGER 5 REAL 5 SMALLINT 5 TIME 5 TIMESTAMP 5 VARCHAR 5

valeurs utilises pour lhorodatage, description 5 VALUES, clause avec instruction INSERT VARCHAR, type de donnes vrification de son existence vue avantages 4 description 4 qualification dun nom de colonne 40 10 5 51

W
WHERE, clause 20 combinaison de donnes (jointure) dans une instruction SELECT 26 remarques sur le groupage 32 WITH, clause 39 15 WITH CHECK OPTION

U
UNION, oprateur 47, 48 classement des rsultats 48 description 47 limites dutilisation de loprateur 49 types de donnes 49 UNION ALL 47 UPDATE, instruction 12 USER, registre spcial 75 utilisation dune vue pour modifier des tables 15 WITH CHECK OPTION 15

V
valeur dfinition 3 valeur dans SQL 5

132

Initiation SQL

Comment prendre contact avec IBM


Si votre question est dordre technique, tudiez tout dabord les solutions prsentes dans le manuel Troubleshooting Guide avant de prendre contact avec le Service clients DB2. Ce manuel indique les informations susceptibles daider le Service clients mieux rpondre vos besoins. Pour obtenir des informations ou commander des produits DB2 avant de prendre contact avec le Service clients DB2 Universal Database, prenez contact avec votre partenaire commercial IBM. Aux tats-Unis, composez lun des numros suivants : v 1-800-237-5511 pour obtenir le Service clients, v 1-888-426-4343 pour connatre les options de service disponibles.

Infos produit
Aux tats-Unis, composez lun des numros ci-aprs. v Pour commander des produits ou obtenir des informations gnrales, composez le 1-800-IBM-CALL (1-800-426-2255) ou 1-800-3IBM-OS2 (1-800-342-6672). v Pour commander des manuels, composez le 1-800-879-2755. http://www.ibm.com/software/data/ Les pages DB2 World Wide Web fournissent des informations sur DB2, des descriptions de produit, les programmes de formation et dautres informations. http://www.ibm.com/software/data/db2/library/ DB2 Product and Service Technical Library permet daccder des forums Q&A (questions/rponses), dobtenir des correctifs et les dernires informations techniques sur DB2. Remarque : (Il est possible que ces informations ne soient disponibles quen anglais.) http://www.elink.ibmlink.ibm.com/pbl/pbl/ Le site Web de commande internationale de manuels fournit les informations correspondantes. http://www.ibm.com/education/certify/ Le programme Professional Certification Program du site Web IBM fournit des informations sur les tests de certification concernant diffrents produits IBM, dont DB2.
Copyright IBM Corp. 1993, 2000

133

ftp.software.ibm.com tablissez une connexion anonyme. Des dmonstrations, des correctifs, des informations et des outils associs DB2 ou des produits connexes sont disponibles dans le rpertoire /ps/products/db2. comp.databases.ibm-db2, bit.listserv.db2-l Ces newsgroups sont accessibles tous ceux qui souhaitent partager leurs expriences sur les produits DB2. Sur Compuserve : GO IBMDB2 Excutez cette commande pour accder aux forums IBM DB2. Tous les produits DB2 sont pris en charge sur ces forums. En dehors des Etats-Unis, pour savoir comment prendre contact avec IBM, consultez lannexe A du manuel IBM Software Support Handbook. Pour accder ce document, allez sur le site Web : http://www.ibm.com/support/, puis effectuez une recherche sur le mot cl handbook. Remarque : Dans certains pays, les distributeurs agrs peuvent contacter leur centre dassistance au lieu de prendre contact avec le centre de support IBM.

134

Initiation SQL

Rfrence: CT7YHFR

SC11-1655-00

CT7YHFR