SELECT ステートメントによるデータの取り出し
データを取得する最も簡単な方法は、SQL ステートメント SELECT を使用して結果表を指定する方法です。 取り出す列と行を指定できます。
始める前に
このセクションの例と同様の独自のSQLステートメントを開発し、SPUFIを使用して動的に実行することを検討してください。 チュートリアルについては、「レッスン 1.1: 対話形式でデータをクエリする」を参照してください。
Db2 command line processor または Db2 Query Management Facility (QMF) もご利用いただけます。
プロシージャー
結果表にデータを取り出すには、
例
- 例 1: SELECT * ですべての列を選択します。
- Db2 データを選択するために列名を知らなければなりません。 指定した表の選択行ごとにすべての列を取り出すことを示すには、SELECT 文節に
アスタリスク (*) を使用してください。 暗黙的な隠し列 (ROWID 列や XML 文書の ID 列など) は、SELECT * ステートメントの結果に含まれません。 これらの列の値を表示するには、列名を指定する必要があります。
次の SQL ステートメントは、部門表からすべての列を選択します。
SELECT * FROM DSN8D10.DEPT;結果表は、以下の出力のようになります。
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 --------WHERE 文節が指定されていないので、このステートメントは、すべての行のデータを取り出します。
結果表の MGRNO 列と LOCATION 列のダッシュは、値が NULL 値で あることを示します。
SELECT * は、動的 SQL およびビュー定義で使用する場合に最も適しています。 静的SQLでSELECT *を使用できますが、ホスト変数の互換性とパフォーマンスへの影響の可能性があるため、お勧めしません。 SELECT *が参照表に列を追加するとします。 その列の受信ホスト変数を定義しない場合、エラーが発生するか、追加列のデータが取得されない可能性があります。
アスタリスクの代わりに、静的SELECT ステートメントに列名をリストすると、SELECT * の発生可能問題を回避できます。 また、受け取りホスト変数と結果表中の列の対応関係を知ることもできます。
- 例 2: SELECT 列名 を使って、特定の列を選択します。
- 各列の名前を指定して、取り出す列 (複数の場合ある) を照会します。 1 つの SELECT ステートメントによって選択できるデータの列数は、1 列から
最大 750 列までです。 列はすべて、表の中での順序ではなく、アプリケーションで指定した順序に取り出されます。
たとえば、次のSQLステートメントは、部門表からMGRNO列とDEPTNO列のみを取得します。
SELECT MGRNO, DEPTNO FROM DSN8D10.DEPT;結果表は、以下の出力のようになります。
MGRNO DEPTNO ====== ====== 000010 A00 000020 B01 000030 C01 ------ D01 000050 E01 000060 D11 000070 D21 000090 E11 000100 E21 ------ F22 ------ G22 ------ H22 ------ I22 ------ J22 - 例 3: 暗黙の非表示列からデータを選択します。
- 暗黙的な隠し列 (ROWID や XML 文書 ID など) からデータを選択するには、SYSIBM.SYSCOLUMNS 内で列名を検索し、これらの名前を SELECT リストに指定します。 例えば、次の表を作成し、データを追加するとします。
CREATE TABLE MEMBERS (MEMBERID INTEGER, BIO XML, REPORT XML, RECOMMENDATIONS XML);Db2暗黙的な隠しXML文書 ID列1つ生成します。 生成された XML 文書 ID 列を含むすべての列のデータを取り出すには、まず SYSIBM.SYSCOLUMNS 内で生成された列の名前を検索します。 名前は DB2_GENERATED_DOCID_FOR_XML であるとします。 その後、次のステートメントを指定します。
SELECT DB2_GENERATED_DOCID_FOR_XML, MEMBERID, BIO, REPORT, RECOMMENDATIONS FROM MEMBERS