Professional Documents
Culture Documents
Initiation SQL
V ersion 7
SC11-1655-00
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.
. 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
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
iv
Initiation SQL
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
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).
vii
MAJUSCULES
viii
Initiation SQL
Initiation SQL
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.
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
Caractristiques
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
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)
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.
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
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.
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
14
Initiation SQL
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.
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
v Utilisation dexpressions pour calculer des valeurs v Dnomination des expressions v Slection de donnes dans plusieurs tables
17
(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.
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
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
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
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
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.
21
Linstruction suivante tablit la liste des employs dont la commission est inconnue :
SELECT ID, NAME FROM STAFF WHERE COMM IS NULL
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
22
Initiation SQL
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
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
DISTINCT a limin toutes les lignes contenant des donnes en double de lensemble de colonnes prcis dans linstruction SELECT.
24
Initiation SQL
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.
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)
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.
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 ?
27
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.
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)
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
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
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.
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.
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
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.
33
34
Initiation SQL
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
35
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
36
Initiation SQL
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.
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.
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.
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
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.
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'
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.
41
SELECT EMPNO, LASTNAME FROM EMPLOYEE WHERE WORKDEPT = 'A00' AND SALARY > (SELECT AVG(SALARY) FROM EMPLOYEE WHERE WORKDEPT = 'A00')
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.
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)
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)
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.
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
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))
46
Initiation SQL
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
47
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)
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
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
Lexemple suivant slectionne les noms des employs commenant par une lettre autre que S :
SELECT NAME FROM STAFF WHERE NAME
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.
53
54
Initiation SQL
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.
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
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)
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
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 :
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
63
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
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
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
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
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 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.
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
68
Initiation SQL
38 38 38
3 4 5
69
70
Initiation SQL
Les sujets ci-dessus font lobjet dexplications dtailles dans les documents SQL Reference et Administration Guide.
71
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.
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.
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.
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)
75
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
77
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
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 :
MANUFACTURING SYSTEMS 000060 ADMINISTRATION SYSTEMS SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT 000070 000050 000090 000100
79
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
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
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
Initiation SQL
000340
JASON
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
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
83
84
Initiation SQL
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
85
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
Valeurs :
AD3100 AD3110
D01 D21
1983-02-01 1983-02-01
PAYROLL D21 PROGRAMMING PERSONNEL D21 PROGRAMMING ACCOUNT D21 PROGRAMMING QUERY SERVICES C01
2 1 2 2 1 12 9 2
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
OPERATION E01 SUPPORT OPERATION E11 GEN SYSTEMS SERVICES SYSTEMS SUPPORT SCP SYSTEMS SUPPORT E01
6 5 5
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
000330 000340
1 1
1982-01-01 1982-01-01
1983-02-01 1983-02-01
OP2010 OP2010
87
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
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 -
89
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
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).
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.
92
Initiation SQL
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.
844 Don Mills Ave Mellonville, Idaho 83734 (208) 555-2310 January 19, 1946
Annexe A. Tables de la base de donnes SAMPLE
93
94
Initiation SQL
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.
Environmental Engineering, M.Sc. Johns Hopkins University American History, B.A. Northwestern University
Annexe A. Tables de la base de donnes SAMPLE
95
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
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.
97
98
Initiation SQL
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
db2ax
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
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
db2ww
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
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 - 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
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
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
db2c4
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
GC11-1652 db2i4x70
db2i4
db2iw
db2id
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
Ces documents sont disponibles sur le CD-ROM produit uniquement. Voir remarque #2. db2ir
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.
111
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
113
114
Initiation SQL
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.
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.
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.
115
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.
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.
Configuration dune mise jour multisite, dune transaction rpartie ou dune validation en deux phases.
118
Initiation SQL
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.
Slection des types de donnes de base et cration dune cl primaire pour la table.
Cration dindex
Ajustement des performances dune base de donnes avec mise jour des paramtres de configuration en fonction de vos besoins.
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.
119
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.
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
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
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
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