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 :
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.
SELECT * 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.
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