データベース db2 for i sql 解説書 - ibm...データ・タイプ間のキャスト .....107...

2058
IBM i バージョン 7.2 データベース DB2 for i SQL 解説書

Upload: others

Post on 25-Feb-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

  • IBM iバージョン 7.2

    データベースDB2 for i SQL 解説書

    ���

  • IBM iバージョン 7.2

    データベースDB2 for i SQL 解説書

    ���

  • 注意本書および本書で紹介する製品をご使用になる前に、 1993ページの『特記事項』に記載されている情報をお読みください。

    本製品およびオプションに付属の電源コードは、他の電気機器で使用しないでください。

    本書にはライセンス内部コードについての参照が含まれている場合があります。ライセンス内部コードは機械コードであり、IBM 機械コードのご使用条件の条項に基づいて使用権を許諾するものです。

    お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示されたりする場合があります。

     

    原典: IBM iVersion 7.2

    Database

    DB2 for i SQL Reference

    発行: 日本アイ・ビー・エム株式会社

    担当: トランスレーション・サービス・センター

    第1刷 2014.4

    © Copyright IBM Corporation 1998, 2013.

  • 目次SQL 解説書について . . . . . . . . . xi標準への準拠 . . . . . . . . . . . . . . xiSQL ステートメントの例に関する前提事項 . . . . xii構文図の見方 . . . . . . . . . . . . . . xii本書の規則 . . . . . . . . . . . . . . xvSQL アクセシビリティー . . . . . . . . . . xv

    「SQL 解説書」の PDF ファイル . . . xvii

    IBM i 7.2 の新機能 . . . . . . . . . xix

    第 1 章 概念 . . . . . . . . . . . . . 1リレーショナル・データベース . . . . . . . . 1構造化照会言語 (SQL) . . . . . . . . . . . 3スキーマ . . . . . . . . . . . . . . . . 6表 . . . . . . . . . . . . . . . . . . 7キー . . . . . . . . . . . . . . . . 8制約 . . . . . . . . . . . . . . . . 8固有制約 . . . . . . . . . . . . . . 8参照制約 . . . . . . . . . . . . . . 9表検査制約 . . . . . . . . . . . . 11

    索引 . . . . . . . . . . . . . . . . 12トリガー . . . . . . . . . . . . . . 13

    ビュー . . . . . . . . . . . . . . . . 15ユーザー定義タイプ . . . . . . . . . . . 16別名 . . . . . . . . . . . . . . . . . 16パッケージとアクセス・プラン . . . . . . . . 17ルーチン . . . . . . . . . . . . . . . 18シーケンス . . . . . . . . . . . . . . 20権限、特権、およびオブジェクト所有権 . . . . . 21カタログ . . . . . . . . . . . . . . . 24アプリケーション・プロセス、並行性、およびリカバリー . . . . . . . . . . . . . . . . 24ロック、コミット、およびロールバック . . . . 26作業単位 . . . . . . . . . . . . . . 27作業のロールバック . . . . . . . . . . 28スレッド . . . . . . . . . . . . . . 30

    分離レベル . . . . . . . . . . . . . . 31反復可能読み取り . . . . . . . . . . . 34読み取り固定 . . . . . . . . . . . . . 34カーソル固定 . . . . . . . . . . . . . 35非コミット読み取り . . . . . . . . . . 35コミット不可 . . . . . . . . . . . . . 35分離レベルの比較 . . . . . . . . . . . 36

    記憶構造 . . . . . . . . . . . . . . . 37文字変換 . . . . . . . . . . . . . . . 38文字セットとコード・ページ . . . . . . . 40コード化文字セットと CCSID . . . . . . . 42デフォルトの CCSID . . . . . . . . . . 42

    照合順序 . . . . . . . . . . . . . . . 43分散リレーショナル・データベース . . . . . . 46

    アプリケーション・サーバー . . . . . . . 47CONNECT (タイプ 1) と CONNECT (タイプ 2) 49リモート作業単位 . . . . . . . . . . . 49アプリケーション指向の分散作業単位 . . . . 51データ表現に関する考慮事項 . . . . . . . 53

    第 2 章 言語エレメント . . . . . . . . 55文字 . . . . . . . . . . . . . . . . . 55トークン . . . . . . . . . . . . . . . 56ID . . . . . . . . . . . . . . . . . 58

    SQL ID . . . . . . . . . . . . . . . 58システム ID . . . . . . . . . . . . . 59ホスト ID . . . . . . . . . . . . . . 59

    命名規則 . . . . . . . . . . . . . . . 60SQL パス . . . . . . . . . . . . . . 70非修飾オブジェクト名の修飾 . . . . . . . 70非修飾の別名、制約名、外部プログラム名、索引名、マスク名、ノード・グループ名、パッケージ名、許可名、シーケンス名、表名、トリガー名、ビュー名、および XSR オブジェクト名 70非修飾の関数、プロシージャー、特定名、タイプ、および変数 . . . . . . . . . . . 72

    SQL 名とシステム名: 特殊な考慮事項 . . . . 73別名 . . . . . . . . . . . . . . . . . 74権限 ID と権限名 . . . . . . . . . . . . 76プロシージャー解決 . . . . . . . . . . . 78データ・タイプ . . . . . . . . . . . . . 79

    NULL . . . . . . . . . . . . . . . 81数値 . . . . . . . . . . . . . . . . 82非正規化数とアンダーフロー . . . . . . 84

    文字ストリング . . . . . . . . . . . . 85文字コード化スキーム . . . . . . . . . . 86グラフィック・ストリング . . . . . . . . 87グラフィック・コード化スキーム . . . . . . 882 進ストリング . . . . . . . . . . . . 89ラージ・オブジェクト . . . . . . . . . . 90ストリングの使用に関する制限 . . . . . . 91

    日付/時刻の値 . . . . . . . . . . . . 92日付 . . . . . . . . . . . . . . . 92時刻 . . . . . . . . . . . . . . . 92タイム・スタンプ . . . . . . . . . . 93日時変数 . . . . . . . . . . . . . 93日付/時刻の値のストリング表記 . . . . . 93日付ストリング . . . . . . . . . . 94時刻ストリング . . . . . . . . . . 95タイム・スタンプ・ストリング . . . . . 97

    XML 値 . . . . . . . . . . . . . . 99データ・リンク値 . . . . . . . . . . . 100行 ID 値 . . . . . . . . . . . . . . 101ユーザー定義タイプ . . . . . . . . . . 102

    データ・タイプのプロモーション . . . . . . . 105

    © Copyright IBM Corp. 1998, 2013 iii

    ||

  • データ・タイプ間のキャスト . . . . . . . . 107割り当ておよび比較 . . . . . . . . . . . 111数値割り当て . . . . . . . . . . . . 112ストリング割り当て . . . . . . . . . . 115

    2 進ストリングの割り当て . . . . . . . 115文字ストリングとグラフィック・ストリングの割り当て . . . . . . . . . . . . 116

    日時割り当て . . . . . . . . . . . . 118XML の割り当て . . . . . . . . . . . 120データ・リンクの割り当て . . . . . . . . 121行 ID の割り当て . . . . . . . . . . . 122特殊タイプの割り当て . . . . . . . . . 122配列タイプの割り当て . . . . . . . . . 124LOB ロケーターへの割り当て . . . . . . . 124数値比較 . . . . . . . . . . . . . . 124ストリングの比較 . . . . . . . . . . . 126日付/時刻の比較 . . . . . . . . . . . 128XML 比較 . . . . . . . . . . . . . 129データ・リンクの比較 . . . . . . . . . 129行 ID の比較 . . . . . . . . . . . . 129特殊タイプの比較 . . . . . . . . . . . 129配列タイプの比較 . . . . . . . . . . . 130

    結果のデータ・タイプに関する規則 . . . . . . 131ストリングを結合する演算に適用される変換規則 137定数 . . . . . . . . . . . . . . . . 139整数定数 . . . . . . . . . . . . . . 13910 進定数 . . . . . . . . . . . . . 139浮動小数点定数 . . . . . . . . . . . . 13910 進浮動小数点定数 . . . . . . . . . . 140文字ストリング定数 . . . . . . . . . . 140グラフィック・ストリング定数 . . . . . . 1412 進ストリング定数 . . . . . . . . . . 143日付/時刻定数 . . . . . . . . . . . . 143小数点 . . . . . . . . . . . . . . . 144区切り文字 . . . . . . . . . . . . . 145

    特殊レジスター . . . . . . . . . . . . . 146CURRENT CLIENT_ACCTNG . . . . . . . 147CURRENT CLIENT_APPLNAME . . . . . . 147CURRENT CLIENT_PROGRAMID . . . . . 148CURRENT CLIENT_USERID . . . . . . . 148CURRENT CLIENT_WRKSTNNAME. . . . . 149CURRENT DATE . . . . . . . . . . . 149CURRENT DEBUG MODE . . . . . . . . 149CURRENT DECFLOAT ROUNDING MODE . . 150CURRENT DEGREE . . . . . . . . . . 151CURRENT IMPLICIT XMLPARSE OPTION . . 152CURRENT PATH . . . . . . . . . . . 153CURRENT SCHEMA . . . . . . . . . . 154CURRENT SERVER . . . . . . . . . . 154CURRENT TIME . . . . . . . . . . . 155CURRENT TIMESTAMP . . . . . . . . . 155CURRENT USER . . . . . . . . . . . 156CURRENT TIMEZONE . . . . . . . . . 156SESSION_USER . . . . . . . . . . . 156SYSTEM_USER. . . . . . . . . . . . 157USER . . . . . . . . . . . . . . . 157

    列名 . . . . . . . . . . . . . . . . 158修飾列名 . . . . . . . . . . . . . . 158相関名 . . . . . . . . . . . . . . . 158あいまいさを避けるための列名修飾子 . . . . 161表指定子 . . . . . . . . . . . . . 161未定義またはあいまいな参照の回避 . . . . 162

    相関参照内の列名修飾子 . . . . . . . . . 163相関参照における修飾されていない列名 . . . 164

    変数 . . . . . . . . . . . . . . . . 165グローバル変数 . . . . . . . . . . . . 165ホスト変数に対する参照 . . . . . . . . . 167動的 SQL での変数 . . . . . . . . . . 171LOB または XML 変数の参照. . . . . . . 171

    LOB または XML ロケーター変数の参照 172LOB または XML ファイル参照変数の参照 173

    XML 変数の参照 . . . . . . . . . . . 173ホスト構造 . . . . . . . . . . . . . 174ホスト構造配列 . . . . . . . . . . . . 176

    関数 . . . . . . . . . . . . . . . . 177関数のタイプ . . . . . . . . . . . . 177関数呼び出し . . . . . . . . . . . . 178関数解決 . . . . . . . . . . . . . . 180最適の判別 . . . . . . . . . . . . . 182最適に関する考慮事項 . . . . . . . . . 189

    式 . . . . . . . . . . . . . . . . . 191演算子を使用しない式 . . . . . . . . . 192算術演算子を使用する式 . . . . . . . . . 192

    2 つの整数オペランド . . . . . . . . 192整数と 10 進数オペランド . . . . . . . 1932 つの 10 進数オペランド . . . . . . . 193SQL での 10 進数演算 . . . . . . . . 193浮動小数点数オペランド . . . . . . . . 19410 進浮動小数点オペランド . . . . . . 194DECFLOAT の一般的な算術演算規則 . . . 195特殊タイプのオペランド . . . . . . . . 196

    連結演算子 . . . . . . . . . . . . . 197スカラー全選択 . . . . . . . . . . . . 199日付/時刻のオペランドと期間 . . . . . . . 200SQL における日付/時刻の算術演算 . . . . . 201日付の算術演算 . . . . . . . . . . . 202時刻の算術演算 . . . . . . . . . . . 204タイム・スタンプの算術演算 . . . . . . 205

    演算の優先順位 . . . . . . . . . . . . 206ARRAY コンストラクター . . . . . . . . 208ARRAY エレメントの指定 . . . . . . . . 209CASE 式 . . . . . . . . . . . . . . 210CAST の指定 . . . . . . . . . . . . 213OLAP の指定 . . . . . . . . . . . . 218ROW CHANGE 式 . . . . . . . . . . 222シーケンス参照 . . . . . . . . . . . . 223XMLCAST 指定 . . . . . . . . . . . 228

    述部 . . . . . . . . . . . . . . . . 230基本述部 . . . . . . . . . . . . . . 231多値比較述部 . . . . . . . . . . . . 233BETWEEN 述部 . . . . . . . . . . . 236DISTINCT 述部. . . . . . . . . . . . 237

    iv IBM i: DB2 for i SQL 解説書

    ||

    ||

  • EXISTS 述部 . . . . . . . . . . . . 239IN 述部 . . . . . . . . . . . . . . 240LIKE 述部 . . . . . . . . . . . . . 242NULL 述部 . . . . . . . . . . . . . 247トリガー・イベント述部 . . . . . . . . . 248

    検索条件 . . . . . . . . . . . . . . . 249

    第 3 章 組み込みグローバル変数 . . . 251CLIENT_HOST . . . . . . . . . . . . . 252CLIENT_IPADDR . . . . . . . . . . . . 253CLIENT_PORT . . . . . . . . . . . . . 254PACKAGE_NAME . . . . . . . . . . . . 255PACKAGE_SCHEMA . . . . . . . . . . . 256PACKAGE_VERSION . . . . . . . . . . . 257ROUTINE_SCHEMA . . . . . . . . . . . 258ROUTINE_SPECIFIC_NAME . . . . . . . . 259ROUTINE_TYPE . . . . . . . . . . . . 260

    第 4 章 組み込み関数 . . . . . . . . 261集約関数 . . . . . . . . . . . . . . . 271

    ARRAY_AGG . . . . . . . . . . . . 272AVG . . . . . . . . . . . . . . . 274COUNT . . . . . . . . . . . . . . 276COUNT_BIG. . . . . . . . . . . . . 277GROUPING . . . . . . . . . . . . . 278MAX . . . . . . . . . . . . . . . 280MIN . . . . . . . . . . . . . . . 282STDDEV_POP または STDDEV . . . . . . 284STDDEV_SAMP . . . . . . . . . . . 285SUM . . . . . . . . . . . . . . . 286VAR_POP または VARIANCE または VAR . . 287VARIANCE_SAMP または VAR_SAMP. . . . 288XMLAGG. . . . . . . . . . . . . . 289XMLGROUP . . . . . . . . . . . . . 291

    スカラー関数 . . . . . . . . . . . . . 294ABS . . . . . . . . . . . . . . . 295ACOS . . . . . . . . . . . . . . . 296ADD_MONTHS . . . . . . . . . . . . 297ANTILOG . . . . . . . . . . . . . 299ASCII . . . . . . . . . . . . . . . 300ASIN . . . . . . . . . . . . . . . 301ATAN . . . . . . . . . . . . . . . 302ATANH . . . . . . . . . . . . . . 303ATAN2 . . . . . . . . . . . . . . 304BIGINT . . . . . . . . . . . . . . 305BINARY . . . . . . . . . . . . . . 307BITAND、BITANDNOT、BITOR、BITXOR、および BITNOT . . . . . 308BIT_LENGTH . . . . . . . . . . . . 310BLOB . . . . . . . . . . . . . . . 311CARDINALITY . . . . . . . . . . . . 313CEILING . . . . . . . . . . . . . . 314CHAR . . . . . . . . . . . . . . . 316CHARACTER_LENGTH . . . . . . . . . 323CHR . . . . . . . . . . . . . . . 324CLOB . . . . . . . . . . . . . . . 325

    COALESCE . . . . . . . . . . . . . 331COMPARE_DECFLOAT . . . . . . . . . 332CONCAT . . . . . . . . . . . . . . 334CONTAINS . . . . . . . . . . . . . 335COS . . . . . . . . . . . . . . . 338COSH . . . . . . . . . . . . . . . 339COT . . . . . . . . . . . . . . . 340CURDATE . . . . . . . . . . . . . 341CURTIME . . . . . . . . . . . . . 342DATABASE . . . . . . . . . . . . . 343DATAPARTITIONNAME. . . . . . . . . 344DATAPARTITIONNUM . . . . . . . . . 345DATE . . . . . . . . . . . . . . . 346DAY . . . . . . . . . . . . . . . 348DAYNAME . . . . . . . . . . . . . 349DAYOFMONTH . . . . . . . . . . . 350DAYOFWEEK . . . . . . . . . . . . 351DAYOFWEEK_ISO . . . . . . . . . . 352DAYOFYEAR . . . . . . . . . . . . 353DAYS . . . . . . . . . . . . . . . 354DBCLOB . . . . . . . . . . . . . . 355DBPARTITIONNAME . . . . . . . . . . 362DBPARTITIONNUM . . . . . . . . . . 363DECFLOAT . . . . . . . . . . . . . 364DECFLOAT_SORTKEY . . . . . . . . . 366DECIMAL または DEC . . . . . . . . . 367DECRYPT_BIT、DECRYPT_BINARY、DECRYPT_CHAR、および DECRYPT_DB . . . 370DEGREES . . . . . . . . . . . . . 374DIFFERENCE . . . . . . . . . . . . 375DIGITS . . . . . . . . . . . . . . 376DLCOMMENT . . . . . . . . . . . . 377DLLINKTYPE . . . . . . . . . . . . 378DLURLCOMPLETE . . . . . . . . . . 379DLURLPATH . . . . . . . . . . . . 380DLURLPATHONLY . . . . . . . . . . 381DLURLSCHEME . . . . . . . . . . . 382DLURLSERVER . . . . . . . . . . . 383DLVALUE . . . . . . . . . . . . . 384DOUBLE_PRECISION または DOUBLE . . . 386ENCRYPT_AES . . . . . . . . . . . . 388ENCRYPT_RC2 . . . . . . . . . . . . 391ENCRYPT_TDES . . . . . . . . . . . 394EXP . . . . . . . . . . . . . . . 397EXTRACT . . . . . . . . . . . . . 398FLOAT . . . . . . . . . . . . . . 401FLOOR . . . . . . . . . . . . . . 402GENERATE_UNIQUE . . . . . . . . . . 403GET_BLOB_FROM_FILE. . . . . . . . . 405GET_CLOB_FROM_FILE. . . . . . . . . 406GET_DBCLOB_FROM_FILE . . . . . . . 407GET_XML_FILE . . . . . . . . . . . 408GETHINT. . . . . . . . . . . . . . 409GRAPHIC. . . . . . . . . . . . . . 410HASH . . . . . . . . . . . . . . . 416

    目次 v

    ||

    ||||||||||||||||||||

  • HASHED_VALUE . . . . . . . . . . . 417HEX . . . . . . . . . . . . . . . 418HOUR . . . . . . . . . . . . . . . 420IDENTITY_VAL_LOCAL. . . . . . . . . 421IFNULL . . . . . . . . . . . . . . 426INSERT . . . . . . . . . . . . . . 427INTEGER または INT . . . . . . . . . 430JULIAN_DAY . . . . . . . . . . . . 432LAND . . . . . . . . . . . . . . . 433LAST_DAY . . . . . . . . . . . . . 434LCASE . . . . . . . . . . . . . . 435LEFT . . . . . . . . . . . . . . . 436LENGTH . . . . . . . . . . . . . . 438LN . . . . . . . . . . . . . . . . 440LNOT . . . . . . . . . . . . . . . 441LOCATE . . . . . . . . . . . . . . 442LOG10. . . . . . . . . . . . . . . 444LOR . . . . . . . . . . . . . . . 445LOWER . . . . . . . . . . . . . . 446LTRIM . . . . . . . . . . . . . . 447MAX . . . . . . . . . . . . . . . 448MAX_CARDINALITY. . . . . . . . . . 449MICROSECOND . . . . . . . . . . . 450MIDNIGHT_SECONDS . . . . . . . . . 451MIN . . . . . . . . . . . . . . . 452MINUTE . . . . . . . . . . . . . . 453MOD . . . . . . . . . . . . . . . 454MONTH . . . . . . . . . . . . . . 456MONTHNAME . . . . . . . . . . . . 457MONTHS_BETWEEN . . . . . . . . . . 458MQREAD. . . . . . . . . . . . . . 460MQREADCLOB. . . . . . . . . . . . 462MQRECEIVE . . . . . . . . . . . . 464MQRECEIVECLOB . . . . . . . . . . 466MQSEND . . . . . . . . . . . . . . 468MULTIPLY_ALT . . . . . . . . . . . 470NEXT_DAY . . . . . . . . . . . . . 472NORMALIZE_DECFLOAT . . . . . . . . 474NOW . . . . . . . . . . . . . . . 475NULLIF . . . . . . . . . . . . . . 476OCTET_LENGTH . . . . . . . . . . . 477PI . . . . . . . . . . . . . . . . 478POSITION . . . . . . . . . . . . . 479POSSTR . . . . . . . . . . . . . . 481POWER . . . . . . . . . . . . . . 483QUANTIZE . . . . . . . . . . . . . 485QUARTER . . . . . . . . . . . . . 487RADIANS . . . . . . . . . . . . . 488RAISE_ERROR . . . . . . . . . . . . 489RAND . . . . . . . . . . . . . . . 490REAL . . . . . . . . . . . . . . . 491REPEAT . . . . . . . . . . . . . . 493REPLACE . . . . . . . . . . . . . 495RID. . . . . . . . . . . . . . . . 497RIGHT. . . . . . . . . . . . . . . 498ROUND . . . . . . . . . . . . . . 500

    ROUND_TIMESTAMP . . . . . . . . . 502ROWID . . . . . . . . . . . . . . 505RRN . . . . . . . . . . . . . . . 506RTRIM . . . . . . . . . . . . . . 507SCORE . . . . . . . . . . . . . . 509SECOND . . . . . . . . . . . . . . 512SIGN . . . . . . . . . . . . . . . 514SIN . . . . . . . . . . . . . . . . 515SINH . . . . . . . . . . . . . . . 516SMALLINT . . . . . . . . . . . . . 517SOUNDEX . . . . . . . . . . . . . 519SPACE . . . . . . . . . . . . . . 520SQRT . . . . . . . . . . . . . . . 521STRIP . . . . . . . . . . . . . . . 522SUBSTR . . . . . . . . . . . . . . 523SUBSTRING . . . . . . . . . . . . . 526TABLE_NAME . . . . . . . . . . . . 528TABLE_SCHEMA . . . . . . . . . . . 529TAN . . . . . . . . . . . . . . . 530TANH . . . . . . . . . . . . . . . 531TIME . . . . . . . . . . . . . . . 532TIMESTAMP . . . . . . . . . . . . 533TIMESTAMP_FORMAT . . . . . . . . . 536TIMESTAMP_ISO . . . . . . . . . . . 539TIMESTAMPDIFF . . . . . . . . . . . 540TOTALORDER . . . . . . . . . . . . 543TRANSLATE . . . . . . . . . . . . 544TRIM . . . . . . . . . . . . . . . 547TRIM_ARRAY . . . . . . . . . . . . 549TRUNCATE または TRUNC . . . . . . . 550TRUNC_TIMESTAMP. . . . . . . . . . 552UCASE . . . . . . . . . . . . . . 553UPPER . . . . . . . . . . . . . . 554VALUE . . . . . . . . . . . . . . 555VARBINARY . . . . . . . . . . . . 556VARCHAR . . . . . . . . . . . . . 557VARCHAR_FORMAT . . . . . . . . . . 563VARGRAPHIC . . . . . . . . . . . . 566VERIFY_GROUP_FOR_USER . . . . . . . 573WEEK . . . . . . . . . . . . . . . 575WEEK_ISO . . . . . . . . . . . . . 576WRAP . . . . . . . . . . . . . . . 577XMLATTRIBUTES. . . . . . . . . . . 579XMLCOMMENT . . . . . . . . . . . 581XMLCONCAT . . . . . . . . . . . . 582XMLDOCUMENT . . . . . . . . . . . 584XMLELEMENT . . . . . . . . . . . . 585XMLFOREST . . . . . . . . . . . . 589XMLNAMESPACES . . . . . . . . . . 592XMLPARSE . . . . . . . . . . . . . 595XMLPI . . . . . . . . . . . . . . 597XMLROW . . . . . . . . . . . . . 598XMLSERIALIZE . . . . . . . . . . . 600XMLTEXT . . . . . . . . . . . . . 603XMLVALIDATE . . . . . . . . . . . 604XOR . . . . . . . . . . . . . . . 609

    vi IBM i: DB2 for i SQL 解説書

    ||||

    ||

    ||

  • XSLTRANSFORM . . . . . . . . . . . 610YEAR . . . . . . . . . . . . . . . 614ZONED . . . . . . . . . . . . . . 615

    表関数 . . . . . . . . . . . . . . . . 618BASE_TABLE . . . . . . . . . . . . 619MQREADALL . . . . . . . . . . . . 621MQREADALLCLOB . . . . . . . . . . 623MQRECEIVEALL . . . . . . . . . . . 625MQRECEIVEALLCLOB . . . . . . . . . 628XMLTABLE . . . . . . . . . . . . . 631

    第 5 章 プロシージャー . . . . . . . 639CREATE_WRAPPED . . . . . . . . . . . 640XDBDECOMPXML . . . . . . . . . . . 642XSR_ADDSCHEMADOC . . . . . . . . . . 644XSR_COMPLETE . . . . . . . . . . . . 646XSR_REGISTER . . . . . . . . . . . . 648XSR_REMOVE . . . . . . . . . . . . . 650

    第 6 章 照会 . . . . . . . . . . . . 653権限 . . . . . . . . . . . . . . . . 653副選択 . . . . . . . . . . . . . . . . 654

    SELECT 文節 . . . . . . . . . . . . 655選択リストの表記法 . . . . . . . . . 655選択リストの適用 . . . . . . . . . . 656結果列の NULL 属性 . . . . . . . . . 658結果列の名前 . . . . . . . . . . . 658結果列のデータ・タイプ . . . . . . . . 658

    FROM 文節 . . . . . . . . . . . . . 660table-reference . . . . . . . . . . . 660結合表 . . . . . . . . . . . . . . 667

    階層照会 . . . . . . . . . . . . . . 670階層照会文節 . . . . . . . . . . . 671疑似列 . . . . . . . . . . . . . . 674CONNECT_BY_ROOT . . . . . . . . 675PRIOR . . . . . . . . . . . . . . 676SYS_CONNECT_BY_PATH . . . . . . . 678

    WHERE 文節 . . . . . . . . . . . . 680GROUP-BY 文節 . . . . . . . . . . . 681HAVING 文節 . . . . . . . . . . . . 695ORDER BY 文節 . . . . . . . . . . . 696FETCH FIRST 文節 . . . . . . . . . . 699副選択の例 . . . . . . . . . . . . . 700

    全選択 . . . . . . . . . . . . . . . . 702全選択の例 . . . . . . . . . . . . . 706

    選択ステートメント . . . . . . . . . . . 708共通表式 . . . . . . . . . . . . . . 709反復の例: 部品表 . . . . . . . . . . 712

    UPDATE 文節 . . . . . . . . . . . . 717READ-ONLY 文節 . . . . . . . . . . . 718OPTIMIZE 文節 . . . . . . . . . . . 719ISOLATION 文節 . . . . . . . . . . . 720concurrent-access-resolution-clause . . . . . . 722SELECT ステートメントの例 . . . . . . . 723

    第 7 章 ステートメント . . . . . . . 725SQL ステートメントの呼び出し方法. . . . . . 732アプリケーション・プログラムへのステートメントの組み込み . . . . . . . . . . . . 733動的な準備と実行 . . . . . . . . . . . 734select ステートメントの静的呼び出し . . . . 735select ステートメントの動的呼び出し . . . . 735対話式呼び出し . . . . . . . . . . . . 735

    SQL 診断情報 . . . . . . . . . . . . . 736ホスト言語アプリケーションにおけるエラー条件と警告条件の検出と処理 . . . . . . . . . . 736SQL のコメント . . . . . . . . . . . . 737ALLOCATE CURSOR . . . . . . . . . . 739ALLOCATE DESCRIPTOR . . . . . . . . . 741ALTER FUNCTION (外部スカラー) . . . . . . 743ALTER FUNCTION (外部表) . . . . . . . . 749ALTER FUNCTION (SQL スカラー). . . . . . 756ALTER FUNCTION (SQL 表) . . . . . . . . 765ALTER MASK . . . . . . . . . . . . . 774ALTER PERMISSION. . . . . . . . . . . 776ALTER PROCEDURE (外部) . . . . . . . . 778ALTER PROCEDURE (SQL) . . . . . . . . 784ALTER SEQUENCE . . . . . . . . . . . 795ALTER TABLE . . . . . . . . . . . . . 801ALTER TRIGGER . . . . . . . . . . . . 851ASSOCIATE LOCATORS . . . . . . . . . 854BEGIN DECLARE SECTION . . . . . . . . 860CALL . . . . . . . . . . . . . . . . 862CLOSE . . . . . . . . . . . . . . . 872COMMENT . . . . . . . . . . . . . . 874COMMIT . . . . . . . . . . . . . . . 885コンパウンド (動的) . . . . . . . . . . . 889CONNECT (タイプ 1) . . . . . . . . . . 900CONNECT (タイプ 2) . . . . . . . . . . 906CREATE ALIAS . . . . . . . . . . . . 912CREATE FUNCTION . . . . . . . . . . . 917CREATE FUNCTION (外部スカラー) . . . . . 923CREATE FUNCTION (外部表) . . . . . . . . 946CREATE FUNCTION (ソース派生) . . . . . . 967CREATE FUNCTION (SQL スカラー) . . . . . 980CREATE FUNCTION (SQL 表) . . . . . . . 995CREATE INDEX . . . . . . . . . . . . 1008CREATE MASK . . . . . . . . . . . . 1016CREATE PERMISSION . . . . . . . . . . 1023CREATE PROCEDURE . . . . . . . . . . 1028CREATE PROCEDURE (外部) . . . . . . . 1030CREATE PROCEDURE (SQL) . . . . . . . 1049CREATE SCHEMA . . . . . . . . . . . 1065CREATE SEQUENCE . . . . . . . . . . 1071CREATE TABLE . . . . . . . . . . . . 1079CREATE TRIGGER . . . . . . . . . . . 1133CREATE TYPE . . . . . . . . . . . . 1152CREATE TYPE (配列) . . . . . . . . . . 1153CREATE TYPE (特殊) . . . . . . . . . . 1158CREATE VARIABLE . . . . . . . . . . 1166CREATE VIEW . . . . . . . . . . . . 1172

    目次 vii

    ||

    ||

    ||

    ||||||||||||

    ||||

    ||

    ||

    ||||

    ||

  • DEALLOCATE DESCRIPTOR. . . . . . . . 1182DECLARE CURSOR . . . . . . . . . . . 1183DECLARE GLOBAL TEMPORARY TABLE . . . 1194DECLARE PROCEDURE . . . . . . . . . 1212DECLARE STATEMENT . . . . . . . . . 1223DECLARE VARIABLE . . . . . . . . . . 1225DELETE . . . . . . . . . . . . . . . 1228DESCRIBE . . . . . . . . . . . . . . 1235DESCRIBE CURSOR . . . . . . . . . . 1241DESCRIBE INPUT . . . . . . . . . . . 1244DESCRIBE PROCEDURE . . . . . . . . . 1248DESCRIBE TABLE . . . . . . . . . . . 1255DISCONNECT . . . . . . . . . . . . . 1260DROP . . . . . . . . . . . . . . . 1263END DECLARE SECTION. . . . . . . . . 1279EXECUTE . . . . . . . . . . . . . . 1280EXECUTE IMMEDIATE . . . . . . . . . 1285FETCH . . . . . . . . . . . . . . . 1288FREE LOCATOR . . . . . . . . . . . . 1296GET DESCRIPTOR . . . . . . . . . . . 1297GET DIAGNOSTICS . . . . . . . . . . . 1310GRANT (関数特権またはプロシージャー特権) 1337GRANT (パッケージ特権) . . . . . . . . . 1346GRANT (シーケンス特権) . . . . . . . . . 1349GRANT (表またはビューの特権) . . . . . . 1352GRANT (タイプ特権) . . . . . . . . . . 1359GRANT (変数特権) . . . . . . . . . . . 1362GRANT (XML スキーマ特権) . . . . . . . 1365HOLD LOCATOR . . . . . . . . . . . 1368INCLUDE . . . . . . . . . . . . . . 1370INSERT . . . . . . . . . . . . . . . 1372LABEL . . . . . . . . . . . . . . . 1384LOCK TABLE . . . . . . . . . . . . . 1394MERGE . . . . . . . . . . . . . . . 1396OPEN . . . . . . . . . . . . . . . 1410PREPARE . . . . . . . . . . . . . . 1417REFRESH TABLE . . . . . . . . . . . 1435RELEASE (接続) . . . . . . . . . . . . 1437RELEASE SAVEPOINT . . . . . . . . . . 1440RENAME . . . . . . . . . . . . . . 1441REVOKE (関数特権またはプロシージャー特権) 1444REVOKE (パッケージ特権) . . . . . . . . 1452REVOKE (シーケンス特権) . . . . . . . . 1455REVOKE (表またはビューの特権) . . . . . . 1457REVOKE (タイプ特権) . . . . . . . . . . 1461REVOKE (変数特権). . . . . . . . . . . 1464REVOKE (XML スキーマ特権) . . . . . . . 1467ROLLBACK . . . . . . . . . . . . . 1470SAVEPOINT . . . . . . . . . . . . . 1475SELECT . . . . . . . . . . . . . . . 1478SELECT INTO. . . . . . . . . . . . . 1479SET CONNECTION . . . . . . . . . . . 1482SET CURRENT DEBUG MODE . . . . . . . 1486SET CURRENT DECFLOAT ROUNDING MODE 1488SET CURRENT DEGREE . . . . . . . . . 1491SET CURRENT IMPLICIT XMLPARSE OPTION 1494

    SET DESCRIPTOR . . . . . . . . . . . 1496SET ENCRYPTION PASSWORD. . . . . . . 1501SET OPTION . . . . . . . . . . . . . 1504SET PATH . . . . . . . . . . . . . . 1525SET RESULT SETS . . . . . . . . . . . 1529SET SCHEMA . . . . . . . . . . . . . 1532SET SESSION AUTHORIZATION . . . . . . 1535SET TRANSACTION . . . . . . . . . . 1538SET 遷移変数 . . . . . . . . . . . . . 1542SET 変数 . . . . . . . . . . . . . . 1544SIGNAL . . . . . . . . . . . . . . . 1547TRANSFER OWNERSHIP . . . . . . . . . 1551TRUNCATE . . . . . . . . . . . . . 1554UPDATE . . . . . . . . . . . . . . 1557VALUES . . . . . . . . . . . . . . 1568VALUES INTO . . . . . . . . . . . . 1570WHENEVER . . . . . . . . . . . . . 1573

    第 8 章 SQL 制御ステートメント 1575SQL パラメーターおよび変数の参照 . . . . . 1577SQL 条件名の参照 . . . . . . . . . . . 1579SQL カーソル名の参照 . . . . . . . . . . 1580SQL ラベルの参照 . . . . . . . . . . . 1581ネストされた複合ステートメントでの名前のスコーピングの要約 . . . . . . . . . . . . 1582SQL プロシージャー・ステートメント . . . . 1583割り当てステートメント . . . . . . . . . 1587CALL ステートメント . . . . . . . . . . 1591ケース (CASE) ステートメント . . . . . . . 1593複合 (compound) ステートメント . . . . . . 1595FOR ステートメント . . . . . . . . . . 1606GET DIAGNOSTICS ステートメント . . . . . 1608GOTO ステートメント . . . . . . . . . . 1616IF ステートメント . . . . . . . . . . . 1618ITERATE ステートメント . . . . . . . . . 1620終了 (LEAVE) ステートメント . . . . . . . 1622ループ (LOOP) ステートメント . . . . . . . 1624反復 (REPEAT) ステートメント . . . . . . . 1626再通知 (RESIGNAL) ステートメント . . . . . 1628戻り (RETURN) ステートメント . . . . . . 1633通知 (SIGNAL) ステートメント . . . . . . . 1636WHILE ステートメント . . . . . . . . . 1641

    付録 A. SQL の制約 . . . . . . . . 1643

    付録 B. SQL ステートメントの特性 1651SQL ステートメントで許されるアクション . . . 1652ルーチンで使用する SQL ステートメントのデータ・アクセスの種別 . . . . . . . . . . . 1655分散リレーショナル・データベースの使用に関する考慮事項 . . . . . . . . . . . . . . 1658

    CONNECT (タイプ 1) と CONNECT (タイプ2) の相違点 . . . . . . . . . . . . 1661

    付録 C. SQLCA (SQL 連絡域) . . . . 1663フィールドの説明 . . . . . . . . . . . 1663

    viii IBM i: DB2 for i SQL 解説書

    ||||

  • INCLUDE SQLCA の宣言 . . . . . . . . . 1669

    付録 D. SQLDA (SQL 記述子域) 1673SQLDA ヘッダーのフィールドの説明 . . . . . 1675SQLVAR のオカレンスのフィールドの説明 . . . 1678SQLTYPE と SQLLEN . . . . . . . . . . 1682SQLDATA または SQLNAME 内の CCSID の値 1685認識されずサポートされない SQLTYPES . . . . 1685INCLUDE SQLDA の宣言 . . . . . . . . . 1686

    付録 E. CCSID の値 . . . . . . . . 1691

    付録 F. DB2 for i のカタログ・ビュー . . . . . . . . . . . . . . . . 1709IBM i のカタログ表およびビュー . . . . . . 1713

    SYSCATALOGS . . . . . . . . . . . 1715SYSCHKCST . . . . . . . . . . . . 1716SYSCOLAUTH . . . . . . . . . . . 1717SYSCOLUMNS . . . . . . . . . . . 1718SYSCOLUMNS2 . . . . . . . . . . . 1726SYSCOLUMNSTAT . . . . . . . . . . 1736SYSCONTROLS . . . . . . . . . . . 1739SYSCONTROLSDEP . . . . . . . . . . 1741SYSCST . . . . . . . . . . . . . . 1742SYSCSTCOL . . . . . . . . . . . . 1744SYSCSTDEP . . . . . . . . . . . . 1745SYSFIELDS. . . . . . . . . . . . . 1746SYSFUNCS . . . . . . . . . . . . . 1751SYSINDEXES . . . . . . . . . . . . 1756SYSINDEXSTAT . . . . . . . . . . . 1758SYSJARCONTENTS . . . . . . . . . . 1764SYSJAROBJECTS. . . . . . . . . . . 1765SYSKEYCST . . . . . . . . . . . . 1766SYSKEYS . . . . . . . . . . . . . 1767SYSMQTSTAT. . . . . . . . . . . . 1768SYSPACKAGE. . . . . . . . . . . . 1772SYSPACKAGEAUTH . . . . . . . . . 1774SYSPACKAGESTAT . . . . . . . . . . 1775SYSPARMS. . . . . . . . . . . . . 1781SYSPARTITIONDISK . . . . . . . . . 1785SYSPARTITIONINDEXDISK . . . . . . . 1787SYSPARTITIONINDEXES . . . . . . . . 1790SYSPARTITIONINDEXSTAT . . . . . . . 1797SYSPARTITIONMQTS . . . . . . . . . 1802SYSPARTITIONSTAT . . . . . . . . . 1806SYSPROCS . . . . . . . . . . . . . 1810SYSPROGRAMSTAT . . . . . . . . . 1814SYSREFCST . . . . . . . . . . . . 1825SYSROUTINEAUTH . . . . . . . . . . 1826SYSROUTINEDEP . . . . . . . . . . 1827SYSROUTINES . . . . . . . . . . . 1829SYSSCHEMAAUTH . . . . . . . . . . 1836SYSSCHEMAS. . . . . . . . . . . . 1837SYSSEQUENCEAUTH . . . . . . . . . 1838SYSSEQUENCES . . . . . . . . . . . 1839SYSTABAUTH . . . . . . . . . . . 1841

    SYSTABLEDEP . . . . . . . . . . . 1842SYSTABLEINDEXSTAT . . . . . . . . 1843SYSTABLES . . . . . . . . . . . . 1849SYSTABLESTAT . . . . . . . . . . . 1852SYSTRIGCOL . . . . . . . . . . . . 1855SYSTRIGDEP . . . . . . . . . . . . 1856SYSTRIGGERS . . . . . . . . . . . 1857SYSTRIGUPD . . . . . . . . . . . . 1861SYSTYPES . . . . . . . . . . . . . 1862SYSUDTAUTH . . . . . . . . . . . 1868SYSVARIABLEAUTH . . . . . . . . . 1869SYSVARIABLEDEP . . . . . . . . . . 1870SYSVARIABLES . . . . . . . . . . . 1871SYSVIEWDEP . . . . . . . . . . . . 1877SYSVIEWS . . . . . . . . . . . . . 1879SYSXSROBJECTAUTH . . . . . . . . . 1881XSRANNOTATIONINFO . . . . . . . . 1882XSROBJECTCOMPONENTS . . . . . . . 1883XSROBJECTHIERARCHIES . . . . . . . 1884XSROBJECTS . . . . . . . . . . . . 1885

    ODBC および JDBC のカタログ・ビュー . . . 1886SQLCOLPRIVILEGES . . . . . . . . . 1887SQLCOLUMNS . . . . . . . . . . . 1888SQLFOREIGNKEYS . . . . . . . . . . 1895SQLFUNCTIONCOLS . . . . . . . . . 1896SQLFUNCTIONS . . . . . . . . . . . 1901SQLPRIMARYKEYS . . . . . . . . . . 1902SQLPROCEDURECOLS . . . . . . . . . 1903SQLPROCEDURES . . . . . . . . . . 1908SQLSCHEMAS . . . . . . . . . . . 1909SQLSPECIALCOLUMNS . . . . . . . . 1910SQLSTATISTICS . . . . . . . . . . . 1914SQLTABLEPRIVILEGES . . . . . . . . 1915SQLTABLES . . . . . . . . . . . . 1916SQLTYPEINFO . . . . . . . . . . . 1917SQLUDTS . . . . . . . . . . . . . 1924

    ANS および ISO のカタログ・ビュー . . . . . 1927権限 . . . . . . . . . . . . . . . 1928CHARACTER_SETS . . . . . . . . . . 1929CHECK_CONSTRAINTS . . . . . . . . 1930COLUMN_PRIVILEGES. . . . . . . . . 1931COLUMNS . . . . . . . . . . . . . 1932INFORMATION_SCHEMA_CATALOG_NAME 1937PARAMETERS . . . . . . . . . . . 1938REFERENTIAL_CONSTRAINTS . . . . . . 1942ROUTINES . . . . . . . . . . . . . 1943ROUTINE_PRIVILEGES . . . . . . . . 1952SCHEMATA . . . . . . . . . . . . 1953SEQUENCES . . . . . . . . . . . . 1954SQL_FEATURES . . . . . . . . . . . 1955SQL_LANGUAGES . . . . . . . . . . 1956SQL_SIZING . . . . . . . . . . . . 1957TABLE_CONSTRAINTS . . . . . . . . 1958TABLE_PRIVILEGES . . . . . . . . . 1959TABLES . . . . . . . . . . . . . . 1960UDT_PRIVILEGES . . . . . . . . . . 1961

    目次 ix

    ||

    ||||

    ||

  • USAGE_PRIVILEGES . . . . . . . . . 1962USER_DEFINED_TYPES . . . . . . . . 1963VARIABLE_PRIVILEGES . . . . . . . . 1967VIEWS . . . . . . . . . . . . . . 1968

    付録 G. テキスト検索引数の構文 . . . 1969例: 単純なテキスト検索 . . . . . . . . . 1971拡張テキスト検索演算子 . . . . . . . . . 1972例: CONTAINS 関数と SCORE 関数の使用 . . . 1973XML テキスト検索 . . . . . . . . . . . 1975

    XML テキスト検索の構文 . . . . . . . . 1975例: XPath テキスト検索 . . . . . . . . 1977

    テキスト検索の言語オプション . . . . . . . 1979

    付録 H. 用語の差異 . . . . . . . . 1981

    付録 I. 予約済みスキーマ名と予約語 1983予約済みスキーマ名 . . . . . . . . . . . 1983

    予約語 . . . . . . . . . . . . . . . 1984

    付録 J. 関連情報. . . . . . . . . . 1989

    特記事項 . . . . . . . . . . . . . 1993プログラミング・インターフェース情報 . . . . 1995商標 . . . . . . . . . . . . . . . . 1995使用条件 . . . . . . . . . . . . . . 1995

    索引 . . . . . . . . . . . . . . . 1997

    x IBM i: DB2 for i SQL 解説書

  • SQL 解説書について

    本書では、DB2® for IBM® i でサポートされている構造化照会言語 (SQL) の内容を明示しています。本書には、システムの管理、データベースの管理、アプリケーション・プログラミング、および操作のタスクに関する参照情報が記載されています。また、システムで使用する SQL ステートメントそれぞれについて、その構文、使用上の注意、キーワード、および例を示しています。

    標準への準拠DB2 for i 7.2 は、以下の IBM および業界の SQL 標準に準拠しています。

    v ISO (国際標準化機構) 9075: 2011、データベース言語 SQL - コアv ISO (国際標準化機構) 9075-3: 2008、データベース言語 SQL - 第 3 部: 呼び出しレベル・インターフェース (SQL/CLI)

    v ISO (国際標準化機構) 9075-4: 2011、データベース言語 SQL - 第 4 部: 永続的保管モジュール (SQL/PSM)

    v ISO (国際標準化機構) 9075-14: 2011、データベース言語 SQL - 第 14 部: XML関連仕様 (SQL/XML)

    v ANSI (米国規格協会) X3.135-2011、データベース言語 SQL - コアv ANSI (米国規格協会) X3.135–3: 2008、データベース言語 SQL - 第 3 部: 呼び出しレベル・インターフェース (SQL/CLI)

    v ANSI (米国規格協会) X3.135–4: 2011、データベース言語 SQL - 第 4 部: 永続格納モジュール (SQL/PSM)

    v XML スキーマ (http://www.w3.org/XML/Schema)

    標準を厳守するために、標準オプションを使用するようにしてください。標準オプションは、以下のインターフェースを使用して指定できます。

    表 1. 標準オプション・インターフェース

    SQL インターフェース 指定

    組み込み SQL SQL プログラム作成 (CRTSQLxxx) コマンドのSQLCURRULE(*STD) パラメーター。 SET OPTIONステートメントを使用して、SQLCURRULE 値を設定することもできます。(CRTSQLxxx コマンドについて詳しくは、「組み込みSQL プログラミング」を参照してください。)

    SQL ステートメント実行 SQL ステートメント実行 (RUNSQLSTM) コマンドのSQLCURRULE(*STD) パラメーター。(RUNSQLSTM コマンドの詳細については、「SQL プログラミング」を参照。)

    サーバー上の呼び出しレベル・インターフェース (CLI)

    SQL_ATTR_HEX_LITERALS 接続属性(CLI について詳しくは、「SQL 呼び出しレベル・インターフェース (ODBC)」を参照してください。)

    © Copyright IBM Corp. 1998, 2013 xi

  • 表 1. 標準オプション・インターフェース (続き)

    SQL インターフェース 指定

    IBM IBM Developer Kit for Java™

    を使用したサーバーの JDBC または SQLJ

    16 進数変換接続プロパティー・オブジェクト(JDBC および SQLJ について詳しくは、「IBMDeveloper Kit for Java」を参照してください。)

    IBM i Access Family ODBC ドライバーを使用したクライアントのODBC

    ODBC セットアップにおける 16 進パーサー・オプション(ODBC の詳細については、「IBM i Access」を参照。)

    IBM i Access Family OLE DB

    Provider を使用したクライアントのOLE DB

    16 進パーサー・オプション接続オブジェクト・プロパティー(OLE DB の詳細については、「IBM i Access」を参照。)

    IBM i Access FamilyADO .NET プロバイダーを使用しているクライアントの ADO .NET

    接続オブジェクト・プロパティーの HexParserOption。(ADO .NET の詳細については、「IBM i Access」を参照。)

    IBM Toolbox for Java を使用したクライアントの JDBC

    JDBC セットアップ内で SQL 16 進定数をバイナリー・データとして解釈(JDBC の詳細については、「IBM i Access」を参照。)(IBM Toolbox for Java について詳しくは、「IBMToolbox for Java」を参照してください。)

    SQL ステートメントの例に関する前提事項本書に示す SQL ステートメントの例では、以下の事項を前提としています。

    v SQL のキーワードは、太字で示されています。v 例で使用されている表名は、「SQL プログラミング」トピック集に示されているサンプル表です。この付録に示されていない表名は、ユーザーが作成するスキーマを作成する必要があります。ユーザー独自のスキーマで次の SQL ステートメントを発行することにより、1 組のサンプル表を作成できます。

    CALL QSYS.CREATE_SQL_SAMPLE (’ユーザー作成のスキーマ名’)

    v SQL の命名規則を使用しています。v COBOL の例では、(COBOL ではデフォルトではありませんが)、プリコンパイラー・オプションの APOST と APOSTSQL を前提としています。 SQL およびホスト言語のステートメント内の文字ストリング定数は、アポストロフィ (') で区切られています。

    v 照合順序 *HEX を使用しています。

    これらの前提事項と異なる例では、必ずその旨を明記しています。

    構文図の見方本書で使用される構文図には、以下の規則が適用されます。

    xii IBM i: DB2 for i SQL 解説書

  • v 構文図は、直線で示される経路にしたがって、左から右、上から下の方向に読んでください。

    記号 ��─── は、構文図の始まりを示します。

    記号 ───� は、構文が次の行に続くことを示します。

    記号 �─── は、構文が前の行から続いていることを示します。

    記号 ───�� は、構文図の終わりを示します。

    構文単位を示す図は、記号 |─── で始まり、記号 ───| で終わります。

    v 必須項目は、次のように水平方向の線 (メインパス) 上に示します。

    �� 必須項目 ��

    v 任意指定項目は、次のようにメインパスの下に示します。

    �� 必須項目オプション項目

    ��

    メインパスより上に示される項目は、単に読みやすさのために使用されるオプション項目であり、ステートメントの実行には影響を与えません。

    �� 必須項目オプション項目

    ��

    v 複数の項目からユーザーが選択できる場合は、それらの項目を縦方向に並べて示します。

    項目の中から必ずどれか 1 つを選択しなければならない場合は、縦方向に並んでいる選択項目のうちの 1 つをメインパス上に示します。

    �� 必須項目 必須選択項目必須選択項目

    ��

    項目を選択しても選択しなくてもよい場合は、縦方向に並んでいる選択項目をすべてメインパスの下に示します。

    �� 必須項目オプション選択項目オプション選択項目

    ��

    項目の中にデフォルトの選択項目がある場合は、その選択項目をメインパスの上に示し、残りの選択項目をメインパスの下に示します。

    �� 必須項目デフォルト選択項目

    オプション選択項目オプション選択項目

    ��

    SQL 解説書について xiii

  • 指定されていないオプション項目にデフォルトがある場合、デフォルトはメインパスの上に示します。

    �� 必須項目デフォルト選択項目

    オプション選択項目 必須選択項目必須選択項目

    オプション選択項目

    ��

    v メインパスの上を通って左に戻る矢印は、反復可能な項目を示します。

    �� 必須項目 � 反復可能項目 ��

    反復可能を示す矢印にコンマが入っている場合は、反復可能な項目を指定するときに、項目相互間をコンマで区切る必要があります。

    �� 必須項目 �

    ,

    反復可能項目 ��

    項目群の上にある反復可能を示す矢印は、その項目群にある項目を反復して指定できることを示します。

    v キーワードは大文字で示されます (例: FROM)。キーワードは、構文図に示されているとおりのつづりで正確に入力する必要があります。変数は小文字で現れます(例えば、列名)。これらはユーザーが指定する名前または値を表しています。

    v 構文図に句読記号、括弧、算術演算子、またはその他の記号が示されている場合には、それらを構文の一部として入力しなければなりません。

    v 構文図には、優先キーワードまたは標準キーワードのみが含まれています。標準キーワードに加えて、標準外の同義語もサポートされている場合、そのような標準外同義語の説明は、構文図の中でなく、注のセクションで扱っています。最大の移植性を確保するためには、優先キーワードまたは標準キーワードを使用してください。

    v 1 つの変数が構文のより大きなフラグメントを表すこともあります。例えば以下の図で、変数 parameter-block は parameter-block とラベル付けされた構文フラグメントを表しています。

    �� 必須項目 parameter-block ��

    parameter-block:

    parameter1parameter2 parameter3

    parameter4

    xiv IBM i: DB2 for i SQL 解説書

  • 本書の規則このセクションでは、本書全体で使用されるいくつかの規則を示します。

    強調表示の規則

    太字 例の中で使用される SQL キーワードを、そのキーワードに関連した説明を導入するときに示します。

    イタリック 以下のいずれかを示します。

    v 構文図の項目を表す変数。v 新しい用語の紹介。v 別の情報源の参照。

    混合データの値の記述規則

    混合データの値を例の中で示す場合は、以下のような規則が適用されています。

    混合データの値の記述規則混合データの値の記述規則は以下のとおりです。X' 0E' によって表されるシフトアウト文字、 X' 0F' によって表されるシフトイン文字、 sbcs-string によって表される 1 バイト文字、 dbcs-string によって表される 2 バイト文字、 EBCDIC X' 427Dによって表される DBCS のアポストロフィ、および EBCDIC X' 42C7 によって表される DBCS の G。

    Unicode データを記述するための規則特定の Unicode UTF-16 コード・ポイントを参照する場合は、U+n という形式でコード・ポイントを記述できます (n は、4 桁から 6 桁の 16 進数字です)。コード・ポイントの 16 進数字の桁数が 4 桁より少ない場合を除き、先行ゼロは省略されます。例えば、以下の値は、UTF-16 コード・ポイントの有効な表記です。

    U+00001 U+0012 U+0123 U+1234 U+12345 U+123456

    SQL アクセシビリティーIBM では、身体に障害のある方々にとってアクセスしやすいインターフェースおよびドキュメンテーションを提供することをコミットしています。

    SQL 解説書について xv

  • IBM のアクセシビリティー・サポートに関する一般情報については、

    http://www.ibm.com/able の Accessibility Center を参照してください。

    SQL アクセシビリティー・サポートは、次の 2 つの主要なカテゴリーに分かれています。

    v System i® ナビゲーターは、IBM i オペレーティング・システムと DB2 for i のグラフィカル・ユーザー・インターフェースです。 Windows のグラフィカル・ユーザー・インターフェースでサポートされるアクセシビリティー機能については、Windows のヘルプの索引から「アクセシビリティー」を参照してください。

    v オンライン・ドキュメンテーション、オンライン・ヘルプ、およびプロンプト形式の SQL インターフェースには、Windows リーダー・プログラム (IBM ホームページ・リーダーなど) を使用してアクセスすることができます。 IBM ホームページ・リーダーおよびその他のツールについて詳しくは、Accessibility Center

    を参照してください。

    IBM ホームページ・リーダーを使用すると、本書に収めてあるすべての本文、SQLInformation Center に収めたすべての記事、およびすべての SQL メッセージにアクセスすることができます。ただし、SQL の構文図は、性質が複雑なため、リーダーではスキップされます。使い勝手に応じて選択できる方法が、このほかにも 2 つあります。

    v 対話式 SQL および Query Manager

    対話式 SQL および Query Manager は、SQL ステートメントに関するプロンプトを提供する従来型のファイル・インターフェースです。これらの機能は、IBMDB2 Query Manager and SQL Development Kit for i に組み込まれているものです。対話式 SQL と Query Manager の詳細については、『SQLプログラミング』

    と「Query マネージャーの使用」 を参照してください。

    v SQL 支援

    SQL 支援は、SQL ステートメントへの指示インターフェースを提供するグラフィカル・ユーザー・インターフェースです。これは System i ナビゲーターの中の一機能です。 詳しくは、System i ナビゲーターのオンライン・ヘルプおよびInformation Center を参照してください。

    SQL アクセシビリティー

    xvi IBM i: DB2 for i SQL 解説書

    http://www.ibm.com/ablehttp://www.ibm.com/ablehttp://pic.dhe.ibm.com/infocenter/iseries/v6r1m0/topic/rzatc/sc415212.pdf

  • 「SQL 解説書」の PDF ファイル

    これを使用して、この情報の PDF を表示および印刷します。

    本書の PDF 版を表示またはダウンロードするには、「SQL 解説書」を選択します。

    PDF ファイルの保存

    表示または印刷のために PDF をワークステーションに保存するには、以下のようにします。

    1. ブラウザーで PDF リンクを右クリックする。

    2. PDF をローカルに保存するオプションをクリックする。

    3. PDF を保存したいディレクトリーに進む。

    4. 「保存」をクリックする。

    Adobe Reader のダウンロード

    これらの PDF を表示または印刷するには、Adobe Reader がご使用のシステムにインストールされている必要があります。このアプリケーションは、 Adobe Web サ

    イト (http://get.adobe.com/reader/) から無償でダウンロードできます。

    © Copyright IBM Corp. 1998, 2013 xvii

    http://get.adobe.com/reader/http://get.adobe.com/reader/

  • xviii IBM i: DB2 for i SQL 解説書

  • IBM i 7.2 の新機能

    このトピックでは、IBM i 7.2 のトピック集に加えられた変更点を中心に説明します。

    本書で説明している主要な新機能には、以下のものが含まれます。

    v システム命名でオブジェクトの修飾にピリオド区切り記号が許可されるv リモート RDB から SELECT を実行するための INSERT および CREATE

    TABLE AS のサポート

    v 3 部構成の名前を使用して RDB 別名を直接 SQL ステートメント内で指定できる

    v 表に対する行アクセス制御および列アクセス制御v タイム・スタンプ・データ・タイプの精度の向上v キャスト規則を使用した関数解決v 多数の日時スカラー関数の機能強化v XMLTABLE 表関数v 階層照会の CONNECT BYv 動的複合ステートメントv CREATE TABLE、CREATE VIEW、CREATE INDEX、および DECLARE

    GLOBAL TEMPORARY TABLE のシステム名

    v 表および索引の KEEP IN MEMORYv チェック制約の VIOLATION 節v CREATE TABLE AS および CREATE TABLE LIKE の参照フィールド

    (REFFLD) 生成

    v CREATE TRIGGER のプログラム名v 複数イベント・トリガーv PREPARE および EXECUTE IMMEDIATE での式v TRUNCATE ステートメントv 表、ビュー、および索引に対する TRANSFER OWNERSHIP ステートメントv GRANT および REVOKE ステートメントでの USER および GROUPv 組み込みグローバル変数v プロシージャー、関数、およびトリガーのステートメント・テキストの難読化v 関数およびプロシージャーのパラメーターのデフォルト値v 関数およびプロシージャーの呼び出しでの名前付きパラメーターv SQL スカラー関数での配列のサポートv 自律型プロシージャーv SQL ルーチン内の定数v SQL スカラー関数用の統一デバッガーのサポートv 索引の最大サイズが 1.7 テラバイトに増やされた

    © Copyright IBM Corp. 1998, 2013 xix

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

  • 新規情報または変更情報の見分け方

    技術上の変更が加えられた場所を見分けるのに役立つように、Information Center では以下のイメージを使用しています。

    v イメージにより、新規または変更された情報の開始点を示します。v イメージにより、新規または変更された情報の終了点を示します。

    今回のリリースの新規情報または変更情報に関するその他の情報は、プログラム資料説明書を参照してください。

    xx IBM i: DB2 for i SQL 解説書

  • 第 1 章 概念

    この章では、構造化照会言語 (SQL) を使用する際に理解しておくべき概念について概観します。本書の残りの部分に含まれる参照資料では、より詳細な観点から説明します。

    リレーショナル・データベースリレーショナル・データベース は、一組の表と見なすことができ、データの関係モデルにしたがって扱うことができるデータベースです。リレーショナル・データベースには、データの保管、アクセス、および管理に使用される一組のオブジェクトが含まれます。このようなオブジェクトには、表、ビュー、索引、別名、ユーザー定義タイプ、関数、プロシージャー、シーケンス、変数、およびパッケージが含まれます。

    ユーザーが IBM i からアクセスできるリレーショナル・データベースには、以下の3 つのタイプがあります。

    システム・リレーショナル・データベースIBM i にはデフォルトのリレーショナル・データベースが 1 つあります。システム・リレーショナル・データベースは、常に IBM i にとってローカルのデータベースです。このデータベースは、IBM i に接続しているディスクに存在しているデータベース・オブジェクトのうち、独立補助記憶域プールに保管されているものを除くすべてのオブジェクトから成っています。独立補助記憶域プールについての詳細は、IBM i Information Center のシステム管理カテゴリーを参照してください。

    デフォルトでは、システム・リレーショナル・データベースの名前は IBM iシステム名と同じです。ただし、ADDRDBDIRE (RDB ディレクトリー項目追加) コマンドまたは System i ナビゲーター を使用して、別の名前を割り当てることもできます。

    ユーザー・リレーショナル・データベースユーザーは、システム上に独立補助記憶域プールを構成することにより、IBM i 上に追加のリレーショナル・データベースを作成することができます。個々の 1 次独立補助記憶域プールが、それぞれ 1 つのリレーショナル・データベースとなります。このデータベースには、独立補助記憶域プール・ディスク上にあるすべてのデータベース・オブジェクトが含まれます。さらに、独立補助記憶域プールが接続している IBM i 製品のシステム・リレーショナル・データベース内のすべてのデータベース・オブジェクトも、論理的にユーザー・リレーショナル・データベースに含まれます。したがって、1 つのユーザー・リレーショナル・データベース内に作成するスキーマの名前は、そのユーザー・リレーショナル・データベースまたはそれに関連したシステム・リレーショナル・データベースの中に既に存在する名前であってはなりません。

    システム・リレーショナル・データベース内のオブジェクトは、論理的にはユーザー・リレーショナル・データベースに含まれていますが、以下に示す

    © Copyright IBM Corp. 1998, 2013 1

  • ように、システム・リレーショナル・データベースとユーザー・リレーショナル・データベースの間で、オブジェクト相互間に依存関係を持たせることができない場合が幾つかあります。

    v ビューは、そのビューが参照する表およびビューと同じリレーショナル・データベースに存在するスキーマの中に作成する必要があります。ただし、QTEMP 内に作成するビューは、ユーザー・リレーショナル・データベース内の表およびビューを参照することができます。

    v 索引を作成するときは、その索引が参照する表と同じリレーショナル・データベース内にあるスキーマの中に作成する必要があります。

    v トリガーまたは制約を作成するときは、その基本表と同じリレーショナル・データベース内にあるスキーマの中に作成する必要があります。

    v 1 つの参照制約の中の親表および従属表は、両方が同じリレーショナル・データベースの中にあることが必要です。

    v システム・リレーショナル・データベース内のオブジェクトが参照できるのは、同じシステム・リレーショナル・データベース内の関数、プロシージャー、およびタイプのみです。ただし、ユーザー・リレーショナル・データベース内のオブジェクトは、システム・リレーショナル・データベースまたは同じユーザー・リレーショナル・データベース内の関数、プロシージャー、およびタイプを参照することができます。しかし、相手方のリレーショナル・データベースが使用可能になっていないと、このようなオブジェクトに対する操作は失敗することがあります。例えば、ユーザー・リレーショナル・データベースをオフに変更し、さらに別のシステムに対してオンに変更した場合などが、これに相当します。

    ユーザー・リレーショナル・データベースは、独立補助記憶域プールがオンにされている間は、IBM i にとってローカルの関係にあります。独立補助記憶域プールは、1 つの IBM i ではオフに変更し、別の IBM i ではオンに変更することができます。したがって、同じユーザー・リレーショナル・データベースが、特定の IBM i にとってある時点ではローカルになり、別の時点ではリモートになることがあります。独立補助記憶域プールについての詳細は、IBM i Information Center のシステム管理カテゴリーを参照してください。

    デフォルトでは、ユーザー・リレーショナル・データベースの名前は独立補助記憶域プール名と同じです。ただし、ADDRDBDIRE (RDB ディレクトリー項目追加) コマンドまたは System i ナビゲーター を使用して、別の名前を割り当てることもできます。

    リモート・リレーショナル・データベース他の IBM i 製品および IBM i 以外の製品上にあるリレーショナル・データベースには、リモート・アクセスすることができます。この種のリレーショナル・データベースは、ADDRDBDIRE (RDB ディレクトリー項目追加)コマンドまたは System i ナビゲーター を使用して登録する必要があります。

    データベース・マネージャーとは、IBM iライセンス内部コード と、リレーショナル・データベースを管理するコードの DB2 for i 部分を総称的に指す名前です。

    リレーショナル・データベース

    2 IBM i: DB2 for i SQL 解説書

  • 構造化照会言語 (SQL)構造化照会言語 (SQL) は、リレーショナル・データベース内のデータを定義および操作するための標準化言語です。データの関係モデルの概念にしたがうと、データベースは表の集合であると考えられます。また、表内の値によって関連が表現されるとともに、1 つ以上の基本表から得られる結果表を指定することによってデータが検索されます。

    SQL ステートメントは、データベース・マネージャーによって実行されます。データベース・マネージャーには、結果表の指定を、データ検索を最適化する一連の内部命令に変換する機能があります。SQL ステートメントを準備 するときに、この変換が行われます。この変換を行うことを、バインドする とも言います。

    SQL ステートメントを実行するには、あらかじめ実行可能 SQL ステートメントがすべて準備されている必要があります。準備の結果は、ステートメントの実行可能形式、つまり実行形式 です。 SQL は、SQL ステートメントを準備する方式とステートメントの実行形式の持続期間によって、静的 SQL と動的 SQL に区別されます。

    静的 SQL

    静的 SQL ステートメントのソース (原始) 形式は、ホスト言語 (COBOL、C、または Java など) で書かれたアプリケーション・プログラム内部に組み込まれます。このステートメントは、アプリケーション・プログラムの実行前に準備されます。また、このステートメントの実行形式は、アプリケーション・プログラムが実行された後も残ります。

    静的 SQL ステートメントが入っているソース (原始) プログラムは、コンパイルする前に、SQL プリコンパイラーで処理する必要があります。プリコンパイラーは、SQL ステートメントの構文をチェックしてホスト言語のコメントに変換し、さらにデータベース・マネージャーを呼び出すホスト言語のステートメントを生成します。

    SQL アプリケーション・プログラムの準備には、プリコンパイル、その静的 SQLステートメントの準備、および変更されたソース・プログラムのコンパイルが含まれます。

    動的 SQL

    組み込み動的 SQL ステートメントを含むプログラムは、静的 SQL を含むプログラムの場合と同じように、しかし静的 SQL とは異なり、プリコンパイルを行う必要があり、動的 SQL ステートメントは実行時に構成および準備されます。動的 SQLステートメントのソース形式は、静的 SQL ステートメントの PREPARE またはEXECUTE IMMEDIATE を使用して、プログラムからデータベース・マネージャーに文字ストリングまたはグラフィック・ストリングとして渡されます。 PREPAREステートメントを使用して準備されたステートメントは、DECLARECURSOR、DESCRIBE、または EXECUTE のいずれかのステートメント内で参照できます。このステートメントの実行形式は、接続が継続している間、または最後のSQL プログラムが呼び出しスタックから出るまで存続します。

    構造化照会言語 (SQL)

    第 1 章 概念 3

  • REXX アプリケーションに組み込まれた SQL ステートメントは動的 SQL です。対話式 SQL 機能または呼び出しレベル・インターフェース (CLI) にサブミットされる SQL ステートメントも、動的 SQL ステートメントであるといえます。

    拡張動的 SQL

    拡張動的 SQL ステートメントは、完全に静的でもなく、完全に動的でもありません。 QSQPRCED API は、拡張動的 SQL 機能を提供します。動的 SQL 機能と同様に、この API を使用して、ステートメントを準備し、記述し、実行することができます。動的 SQL とは異なり、この API によってパッケージ中に準備されたSQL ステートメントは、そのパッケージまたはステートメントが明示的に削除されるまで、存続します。詳しくは、IBM i Information Center のプログラミング・カテゴリーの中で、データベースおよびファイル API に関する情報を参照してください。

    対話式 SQL

    対話式 SQL 機能は、すべてのデータベース・マネージャーに関連付けられています。あらゆる対話式 SQL 機能は、本質的には、ワークステーションからステートメントを読み取り、ステートメントを動的に準備して実行し、その結果をユーザーに表示する SQL アプリケーション・プログラムです。このような SQL ステートメントは、対話式に 出されるステートメントと呼ばれます。

    DB2 for i の対話式機能は、STRSQL コマンド、STRQM コマンド、または Systemi ナビゲーターの SQL スクリプト実行サポートによって呼び出されます。 SQL の対話式機能の詳細については、「SQL プログラミング」および「Query Manager ご

    使用の手引き を参照してください。

    SQL コール・レベル・インターフェースおよび Open DatabaseConnectivity

    DB2 コール・レベル・インターフェース (CLI) は、動的 SQL ステートメントを処理するための関数をアプリケーション・プログラムに提供するアプリケーション・プログラミング・インターフェースです。DB2 CLI により、ユーザーはどの ILE言語を使用している場合でも、DB2 for i が提供するサービス・プログラムへのプロシージャー呼び出しを使用して、SQL 機能に直接アクセスできます。CLI プログラムは、Microsoft や他のベンダーから入手できる、ODBC データ・ソースへのアクセスを可能にする Open Database Connectivity (ODBC) ソフトウェア開発キットを使用してコンパイルすることもできます。組み込み SQL とは異なり、プリコンパイルの必要はありません。このインターフェースを使用して開発されたアプリケーションは、個々のデータベースごとにコンパイルせずに、さまざまなデータベースに対して実行できます。インターフェースを通して、アプリケーションは実行時にプロシージャーを呼び出し、データベースに接続し、SQL ステートメントを実行し、戻されたデータや状況に関する情報を入手します。

    DB2 CLI インターフェースは、組み込み SQL では利用不能な多くの機能を備えています。例えば次のようなものがあります。

    v CLI が提供する関数呼び出しは、DB2 データベース管理システム・ファミリーに共通の、一貫した方法でのデータベース・システム・カタログ情報の照会、取り

    構造化照会言語 (SQL)

    4 IBM i: DB2 for i SQL 解説書

    http://pic.dhe.ibm.com/infocenter/iseries/v6r1m0/topic/rzatc/sc415212.pdfhttp://pic.dhe.ibm.com/infocenter/iseries/v6r1m0/topic/rzatc/sc415212.pdf

  • 出しをサポートしています。これにより、アプリケーション・サーバー特定のカタログ照会を作成する必要性が減ります。

    v CLI を使用して作成されたアプリケーション・プログラムから呼び出されたストアード・プロシージャーは、これらのプログラムに対して結果セットを戻すことができます。

    使用できる機能とその構文の詳細については、「DB2 UDB for iSeries SQL 呼び出しレベル・インターフェース (ODBC)」を参照してください。

    Java DataBase Connectivity (JDBC) および組み込み SQL forJava (SQLJ) プログラム

    DB2 for i は、標準に準拠した 2 つの Java プログラミング API、つまり、JavaDatabase Connectivity (JDBC) と embedded SQL for Java (SQLJ) をインプリメントしています。どちらも、DB2 にアクセスする Java アプリケーションやアプレットを作成できます。

    JDBC 呼び出しは、Java 固有の方式によって、DB2 CLI への呼び出しに変換されます。DB2 for i データベースには、2 つの JDBC ドライバーを介してアクセスできます。IBM Developer Kit for Java ドライバーまたは IBM Toolbox for Java JDBCドライバーです。IBM Toolbox for Java JDBC ドライバーについての詳しい情報は、「IBM Toolbox for Java」を参照してください。

    JDBC では、静的 SQL は使用できません。SQLJ アプリケーションは、データベースへの接続や SQL エラーの処理などの作業の基礎として JDBC を使用しますが、SQLJ ソース・ファイルに 静的 SQL ステートメントを含めることもできます。SQLJ ソース・ファイルは、まず SQLJ 変換プログラムを使って変換しないと、得られた Java ソース・コードをコンパイルできません。

    JDBC および SQLJ アプリケーションの詳細については、「Developer Kit forJava」を参照してください。

    OLE DB and ADO (ActiveX Data Object)

    IBM i Access for Windows には、Windows クライアント PC からの DB2 クライアント/サーバー・アプリケーション開発を迅速かつ容易にするものとして、Programmer's Toolkit とともに OLE DB Provider が組み込まれています。詳しくは、IBM i Information Center の中のIBM i Access for Windows OLE DB Providerの説明を参照してください。

    .NET

    IBM i Access for Windows には、Windows クライアント PC からの Windows クライアント/サーバー・アプリケーション開発を迅速かつ容易にするものとして、.NET Provider が組み込まれています。詳しくは、IBM i Information Center の中のIBM i Access for Windows .NET Provider の説明を参照してください。

    構造化照会言語 (SQL)

    第 1 章 概念 5

  • スキーマリレーショナル・データベース内のオブジェクトはいくつかに分けられ、スキーマというまとまりに編成されます。スキーマは、リレーショナル・データベース内のオブジェクトを論理的に分類したものです。

    スキーマ名 は、SQL オブジェクト名 (表、ビュー、索引、トリガーなど) の修飾子として使用します。スキーマは、コレクションまたはライブラリーとも呼ばれます。

    スキーマには名前があります。別のシステム名を付けることもできます。システム名は、IBM i オペレーティング・システムが使用する名前です。SQL ステートメントでスキーマ名を指定する場所では、どちらの名前でも使用できます。

    スキーマと XML スキーマは別々のものであり、混同すべきではありません。XMLスキーマは、XML 文書の構造を記述し、内容を検証するための標準です。

    各データベース・マネージャーは、そのデータベース・マネージャーが使用するために予約されているスキーマのセットをサポートします。このようなスキーマのことを、システム・スキーマといいます。スキーマ SESSION、および 'SYS' と 'Q'で始まるスキーマはシステム・スキーマです。

    ユーザー・オブジェクトを SESSION 以外のシステム・スキーマの中に作成してはなりません。 SESSION は常に、宣言済みの一時テーブルのスキーマ名として使用されます。ユーザーが 'SYS' や 'Q' で始まるスキーマを作成することはできません。

    スキーマは、リレーショナル・データベース内のオブジェクトでもあります。CREATE SCHEMA ステートメントを使用すれば、スキーマを明示的に作成できます。1詳しくは、 1065ページの『CREATE SCHEMA』を参照してください。

    スキーマに含まれるオブジェクトは、オブジェクトが作成されるときに、スキーマに割り当てられます。割り当てられるスキーマは、オブジェクトの名前 (スキーマ名で特別に修飾されている場合) またはデフォルトのスキーマ名 (修飾されていない場合) によって決まります。

    例えば、ユーザーが C という名前のスキーマを作成するとします。

    CREATE SCHEMA C

    その後、次のステートメントを実行すると、スキーマ C の中に X と呼ばれる表を作成できます。

    CREATE TABLE C.X (COL1 INT)

    1. CRTLIB CL コマンドを使用してスキーマを作成することもできますが、CREATE SCHEMA ステートメントを使用した場合に作成されるカタログ・ビュー、ジャーナル、ジャーナル・レシーバーは、CRTLIB では作成されません。

    スキーマ

    6 IBM i: DB2 for i SQL 解説書

  • 表表 は、データベース・マネージャーが管理する論理構造です。表は、列と行から形成されます。表の各行には、固有の順序はありません。各列と行が交差する個所には、値 と呼ばれるデータ項目があります。列 とは、同一のタイプに属する値の集まりを指します。行 とは、先頭から n 番目の値が、表の n 番目の列の値になるように並んでいる一連の値を指します。

    表には、以下の 3 つのタイプがあります。

    v 基本表 は CREATE TABLE ステートメントにより作成され、持続的なユーザー・データを保持するために使用されます。詳しくは、 1079ページの『CREATETABLE』を参照してください。

    基本表は、名前を持ち、異なるシステム名を持つ場合があります。システム名は、IBM i オペレーティング・システムによって使用される名前です。SQL ステートメントで表名 を指定する場所には、どちらの名前でも使用できます。

    基本表の列は、名前を持ち、異なるシステム列名を持つ場合があります。システム列名は、IBM i オペレーティング・システムによって使用される名前です。SQL ステートメントで列名 を指定する場所には、どちらの名前でも使用できます。詳しくは、 1079ページの『CREATE TABLE』を参照してください。

    マテリアライズ照会表 は、CREATE TABLE ステートメントで作成する基本表であり、選択ステートメント から派生する (マテリアライズする) データを格納するための表です。ソース表には、基本表、ビュー、表式、またはユーザー定義表関数のいずれかを指定できます。選択ステートメント は、マテリアライズ照会表にあるデータを最新表示するために使用する照会を指定します。

    マテリアライズ照会表を使用すると、SQL 照会のパフォーマンスを高めることができます。データベース・マネージャーは、マテリアライズ照会表のデータを使用して照会の一部を解決できると判断した場合に、マテリアライズ照会表を使用するように照会を書き直す可能性があります。マテリアライズ照会表の作成についての詳細は、 1079ページの『CREATE TABLE』を参照してください。

    パーティション表 は、1 つ以上のローカル・パーティション (メンバー) に含まれているデータから成る表です。どの行をどのパーティションに挿入するかは、2つのメカニズムで指定できるようになっています。範囲区分化というメカニズムを使用すると、パーティションごとに異なる範囲の値を指定することができます。行が挿入されると、行に指定された値と各パーティションに指定された範囲が比較され、どのパーティションが適切かが判別されます。ハッシュ・パーティションというメカニズムを使用すると、パーティション・キーを指定することができ、そのキーを元にハッシュ・アルゴリズムを実行して適切なパーティションを判別することができます。パーティション・キー とは、パーティション表内の1 つ以上の列の集まりであり、このキーを使用して行がどのシステムに属するべきかを判別します。

    分散表 とは、そのデータがノード・グループに分配されている表を指します。ノード・グループ とは、複数のシステムが集まった論理的なグループを提供するオブジェクトです。パーティション・キー とは、分散表内の 1 つ以上の列の集ま

    第 1 章 概念 7

  • りであり、このキーを使用して行がどのシステムに属するべきかを判別します。分散表の詳細については、「DB2 UDB for iSeries マルチ・システム」を参照してください。

    v 結果表 とは、データベース・マネージャーが照会から、選択または生成を行った列の集まりです。照会の詳細については、 653ページの『第 6 章 照会』を参照してください。

    v 宣言済み一時表 は、DECLARE GLOBAL TEMPORARY TABLE ステートメントによって作成され、単一のアプリケーションに代わって一時データを保持するために使用されます。この表は、そのアプリケーションがデータベースから切断されたときに、暗黙的に除去されます。

    キーキー とは、索引、ユニーク制約、または参照制約の記述の中で識別されている 1つ以上の式です。同一の式が複数のキーに含まれることもあります。

    複合キー は、同じ基本表のいくつかの式を順序付けしたものです。これらの式の順序付けは、基本表内で順序による制約は受けません。値 という用語は、複合キーに関して使用した場合には、複合値のことを指します。したがって、「外部キーの値は、基本キーの値に等しくなければならない」などの規則は、外部キーの値の各コンポーネントが、基本キーの値の対応するコンポーネントに等しくなければならないことを意味しています。

    制約制約 は、データベース・マネージャーが実施する規則です。

    制約には、以下の 3 つのタイプがあります。

    v ユニーク制約 は、1 つの表の中の 1 つ以上の列に重複値があってはならないという規則です。固有キーと基本キーが、ユニーク制約としてサポートされています。例えば、製造業者テーブルの製造業者識別子にユニーク制約を定義すると、1 つの製造業者識別子に 2 つの製造業者を指定できなくなります。

    v 参照制約 は、1 つ以上の表にある 1 つ以上の列の値に関する論理規則です。例えば、ある企業の製造業者に関する情報がいくつかの表で共有されているとします。製造業者の ID はときどき変更されます。そこで、参照制約を定義して、表の製造業者の ID は製造業者情報の製造業者 ID と一致していなければならないこととします。この制約によって、ともすると製造業者情報が欠落してしまいかねない挿入、更新、削除の操作を防ぐことができます。

    v チェック制約。これは、特定の表に追加されるデータに制約を課します。例えば、人事情報が含まれている表で給与データを追加/更新するときに、従業員の給与レベルが最低でも $20 000 以上になるように、チェック制約を設定できます。

    固有制約ユニーク制約 は、キーの値が固有な場合にのみ有効であることを示す規則です。固有の値を持つように制約されているキーは、固有キー と呼ばれます。固有制約は、固有索引の使用によって強制実施されます。固有索引は、INSERT や UPDATE ステートメントの実行の過程でデータベース・マネージャーによって使用され、キーの値の固有性が確保されます。

    8 IBM i: DB2 for i SQL 解説書

  • 固有制約には、次の 2 つのタイプがあります。

    v CREATE TABLE または ALTER TABLE ステートメントを使用して、固有キーを基本キーとして定義する。 1 つの基本表で複数の基本キーを持つことはできません。基本キーを構成する桁には NULL 値が許されないという規則を強制する、表検査制約が暗黙的に追加されます。基本キーに基づく固有索引は、基本索引 と呼ばれます。

    v CREATE TABLE または ALTER TABLE ステートメントの UNIQUE 文節を使用して、固有キーを定義する。 1 つの基本表で、「固有」キーのセットを複数持つことができます。

    参照制約の外部キーによって参照される固有キーは、親キー と呼ばれます。親キーは、基本キー、または UNIQUE キーのいずれかです。基本表が、参照制約において親として定義される場合、その基本キーが、デフォルトの親キーになります。

    固有制約を強制実施するのに使用する固有索引は、固有制約の定義時に暗黙的に作成されます。または、CREATE UNIQUE INDEX ステートメントを使用して定義することもできます。

    固有制約の定義についての詳細は、 801ページの『ALTER TABLE』または 1079ページの『CREATE TABLE』を参照してください。

    参照制約参照保全 とは、すべての外部キーのすべての値が有効であるデータベースの状態です。外部キー とは、参照制約の定義の一部であるキーです。

    参照制約 は、外部キーの値が以下の場合にのみ有効であることを示す規則です。

    v それらが、親キーの値として現れている。または、v 外部キーのコンポーネントに NULL のコンポーネントがある。

    親キーを含む基本表は、参照制約の親表 と呼ばれ、その外部キーを含む基本表は、その表に従属 していると呼ばれます。

    参照制約は、任意指定であり、CREATE TABLE ステートメントや ALTER TABLEステートメントで定義することができます。参照制約は、INSERT、UPDATE、および DELETE ステートメントの実行の過程で、データベース・マネージャーによって課せられます。参照制約は、行が処理されるときに課せられる RESTRICT の削除や更新の規則の場合を除き、ステートメントの完了時に効果的に課せられます。

    RESTRICT の削除や更新の規則を伴う参照制約は、常に、他の参照制約よりも前に課せられます。他の参照制約は、順序に関係のない形で課せられます。すなわち、その順序が操作の結果に影響することはありません。1 つの SQL ステートメント内で、

    v 行に、CASCADE の削除規則を伴う任意の数の参照制約によって削除のマークを付けることができます。

    v 行は、SET NULL または SET DEFAULT の削除規則を伴う 1 つの参照制約によってのみ更新することができます。

    v ある参照制約によって更新された行には、CASCADE の削除規則を伴う他の参照制約によって削除のマークを付けることはできません。

    第 1 章 概念 9

  • 参照保全の規則には、以下の概念や用語が関連します。

    親キー 参照制約の基本キーまたは固有キー。

    親行 少なくとも 1 つの従属行を持つ行。

    親表 少なくとも 1 つの参照制約における親である基本表。基本表は、任意の数の参照制約で親として定義することができます。

    従属表 少なくとも 1 つの参照制約において従属である基本表。基本表は、任意の数の参照制約で従属として定義することができます。従属表は、親表になることもできます。

    下層表 基本表が、基本表 T の従属であるか、または表 T の従属の下層である場合、その表は表 T の下層です。

    従属行 少なくとも 1 つの親行を持つ行。

    下層行 行が、行 p の従属であるか、または行 p の従属の下層である場合、その行は、行 p の下層です。

    参照サイクルその集合の各表がそれ自身の下層である参照制約の集合。

    自己参照行それ自身の親である行。

    自己参照表同一の参照制約で親であると同時に従属である基本表。この制約を、自己参照制約 といいます。

    参照制約の挿入規則では、外部キーの非 NULL の挿入値は、親表の親キーのいずれかの値に一致しなければなりません。複合外部キーのコンポーネントのいずれかの値が NULL である場合、その複合外部キーの値は NULL になります。

    参照制約の更新規則は、その参照制約を定義する時点で指定します。選択できる項目は、NO ACTION と RESTRICT です。更新規則は、親または従属表の行が更新される時点で適用されます。参照制約の更新規則では、外部キーの非 NULL の更新値は、親表の親キーのいずれかの値に一致しなければなりません。複合外部キーの値は、そのいずれかのコンポーネントが NULL の場合には NULL として扱われます。

    参照制約の削除規則は、その参照制約を定義する時点で指定します。選択できる項目は、RESTRICT�