Récupération de données à l'aide de l'instruction SELECT

La manière la plus simple de récupérer des données est d'utiliser l'instruction SQL SELECT pour spécifier une table de résultats. Vous pouvez spécifier les colonnes et les lignes que vous souhaitez récupérer.

Avant de commencer

Envisagez de développer vos propres instructions SQL similaires aux exemples de cette section, puis de les exécuter dynamiquement à l'aide de SPUFI. Pour un tutoriel, voir la leçon 1.1: Interrogation interactive des données.

Vous pouvez également utiliser le site Db2 command line processor, ou Db2 Query Management Facility (QMF).

Procédure

Pour récupérer les données dans un tableau de résultats :

Émettre une instruction SELECT.

Exemples

Exemple 1 : Sélectionner toutes les colonnes avec SELECT *
Il n'est pas nécessaire de connaître les noms des colonnes pour sélectionner des données d' Db2 . Utilisez un astérisque (*) dans la clause SELECT pour indiquer que vous souhaitez récupérer toutes les colonnes de chaque ligne sélectionnée de la table nommée. Les colonnes implicites masquées, telles que les colonnes ROWID et les colonnes d'identification de document XML, ne sont pas incluses dans le résultat de l'instruction SELECT *. Pour visualiser les valeurs de ces colonnes, vous devez spécifier le nom de la colonne.

L'instruction SQL suivante sélectionne toutes les colonnes de la table department :

SELECT *
  FROM DSN8C10.DEPT;

Le tableau des résultats ressemble à l'affichage suivant :

DEPTNO  DEPTNAME                         MGRNO      ADMRDEPT  LOCATION
======  ==============================   ======     ========  ========
A00     SPIFFY COMPUTER SERVICES DIV.    000010     A00       --------
B01     PLANNING                         000020     A00       --------
C01     INFORMATION CENTER               000030     A00       --------
D01     DEVELOPMENT CENTER               ------     A00       --------
D11     MANUFACTURING CENTER             000060     D01       --------
D21     ADMINISTRATION SYSTEMS           000070     D01       --------
E01     SUPPORT SERVICES                 000050     A00       --------
E11     OPERATIONS                       000090     E01       --------
E21     SOFTWARE SUPPORT                 000100     E01       --------
F22     BRANCH OFFICE F2                 ------     E01       --------
G22     BRANCH OFFICE G2                 ------     E01       --------
H22     BRANCH OFFICE H2                 ------     E01       --------
I22     BRANCH OFFICE I2                 ------     E01       --------
J22     BRANCH OFFICE J2                 ------     E01       --------

Comme l'exemple ne spécifie pas de clause WHERE, l'instruction récupère les données de toutes les lignes.

Les tirets pour MGRNO et LOCATION dans le tableau des résultats indiquent des valeurs nulles.

Début du changementSELECT * est recommandé principalement pour une utilisation avec SQL dynamique et les définitions de vues. Vous pouvez utiliser SELECT * dans le SQL statique, mais cela n'est pas recommandé en raison des éventuelles implications sur la compatibilité des variables hôtes et les performances. Supposons que vous ajoutiez une colonne au tableau auquel SELECT * fait référence. Si vous n'avez pas défini de variable hôte réceptrice pour cette colonne, une erreur peut se produire ou les données de la colonne ajoutée peuvent ne pas être récupérées.Fin de la modification

Si vous indiquez les noms des colonnes dans une instruction SELECT statique au lieu d'utiliser un astérisque, vous pouvez éviter les problèmes qui pourraient survenir avec SELECT *. Vous pouvez également voir la relation entre les variables hôtes de réception et les colonnes du tableau de résultats.

Exemple 2 : sélection de colonnes spécifiques avec SELECT nom-colonne
Sélectionnez la ou les colonnes que vous souhaitez récupérer en nommant chaque colonne. Avec une seule instruction SELECT, vous pouvez sélectionner des données dans une colonne ou dans jusqu'à 750 colonnes. Toutes les colonnes apparaissent dans l'ordre que vous spécifiez, et non dans leur ordre dans le tableau.

Par exemple, l'instruction SQL suivante ne récupère que les colonnes MGRNO et DEPTNO de la table des départements :

SELECT MGRNO, DEPTNO
  FROM DSN8C10.DEPT;

Le tableau des résultats ressemble à l'affichage suivant :

MGRNO     DEPTNO
======    ======
000010    A00
000020    B01
000030    C01
------    D01
000050    E01
000060    D11
000070    D21
000090    E11
000100    E21
------    F22
------    G22
------    H22
------    I22
------    J22
Exemple 3 : Sélection de données à partir de colonnes implicites masquées
Pour SÉLECTIONNER des données à partir de colonnes implicitement masquées, telles que ROWID et l'ID du document XML, recherchez les noms des colonnes dans SYSIBM.SYSCOLUMNS et spécifiez ces noms dans la liste SELECT. Par exemple, supposons que vous créiez et remplissiez le tableau suivant :
CREATE TABLE MEMBERS (MEMBERID INTEGER,
                      BIO 		 XML,
                      REPORT 	 XML,
                      RECOMMENDATIONS 	XML);

Db2 génère une colonne supplémentaire d'identifiant de document XML implicitement masquée. Pour récupérer les données de toutes les colonnes, y compris la colonne d'ID du document XML généré, recherchez d'abord le nom de la colonne générée dans SYSIBM.SYSCOLUMNS. Supposons que le nom soit DB2_GENERATED_DOCID_FOR_XML. Ensuite, précisez la déclaration suivante :

SELECT DB2_GENERATED_DOCID_FOR_XML, MEMBERID, BIO,
       REPORT, RECOMMENDATIONS FROM MEMBERS