サイトトップへこのカテゴリの一覧へ

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

(1) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

目 次 

ページ 

序文 ··································································································································· 1 

1 適用範囲························································································································· 1 

2 引用規格························································································································· 1 

2.1 JIS及びISO規格 ··········································································································· 1 

3 定義及び語の用法 ············································································································· 2 

3.1 定義 ···························································································································· 2 

3.1.1 この規格で規定する定義 ······························································································· 2 

3.2 語の用法 ······················································································································ 5 

3.3 参考要素 ······················································································································ 5 

4 概念······························································································································· 5 

4.1 警告 ···························································································································· 5 

4.2 SQL環境及びそれらの構成要素 ························································································ 6 

4.2.1 SQL環境 ··················································································································· 6 

4.2.2 SQLエージェント ······································································································· 6 

4.2.3 SQL処理系 ················································································································ 6 

4.2.3.1 SQLクライアント ····································································································· 6 

4.2.3.2 SQLサーバ ·············································································································· 7 

4.2.4 SQLクライアントモジュール························································································· 7 

4.2.5 利用者識別子 ·············································································································· 7 

4.2.6 役割 ·························································································································· 7 

4.2.7 利用者対応付けの概念 ·································································································· 7 

4.2.8 ルーチン対応付けの概念 ······························································································· 7 

4.2.9 カタログ及びスキーマ ·································································································· 7 

4.2.9.1 カタログ ·················································································································· 7 

4.2.9.2 SQLスキーマ ··········································································································· 8 

4.2.9.3 情報スキーマ ············································································································ 8 

4.2.9.4 定義スキーマ ············································································································ 8 

4.2.10 外部サーバ及び記述子 ································································································· 8 

4.2.11 外部データ覆い及び記述子 ··························································································· 8 

4.2.12 SQLデータ ··············································································································· 8 

4.3 表 ······························································································································· 8 

4.4 SQLデータ型 ················································································································ 9 

4.4.1 データ型一般情報 ········································································································ 9 

4.4.2 ナル値 ······················································································································ 10 

4.4.3 既定義型 ··················································································································· 10 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 目次 

(2) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

4.4.3.1 数型 ······················································································································· 10 

4.4.3.2 文字列型 ················································································································· 10 

4.4.3.3 2進オクテット列型 ··································································································· 11 

4.4.3.4 ブール型 ················································································································· 11 

4.4.3.5 日時型 ···················································································································· 11 

4.4.3.6 時間隔型 ················································································································· 11 

4.4.3.7 XML型 ·················································································································· 11 

4.4.4 基本単位の構成型 ······································································································· 11 

4.4.4.1 参照型 ···················································································································· 11 

4.4.5 複合の構成型 ············································································································· 11 

4.4.5.1 集まり型 ················································································································· 11 

4.4.5.2 フィールド ·············································································································· 12 

4.4.5.3 行型 ······················································································································· 12 

4.5 格納場所及び格納場所に関する演算·················································································· 12 

4.5.1 格納場所 ··················································································································· 12 

4.5.2 代入 ························································································································· 12 

4.5.3 ナル可能性 ················································································································ 12 

4.6 SQLスキーマオブジェクト ····························································································· 12 

4.6.1 SQLスキーマオブジェクト一般情報··············································································· 12 

4.6.2 文字集合に関連する記述子 ··························································································· 13 

4.6.2.1 文字集合 ················································································································· 13 

4.6.2.2 照合順 ···················································································································· 13 

4.6.2.3 文字変換 ················································································································· 14 

4.6.3 定義域及びその構成要素 ······························································································ 14 

4.6.3.1 定義域 ···················································································································· 14 

4.6.3.2 定義域制約 ·············································································································· 14 

4.6.4 利用者定義型 ············································································································· 14 

4.6.4.1 利用者定義型の導入 ·································································································· 14 

4.6.4.2 個別型 ···················································································································· 14 

4.6.4.3 構造型 ···················································································································· 14 

4.6.5 実表及びその構成要素 ································································································· 15 

4.6.5.1 実表 ······················································································································· 15 

4.6.5.2 列 ·························································································································· 15 

4.6.5.3 期間 ······················································································································· 15 

4.6.5.4 表制約 ···················································································································· 15 

4.6.5.5 トリガ ···················································································································· 15 

4.6.6 ビュー定義 ················································································································ 16 

4.6.7 表明 ························································································································· 16 

4.6.8 SQLサーバモジュール([ISO9075-4] で規定) ································································ 16 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 目次 

(3) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

4.6.9 スキーマルーチン ······································································································· 16 

4.6.10 順序数生成子 ············································································································ 16 

4.6.11 権限 ························································································································ 16 

4.7 整合性制約及び制約検査 ································································································ 17 

4.7.1 制約検査 ··················································································································· 17 

4.7.2 決定性及び制約 ·········································································································· 17 

4.8 SQLエージェントとSQLサーバとの間の通信 ··································································· 17 

4.8.1 ホスト言語 ················································································································ 17 

4.8.2 パラメタの渡し方及びデータ型対応 ··············································································· 18 

4.8.2.1 パラメタの一般的な渡し方及びデータ型対応情報 ··························································· 18 

4.8.2.2 データ型対応 ··········································································································· 18 

4.8.2.3 位置付け子 ·············································································································· 18 

4.8.2.4 状態パラメタ ··········································································································· 18 

4.8.2.5 標識パラメタ ··········································································································· 18 

4.8.3 記述子領域 ················································································································ 19 

4.8.4 診断情報 ··················································································································· 19 

4.8.5 SQLトランザクション ································································································ 19 

4.9 モジュール ·················································································································· 20 

4.10 ルーチン ···················································································································· 20 

4.10.1 ルーチン一般情報 ······································································································ 20 

4.10.2 型保持関数 ··············································································································· 21 

4.11 SQL文 ······················································································································ 21 

4.11.1 SQL文の種類 ··········································································································· 21 

4.11.2 機能によって分類されたSQL文 ·················································································· 21 

5 JIS X 3005 (ISO/IEC 9075) 規格群の規格 ············································································· 22 

5.1 概要 ··························································································································· 22 

5.2 JIS X 3005-1: 枠組 (SQL/Framework) ············································································· 22 

5.3 ISO/IEC 9075-2: 基本機能 (SQL/Foundation) ··································································· 22 

5.3.1 [ISO9075-2] で規定するデータ型 ··················································································· 22 

5.3.2 表 ···························································································································· 23 

5.3.3 結合方法 ··················································································································· 23 

5.3.3.1 埋込みSQL ············································································································· 23 

5.3.3.2 動的SQL ················································································································ 23 

5.3.3.3 SQLの直接起動 ······································································································· 23 

5.3.4 [ISO9075-2] で規定するSQL文 ····················································································· 23 

5.4 ISO/IEC 9075-3: 呼出しレベルインタフェース (SQL/CLI) ·················································· 24 

5.5 ISO/IEC 9075-4: 永続格納モジュール (SQL/PSM) ····························································· 24 

5.5.1 [ISO9075-4] で規定するSQL文 ····················································································· 25 

5.6 ISO/IEC 9075-9: 外部データ管理 (SQL/MED) ·································································· 25 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 目次 

(4) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

5.7 ISO/IEC 9075-10: オブジェクト言語結合 (SQL/OLB) ························································ 25 

5.8 ISO/IEC 9075-11: 情報スキーマ及び定義スキーマ (SQL/Schemata) ······································· 25 

5.9 ISO/IEC 9075-13: Javaプログラム言語を用いるSQLルーチン及び型 (SQL/JRT) ··················· 25 

5.10 ISO/IEC 9075-14: XML関連仕様 (SQL/XML)································································· 25 

6 JIS X 3005 (ISO/IEC 9075) 規格群の他の規格で用いる表記法及び規約 ······································· 26 

6.1 JIS X 0221 [ISO10646] からの表記法 ················································································· 26 

6.2 この規格で規定する表記法 ····························································································· 26 

6.3 規約 ··························································································································· 27 

6.3.1 構文要素の規定 ·········································································································· 27 

6.3.2 情報スキーマ及び定義スキーマの規定 ············································································ 27 

6.3.3 用語の使用 ················································································································ 28 

6.3.3.1 構文上の包含関係 ····································································································· 28 

6.3.3.2 規則の要件を示す用語 ······························································································· 29 

6.3.3.3 規則の評価順序 ········································································································ 29 

6.3.3.4 条件付き規則 ··········································································································· 30 

6.3.3.5 構文上の置換え ········································································································ 30 

6.3.3.6 その他の用語 ··········································································································· 31 

6.3.3.7 例外 ······················································································································· 31 

6.3.3.8 例外条件で終了しない一般規則 ··················································································· 32 

6.3.4 記述子 ······················································································································ 32 

6.3.5 JIS X 3005 (ISO/IEC 9075) 規格群の規格の関係 ································································ 33 

6.3.5.1 新しい箇条,細分箇条及び附属書並びに修正される箇条,細分箇条及び附属書 ···················· 33 

6.3.5.2 新しい表及び図並びに修正される表及び図 ···································································· 35 

6.3.5.3 機能 ······················································································································· 35 

6.3.5.4 新しい形式項目及び修正される形式項目 ······································································· 35 

6.3.5.5 新しい段落及び規則並びに修正される段落及び規則 ························································ 36 

6.3.5.6 修正される附属書 ····································································································· 37 

6.3.6 サブルーチンとして用いる細分箇条 ··············································································· 37 

6.3.7 索引の体裁 ················································································································ 37 

6.3.8 機能ID及び機能名 ····································································································· 38 

7 JIS X 3005 (ISO/IEC 9075) 規格群の規格に対する附属書 ························································· 38 

7.1 SQL適合性の要約 ········································································································· 38 

7.2 処理系定義要素 ············································································································ 38 

7.3 処理系依存要素 ············································································································ 38 

7.4 削除予定機能 ··············································································································· 39 

7.5 前の版との非互換性 ······································································································ 39 

7.6 SQLの機能の分類 ········································································································· 39 

7.7 欠陥報告 ····················································································································· 39 

8 適合性··························································································································· 39 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 目次 

(5) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

8.1 最小適合性 ·················································································································· 39 

8.2 各規格への適合性 ········································································································· 39 

8.3 機能への適合性 ············································································································ 39 

8.4 拡張及び選択機能 ········································································································· 40 

8.5 SQLフラグ機能 ············································································································ 41 

8.6 適合性の主張 ··············································································································· 42 

8.6.1 SQL適用業務に対する要件 ·························································································· 42 

8.6.2 SQL処理系に対する要件 ····························································································· 42 

附属書A(参考)SQLの保守及び解釈 ····················································································· 44 

附属書B(参考)処理系定義要素 ··························································································· 45 

附属書C(参考)処理系依存要素 ··························································································· 47 

附属書D(参考)削除予定機能 ······························································································ 48 

附属書E(参考)ISO/IEC 9075:2008との非互換性 ····································································· 49 

附属書F(参考)SQLの機能の分類 ························································································ 50 

附属書G(参考)JIS X 3005 (ISO/IEC 9075) 規格群のこの版で取り込まれていない欠陥報告 ············· 51 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 目次 

(6) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

まえがき 

この規格は,工業標準化法に基づき,日本工業標準調査会の審議を経て,経済産業大臣が改正した日本

工業規格である。 

これによって,JIS X 3005-1: 2010は改正され,この規格に置き換えられた。 

この規格は,著作権法で保護対象となっている著作物である。 

この規格の一部が,特許権,出願公開後の特許出願又は実用新案権に抵触する可能性があることに注意

を喚起する。経済産業大臣及び日本工業標準調査会は,このような特許権,出願公開後の特許出願及び実

用新案権に関わる確認について,責任はもたない。 

JIS X 3005の規格群には,次に示す部編成がある。 

JIS X 3005-1 第1部:枠組 (SQL/Framework) 

JIS X 3005-2 第2部:基本機能 (SQL/Foundation) 

JIS X 3005-3 第3部:呼出しレベルインタフェース (SQL/CLI) 

JIS X 3005-4 第4部:永続格納モジュール (SQL/PSM) 

JIS X 3005-9 第9部:外部データ管理 (SQL/MED) 

JIS X 3005-10 第10部:オブジェクト言語結合 (SQL/OLB) 

JIS X 3005-13 第13部:Javaプログラム言語を用いるSQLルーチン及び型 (SQL/JRT) 

JIS X 3005-14 第14部:XML関連仕様 (SQL/XML) 

注記 この規格群に対応する国際規格ISO/IEC 9075には,上記の部のほかに,2003年に第2部から

分離して制定されたISO/IEC 9075-11 Information technology−Database languages−SQL−Part 

11: Information and Definition Schemas (SQL/Schemata),すなわち,データベース言語SQL 第11

部:情報スキーマ及び定義スキーマ (SQL/ Schemata) もある。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

日本工業規格 

JIS 

X 3005-1:2014 

(ISO/IEC 9075-1:2011) 

データベース言語SQL  

第1部:枠組 (SQL/Framework) 

Information technology-Database languages-SQL- 

Part 1: Framework (SQL/Framework) 

序文 

この規格は,2011年に第4版として発行されたISO/IEC 9075-1を基に,技術的内容及び構成を変更す

ることなく作成した日本工業規格である。 

なお,この規格で点線の下線を施してある参考事項は,対応国際規格にはない事項である。 

適用範囲 

この規格は,JIS X 3005 (ISO/IEC 9075) 規格群の他の規格でSQL文法を規定し,SQL処理系がその言

語の文を処理した結果を規定するために用いる概念的な枠組について規定する。 

この規格では,JIS X 3005 (ISO/IEC 9075) 規格群の他の規格で用いる用語及び表記法も規定する。 

注記 この規格の対応国際規格及びその対応の程度を表す記号を,次に示す。 

ISO/IEC 9075-1:2011,Information technology−Database languages−SQL−Part 1: Framework 

(SQL/Framework)(IDT) 

なお,対応の程度を表す記号“IDT”は,ISO/IEC Guide 21-1に基づき,“一致している”こ

とを示す。 

引用規格 

次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成する。これらの

引用規格のうちで,西暦年を付記してあるものは,記載の年の版を適用し,その後の改正版(追補を含む。)

は適用しない。西暦年の付記がない引用規格は,その最新版(追補を含む。)を適用する。 

2.1 

JIS及びISO規格 

[ISO9075-2] 

ISO/IEC 9075-2:2011,Information technology−Database languages−SQL−Part 2: Foundation 

(SQL/Foundation) 

注記 JIS X 3005-2:2010が,この国際規格の前の版ISO/IEC 9075-2:2008と一致している。 

注記 [ISO9075-2] のような,各引用規格の前に付加されている角括弧で囲んだ記号は,引用規格

を後で参照するために用いる記号である。 

[ISO9075-3] 

ISO/IEC 9075-3:2008,Information technology−Database languages−SQL−Part 3: Call-Level Interface 

(SQL/CLI) 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

注記 JIS X 3005-3:2002が,この国際規格の二つ前の版ISO/IEC 9075-3:1999と一致している。 

[ISO9075-4] 

ISO/IEC 9075-4:2011,Information technology−Database languages−SQL−Part 4: Persistent Stored 

Modules (SQL/PSM) 

注記 JIS X 3005-4:2002が,この国際規格の三つ前の版ISO/IEC 9075-4:1999と一致している。 

[ISO9075-9] 

ISO/IEC 9075-9:2008,Information technology−Database languages−SQL−Part 9: Management of External 

Data (SQL/MED) 

注記 JIS X 3005-9:2003が,この国際規格の二つ前の版ISO/IEC 9075-9:2001と一致している。 

[ISO9075-10] 

ISO/IEC 9075-10:2008,Information technology−Database languages−SQL−Part 10: Object Language 

Bindings (SQL/OLB) 

注記 JIS X 3005-10:2003が,この国際規格の二つ前の版ISO/IEC 9075-10:2000と一致している。 

[ISO9075-11] 

ISO/IEC 9075-11:2011,Information technology−Database languages−SQL−Part 11: Information and 

Definition Schemas (SQL/Schemata) 

[ISO9075-13] 

ISO/IEC 9075-13:2008,Information technology−Database languages−SQL−Part 13: SQL Routines and 

Types Using the Java™ Programming Language (SQL/JRT) 

注記 JIS X 3005-13:2007が,この国際規格の前の版ISO/IEC 9075-13:2003と一致している。 

[ISO9075-14] 

ISO/IEC 9075-14:2011,Information technology−Database languages−SQL−Part 14: XML-Related 

Specifications (SQL/XML) 

注記 JIS X 3005-14:2006が,この国際規格の三つ前の版ISO/IEC 9075-14:2003と一致している。 

[ISO10646] 

JIS X 0221 国際符号化文字集合 (UCS) 

注記 対応国際規格:ISO/IEC 10646,Information technology−Universal Coded Character Set (UCS) 

(IDT) 

注記 JIS X 0221:2014が,ISO/IEC 10646:2012と一致(IDT)している。 

[ISO14651] 

ISO/IEC 14651,Information technology−International string ordering and comparison−Method for 

comparing character strings and description of the common template tailorable ordering 

定義及び語の用法 

3.1 

定義 

3.1.1 

この規格で規定する定義 

この規格では,動詞の定義は,その全ての活用を含む。 

この規格では,次の用語を定義する。これらの用語は,JIS X 3005 (ISO/IEC 9075) 規格群の他の規格で

も用いる。 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

3.1.1.1 

基本単位 (atomic) 

分割できないこと。 

3.1.1.2 

列 (column) 

表の行型のフィールド。 

3.1.1.3 

翻訳単位 (compilation unit) 

一つ以上のサブプログラムから成り得る実行可能コードの断片。 

3.1.1.4 

データ型 (data type) 

表現可能な値の集合。 

3.1.1.5 

記述子 (descriptor) 

SQLオブジェクトの符号化記述。 

注記2 規格に適合するSQL処理系が必要とするそのオブジェクトについての全ての情報を含む。 

3.1.1.6 

あるSQLオブジェクトの名前の完全修飾付き (fully qualified of a name of some SQL object) 

全ての省略可能な構成要素が明示的に指定されたもの。 

注記3 完全修飾付きの名前は,必ずしもオブジェクトを一意に識別する必要はない。例えば,カタ

ログ名,スキーマ名及び特定名から成る完全修飾付きの特定名は,ルーチンを一意に識別す

るが,完全修飾付きのルーチン名は,必ずしもそうではない。 

3.1.1.7 

識別子 (identifier) 

あるものを識別するもの (object)。 

3.1.1.8 

識別する (identify) 

あるものを曖昧さなく参照する。 

3.1.1.9 

処理系定義 (implementation-defined) 

SQL処理系間で異なり得るが,それぞれの特定のSQL処理系で実装者によって定められるもの。 

3.1.1.10 

処理系依存 (implementation-dependent) 

SQL処理系間で異なり得るが,JIS X 3005 (ISO/IEC 9075) 規格群で規定せず,どのような特定のSQL

処理系であっても,実装者が定める必要がないもの。 

3.1.1.11 

(値の)実現値 [instance (of value)] 

値の物理的表現。 

注記4 各実現値は,ただ一つの格納場所にある。実現値は,その値のデータ型であるデータ型をも

つ。 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

3.1.1.12 

ナル値 (null value) 

どのデータ値もないことを示すために用いる特別な値。 

3.1.1.13 

(“xオブジェクト”などの)オブジェクト [object (as in “x object”)] 

もの (thing) であり,それは,あるxの構成要素又はあるxに関連付けられた別の構成要素で,そのx

と独立に存在できない。 

注記5 例えば,SQLオブジェクトは,SQLの文脈中でだけ存在するオブジェクトであり,SQLスキ

ーマオブジェクトは,あるSQLスキーマ中で存在するオブジェクトである。 

3.1.1.14 

永続 (persistent) 

意図的に破壊されるまで無期限に存在し続けること。 

注記6 参照動作及び波及動作は,意図的とみなす。SQLトランザクション又はSQLセションの終了

に伴う動作は,意図的とはみなさない。 

3.1.1.15 

(オブジェクトの)特性 [property (of an object)] 

オブジェクトの属性,質又は特徴。 

3.1.1.16 

行 (row) 

行型の値,すなわち,フィールド値の並び,表中の行については,列値の並び。 

3.1.1.17 

(規格の)適用範囲 [scope (of a standard)] 

規格の主題及び取り扱う側面を規定する規格の箇条。それによってその規格又はその規格の特定の部の

適用可能性の限界を示す。 

3.1.1.18 

(名前又は宣言の)有効範囲 [scope (of a name or a declaration)] 

名前又は宣言が効力をもつ一つ以上のBNF非終端記号。 

3.1.1.19 

(参照型の)有効範囲 [scope (of a reference type)] 

その参照型の値が参照する表。 

3.1.1.20 

並び (sequence) 

必ずしも異ならないオブジェクトの順序付けられた集まり。 

3.1.1.21 

格納場所 (site) 

特定のデータ型(又はそのデータ型の下位型)の値の実現値によって占められる場所。 

3.1.1.22 

サイズ項目 (sizing item) 

SQL処理系又はプロファイルで定義される処理系定義項目の値。 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

3.1.1.23 

SQLコネクション (SQL-connection) 

SQLクライアントとSQLサーバとの間のアソシエーション。 

3.1.1.24 

SQL環境 (SQL-environment) 

SQLデータが存在し,SQL文を実行する文脈。 

3.1.1.25 

SQL処理系 (SQL-implementation) 

SQL文を処理する処理系。 

注記7 規格に適合するSQL処理系 (conforming SQL-implementation) は,“8 適合性”で規定するSQL

処理系の要件を満たすSQL処理系とする。 

3.1.1.26 

SQLセション (SQL-session) 

単一の利用者が単一のSQLエージェントから,単一のSQLコネクション上で,連続するSQL文の並び

を実行する文脈。 

3.1.1.27 

SQL文 (SQL-statement) 

JIS X 3005 (ISO/IEC 9075) 規格群の各規格で規定する形式及び構文規則に適合する文字列。 

3.1.1.28 

表 (table) 

0個以上の行の集まり。 

3.2 

語の用法 

JIS X 3005 (ISO/IEC 9075) 規格群が基にする概念は,単語の一般的な意味でオブジェクトとして記述さ

れる。 

オブジェクトは,それが依存するオブジェクトの構成要素と考えることができる。オブジェクトが存在

しなくなると,そのオブジェクトに依存する全てのオブジェクトも,存在しなくなる。オブジェクトの表

現は,記述子として知られている。オブジェクトの記述子は,そのオブジェクトについて知る必要がある

全てのものを表現する(“6.3.4 記述子”も参照)。 

3.3 

参考要素 

JIS X 3005 (ISO/IEC 9075) 規格群の本体の幾つかの箇所で,参考の注記が現れる。例えば,次のとおり。 

注記8 これは,注記の例です。 

これらの注記は,JIS X 3005 (ISO/IEC 9075) 規格群の規定の一部ではない。これらの注記中の記述への

適合性の主張は,意味がない。 

概念 

4.1 

警告 

この箇条4では,主として,JIS X 3005 (ISO/IEC 9075) 規格群の他の規格で正確に規定している概念を

記述する。食い違いのどのような場合も,他の規格での規定が正しいとみなす。 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

4.2 

SQL環境及びそれらの構成要素 

4.2.1 

SQL環境 

SQL環境は,次の構成要素から成る。 

− 一つのSQLエージェント。 

− 一つのSQL処理系。 

− SQLエージェントにとって利用可能な外部呼出し手続を含む0個以上のSQLクライアントモジュー

ル。 

− 0個以上の認可識別子。 

− 0個以上の利用者対応付け。 

− 0個以上のルーチン対応付け。 

− 0個以上のカタログ。カタログのそれぞれは,一つ以上のSQLスキーマ,0個以上の外部サーバ記述

子,及び0個以上の外部データ覆い記述子を含む。 

− スキーマの内容によって記述されるとおりの,SQLデータを含む格納場所,主として,実表。このデ

ータは,“データベース (database)”と考えてもよいが,一般の文脈では,異なる意味をもつので,JIS 

X 3005 (ISO/IEC 9075) 規格群では,その用語を用いない。 

4.2.2 

SQLエージェント 

SQLエージェント (SQL-agent) は,SQL文の実行を引き起こすエージェントとする。SQLの直接起動

(“5.3.3.3 SQLの直接起動”参照)の場合には,それは,処理系定義とする。代わりに,実行されたとき

に,SQLクライアントモジュール中の外部呼出し手続を呼び出す一つ以上の翻訳単位から成ってもよい。 

4.2.3 

SQL処理系 

SQL処理系 (SQL-implementation) は,SQLエージェントによって要求されるとおりにSQL文を実行す

る処理系とする。SQL処理系は,SQLエージェントによって認識されるとおりに,SQLエージェントが結

合される一つのSQLクライアントを含み,かつ,一つ以上のSQLサーバを含む。SQL処理系は,SQL環

境中に二つ以上のSQLサーバが存在することを許さないで,JIS X 3005 (ISO/IEC 9075) 規格群に適合す

ることができる。 

SQL処理系は,SQL文をどのように実行するかによってだけ規定することができるので,この概念は,

あるソフトウェア(データベース管理システム)を導入したものを示す。JIS X 3005 (ISO/IEC 9075) 規格

群は,ソフトウェアベンダによって決定されるSQL処理系の機能と,組込み元によって決定されるそれら

とを区別しない。 

JIS X 3005 (ISO/IEC 9075) 規格群は,SQLクライアント及びSQLサーバのソフトウェアが異なるベン

ダから得られた可能性があることを認識しており,SQLクライアントとSQLサーバとの間の通信方法を

規定しない。 

4.2.3.1 

SQLクライアント 

SQLクライアント (SQL-client) は,SQL処理系の部分としてSQLエージェントによって認識される処

理系で,それ自体とSQLサーバとの間のSQLコネクションを確立し,それ自体とSQLエージェント及び

SQLサーバとの間の相互作用に関連する診断領域及び他の状態データを維持する。 

一つ以上のSQLコネクションがSQLクライアントに対して確立されたとき,そのSQLクライアントに

よって維持される診断領域は,現行SQLコネクションのSQLサーバによって維持される診断領域スタッ

ク(“4.8.4 診断情報”参照)中の1番目の診断領域の写しとする。SQLコネクションが存在しないとき,

診断領域は,空か,又は失敗したSQLコネクションに関係する診断情報を含むかのいずれかとする。 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

4.2.3.2 

SQLサーバ 

各SQLサーバ (SQL-server) は,SQL処理系の部分としてSQLエージェントによって認識される処理系

で,SQLデータを管理する。 

各SQLサーバは,次のことを行う。 

− それ自体とSQLクライアントとの間のSQLコネクションを通して発生するSQLセションの管理。 

− SQLクライアントから受け取ったSQL文の実行,及び要求されるとおりのデータの送受信。 

− 認可識別子及び幾つかのセション既定値を含むSQLセションの状態の維持。 

4.2.4 

SQLクライアントモジュール 

SQLクライアントモジュール (SQL-client module) は,処理系定義の機構によって陽に作成され,削除さ

れるモジュールとする。 

SQLクライアントモジュールは,必ずしも名前をもたない。名前をもつならば,許される名前は,処理

系定義とする。 

SQLクライアントモジュールは,0個以上の外部呼出し手続 (externally-invoked procedure) を含む。外部

呼出し手続は,単一のSQL文から成る。外部呼出し手続は,ホスト言語の翻訳単位から呼び出される。 

いつでも,ただ一つのSQLクライアントモジュールがSQLエージェントに関連付けられる。しかし,

直接結合様式又はSQL/CLIのいずれかの場合には,これは,存在が利用者に見えない既定のSQLクライ

アントモジュールでもよい。 

4.2.5 

利用者識別子 

利用者識別子 (user identifier) は,利用者を表現する。利用者識別子を作成及び破壊する手段,並びに実

際の利用者とそれらとの対応付けは,JIS X 3005 (ISO/IEC 9075) 規格群では規定しない。 

4.2.6 

役割 

役割 (role) は,権限の潜在的な権限受領者及び権限付与者,並びに他の役割の潜在的な権限受領者及び

権限付与者とする。役割は,スキーマ及び他のオブジェクトを所有することもできる。 

役割認可 (role authorization) は,役割に対して付与された全ての権限を権限受領者(“4.6.11 権限”参照)

が用いることを許す。それは,役割認可が付与可能であるかどうかも示し,付与可能な場合には,権限受

領者は,役割を付与すること,役割の付与を剝奪すること,及び役割を破壊することを認可される。 

4.2.7 

利用者対応付けの概念 

利用者対応付けは,認可識別子を外部サーバ記述子と対にする。 

4.2.8 

ルーチン対応付けの概念 

ルーチン対応付けは,SQL呼出しルーチンを外部サーバ記述子と対にする。 

注記9 JIS X 3005 (ISO/IEC 9075) 規格群のこの版では,外部サーバ記述子と対にされるSQL呼出し

ルーチンは,SQL呼出し通常関数に制限される。将来の版で,この制限を削除するかもしれ

ない。 

4.2.9 

カタログ及びスキーマ 

4.2.9.1 

カタログ 

カタログ (catalog) は,SQL環境中のSQLスキーマ,外部サーバ記述子及び外部データ覆い記述子の名

前付きの集まりとする。カタログを作成及び破壊するための機構は,処理系定義とする。 

<PREPARE文>及び<EXECUTE IMMEDIATE文>の実行によって,現行SQLセション中で動的に準備さ

れる<準備可能文>に対する既定のカタログ名は,最初は,処理系定義とするが,<SET CATALOG文>の利

用によって変更してもよい。 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

4.2.9.2 

SQLスキーマ 

スキーマ (schema) としてよく単純に参照されるSQLスキーマ (SQL-schema) は,記述子の永続する名

前付きの集まりとする。SQLスキーマ中に記述子があるどのオブジェクトも,SQLスキーマオブジェクト 

(SQL-schema object) として知られている。 

スキーマ,その中のスキーマオブジェクト,及びそれらによって記述されるSQLデータは,スキーマに

関連付けられる認可識別子によって所有されるという。 

SQLスキーマは,SQLスキーマ文の実行(又は処理系定義の機構)によって作成され,破壊される。 

4.2.9.3 

情報スキーマ 

どのカタログも,INFORMATION̲SCHEMA(情報スキーマ)という名前をもつSQLスキーマを含む。

そのSQLスキーマは,多くのスキーマオブジェクトの記述子,主としてビュー定義を含み,SQLデータ

であるかのように,そのカタログ中の全ての記述子をアクセスすることも許すが,変更することは許さな

い。 

情報スキーマ中のビューを通して利用可能なデータは,情報スキーマそれ自体の記述子を含む。そのデ

ータは,定義スキーマのスキーマオブジェクト又は実表を含まない(“4.2.9.4 定義スキーマ”参照)。 

各情報スキーマビューは,与えられた利用者が権限をもつ記述子を表現するビューの行だけをその利用

者がアクセスできるように規定している。 

4.2.9.4 

定義スキーマ 

定義スキーマ (definition schema) は,DEFINITION̲SCHEMAという名前をもつ架空のスキーマとする。

存在するとしたならば,そのスキーマの実表中のSQLデータは,SQLサーバに利用可能な全てのSQLス

キーマを記述する。JIS X 3005 (ISO/IEC 9075) 規格群では,情報スキーマのビューのための基礎として用

いるためにだけ,それを定義している。 

定義スキーマの構造は,SQLのデータモデルの表現とする。 

4.2.10 外部サーバ及び記述子 

外部サーバは,SQL処理系の一部ではない処理系とする。外部サーバは,外部サーバ記述子によって記

述される。外部サーバは,SQL環境の一部ではないデータを管理する。SQLサーバ及びSQLクライアン

トは,カタログ要素である外部サーバ記述子を用いて外部サーバと通信することができる。外部サーバに

よって管理されるデータは,SQLスキーマ要素である外部表を通してSQLサーバ又はSQLクライアント

からアクセスできる。 

4.2.11 外部データ覆い及び記述子 

外部データ覆いは,外部サーバによって管理されるデータをSQLサーバがアクセスできる機構を提供す

る。外部データ覆いは,外部データ覆い記述子によって記述される。 

4.2.12 SQLデータ 

SQLデータ (SQL-data) は,SQLスキーマによって記述されるデータ,すなわち,SQL環境中のSQL処

理系の制御下にあるデータとする。 

4.3 

表 

表 (table) は,0個以上の行の集まりとし,各行は,一つ以上の列値の並びとする。一般に,表中の行は,

順序付けられていない。しかし,表が,<ORDER BY句>を直に含む<問合せ式>の結果ならば,表中の行

は,順序付けられる。各列は,名前及びデータ型をもつ。各行は,各列Cに対して,ただ一つの値をもち,

その値のデータ型は,Cのデータ型とする。 

SQLデータは,実表 (base table) と呼ばれる表変数だけで構成される。0個以上の実表を参照し,表を

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

戻す操作を問合せ (query) と呼ぶ。問合せの結果は,導出表 (derived table) と呼ぶ。導出表の行は,順序

付けられてもよい。 

表の行は,“行型 (row type)”と呼ばれる型をもつ。表のどの行も,同じ行型をもち,これを表の行型と

する。ある構造型を基にして宣言される表を“型付き表 (typed table)”と呼ぶ。その表の列は,名前及び

宣言型が構造型の属性に対応する。型付き表は,型が表の構造型に関連付けられる参照型である“自己参

照列 (self-referencing column)”と呼ばれる一つの付加的な列をもつ。 

型付き表TB1が,関連付けられた構造型TP1をもち,その構造型が別の構造型TP2の下位型ならば,

TB1は,関連付けられる型がTP2である型付き表TB2の“下位表 (subtable)”として定義することができ

る。この場合,TB2は,TB1の“上位表 (supertable)”とする。 

ビュー (view) は,名前付きの問合せとし,その名前を用いて呼び出すことができる。このような呼出し

の結果をビュー表 (viewed table) と呼ぶ。 

ビューを含めて問合せの中には,SQLデータを変更する文の相手として現れることができるという意味

で,更新可能 (updatable) なものがある。この方法で表現する変更の結果は,実表への対応する変更によ

って定義する。 

実表又はビュー表のどの二つの列も,同じ名前をもつことができない。ビュー表以外の導出表は,同じ

名前をもつ二つ以上の列を含んでもよい。 

実表は,(記述子がスキーマ中にある)スキーマオブジェクト(“4.6.5 実表及びその構成要素”参照)か

又は(記述子がモジュール中にある)モジュールオブジェクト(“4.9 モジュール”参照)かのいずれかと

する。記述子がスキーマ中にある実表は,作成実表 (created base table) と呼び,(その記述子は,いずれの

場合でも,永続であるが,)永続又は一時のいずれであってもよい。永続実表 (persistent base table) は,永

続SQLデータの0個以上の行を含む。永続実表は,通常永続実表 (regular persistent base table) 又はシス

テムバージョン表 (system-versioned table) のいずれかとする。システムバージョン表は,次の二つの大き

な点で通常永続実表と異なる。 

− システムバージョン表は,値が自動的に生成される日時型の二つの列をもつ。 

− システムバージョン表の更新及び削除の操作は,それらの列を保守し,その他の副次効果をもつ。 

モジュール中で宣言される実表は,一時だけとし,宣言一時表 (declared temporary table) と呼ぶ。 

一時表 (temporary table) は,他のどのSQLセションからもアクセスできないSQLセションオブジェク

トとする。大域一時表 (global temporary table) は,関連付けられるどのSQLクライアントモジュールから

もアクセスできる。局所一時表 (local temporary table) は,それが局所となるモジュールからだけアクセス

できる。 

SQLセションを開始するとき,一時表は,空とし,その一時表の記述子に依存して,SQLトランザクシ

ョンを終了するか,又はSQLセションを終了するかのいずれかのとき,空にされる(すなわち,その一時

表の全ての行が削除される。)。 

4.4 

SQLデータ型 

4.4.1 

データ型一般情報 

どのデータ値も,あるデータ型に属する。 

どのデータ型も,既定義 (predefined),構成 (constructed) 又は利用者定義 (user-defined) のいずれかとす

る。どのデータ型も,名前をもつ。既定義又は構成のデータ型の名前は,JIS X 3005 (ISO/IEC 9075) 規格

群のデータ型を規定する規格によって規定する予約語とする。利用者定義型の名前は,その利用者定義型

の定義中で与える。利用者定義のデータ型は,スキーマオブジェクトとする(“4.6.4 利用者定義型”参照)。 

10 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

既定義のデータ型は,JIS X 3005 (ISO/IEC 9075) 規格群によって規定するデータ型とする。したがって,

SQL処理系によって提供される。データ型を指定するとき,あるパラメタ(例えば,数の精度)を利用者

が与えることを要求する(又は許す)としても,そのデータ型は,既定義とする。 

既定義のデータ型は,基本単位とする。基本単位の型は,他のデータ型の値を複合していない値をもつ

データ型とする。データ列又は日時の値の部分を選択することができる操作(SUBSTRING,EXTRACT)

が存在するが,データ列又は日時が基本単位ではないことを意味するわけではない。 

構成型は,基本単位又は複合のいずれかとする。複合の型は,値のそれぞれが,宣言型のそれぞれの0

個以上の値から成るデータ型とする。 

4.4.2 

ナル値 

どのデータ型も,ナル値 (null value) と呼ばれる特殊な値を含み,ときには,それをキーワードNULL

で示す。この値は,次の点において他の値とは異なる。 

− どのデータ型中にもナル値があるので,キーワードNULLによって暗に想定されるナル値のデータ型

を推論することができない。したがって,NULLは,定数が許される全ての場所ではなく,ある文脈

中でだけナル値を示すために用いることができる。 

− ナル値は,幾つかの文脈中で,他のどの値とも等しくもなく,等しくなくもない,すなわち,与えら

れたどの値とも等しいかどうかが不定 (unknown) であるが,複数のナル値は,一緒にして扱う。例え

ば,<GROUP BY句>は,全てのナル値を一緒にして扱う。 

4.4.3 

既定義型 

4.4.3.1 

数型 

2種類の数型,すなわち,整数型及び指定された精度と位取りとをもつ型を含む真数 (exact numeric),

並びに本質的に浮動小数点であり,省略可能な精度を指定してもよい概数 (approximate numeric) がある。 

どの数も,精度 (precision)(桁数)をもち,真数型は,位取り(小数点以下の桁数)ももつ。異なる数

型又は同じ数型のオペランドに対して,算術演算を実行してもよく,その結果は,オペランドの数型にだ

け依存する数型とする。結果が結果の型で正確に表現できないならば,それを丸めるか又は切り捨てるか

は,処理系定義とする。結果が結果の型の数値の範囲外か,又はオペランドに対して算術演算が定義され

ていないならば,例外条件が引き起こされる。 

4.4.3.2 

文字列型 

文字列型 (character string type) の値は,ある文字レパートリから引き出した文字のデータ列(並び)と

する。文字列S中の文字は,全て,同じ文字集合CSから引き出される。Sが,ある式Eの値ならば,CS

は,Eの宣言型に対して指定される文字集合とする。文字列型は,処理系定義のある最大長までの固定長

か又は可変長のいずれかとする。文字長大オブジェクト型 (character large object type) の値は,ある文字

レパートリからの文字のデータ列とし,常に,ただ一つの文字集合に関連付けられる。長大オブジェクト

文字列 (large object character string) は,処理系定義のある最大長までの可変長とし,その最大長は,他の

文字列の最大長よりもおそらく大きい。 

文字列は,データ型中でCHARACTER SETを指定することによって,特定の文字集合を基にするもの

として指定してもよい。データ型としてNATIONAL CHARACTER,NATIONAL CHARACTER VARYING

若しくはNATIONAL CHARACTER LARGE OBJECT(又は幾つかの構文的に等価なもののうちの一つ)を

指定することによって,処理系によって各国文字集合 (national character set) に選択された特別の文字集

合を指定してもよい。 

11 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

4.4.3.3 

2進オクテット列型 

2進オクテット列型 (binary string type) の値は,オクテットのデータ列(並び)とする。2進オクテット

列型は,処理系定義のある最大長までの固定長か又は可変長のいずれかとする。2進オクテット長大オブ

ジェクト型 (binary large object type) の値は,オクテットのデータ列とする。長大オブジェクト2進オクテ

ット列 (binary large object string) は,処理系定義のある最大長までの可変長とし,その最大長は,他の2

進オクテット列の最大長よりもおそらく大きい。 

4.4.3.4 

ブール型 

ブール (boolean) データ型の値は,真 (true) 又は偽 (false) のいずれかとする。不定 (unknown) の真理

値がナル値によって表現されることもある。 

4.4.3.5 

日時型 

日時フィールドから成る値を指定する三つの日時型 (datetime type) がある。 

データ型TIMESTAMPの値は,日時フィールドYEAR(0001から9999まで),MONTH,DAY,HOUR,

MINUTE及びSECONDの値から成る。 

データ型TIMEの値は,日時フィールドHOUR,MINUTE及びSECONDの値から成る。 

データ型DATEの値は,日時フィールドYEAR(0001から9999まで),MONTH及びDAYの値から成

る。 

DATEの値は,グレゴリオ暦による正しい日付とする。TIMEの値は,正しい時刻とする。 

TIMESTAMP及びTIMEには,小数秒精度の(10進)桁数を指定してもよい。 

TIMESTAMP及びTIMEには,WITH TIME ZONEも指定してもよく,その場合には,どの値も,一つの

時刻帯時差が関連付けられる。WITH TIME ZONE付きのデータ型の値の比較では,時刻帯時差の値を無視

する。 

4.4.3.6 

時間隔型 

時間隔型 (interval type) の値は,時刻の期間の間隔を表現する。2種類の時間隔がある。1種類は,年月

時間隔 (year-month interval) と呼ばれ,YEARフィールド若しくはMONTHフィールド,又はそれらの両

方を含む時間隔精度をもつ。もう1種類は,日時刻時間隔 (day-time interval) と呼ばれ,陽に指定される

か又は暗に想定される時間隔精度をもち,YEAR又はMONTH以外の連続するフィールドの任意の集合を

含むことができる。 

4.4.3.7 

XML型 

XML型の値は,XML値と呼ぶ。 

4.4.4 

基本単位の構成型 

4.4.4.1 

参照型 

参照型 (reference type) は,構成データ型で,その型の値は,被参照型の値を保持している格納場所を参

照する(又は指す)。そのように参照してもよい格納場所は,型付き表の行だけとする。したがって,どの

被参照型も,構造型ということになる。 

4.4.5 

複合の構成型 

4.4.5.1 

集まり型 

集まり (collection) は,要素型 (element type) として知られる指定されたデータ型の0個以上の要素から

成る。 

配列 (array) は,必ずしも異ならない値の順序付けられた集まりとし,その集まりの要素は,配列中の

順序位置によって参照する。 

12 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

配列型は,配列型構成子によって指定する。 

マルチ集合 (multiset) は,必ずしも異ならない値の順序付けられない集まりとする。 

マルチ集合型は,マルチ集合型構成子によって指定する。 

4.4.5.2 

フィールド 

フィールドは,(フィールド名,データ型)対とする。フィールドの値は,そのフィールドのデータ型の

値とする。 

4.4.5.3 

行型 

行型は,一つ以上のフィールドの並びとする。行型の値は,そのフィールドの値の並びとする。 

4.5 

格納場所及び格納場所に関する演算 

4.5.1 

格納場所 

格納場所 (site) は,指定されたデータ型の値の実現値を保持する場所とする。全ての格納場所は,デー

タ型とは無関係に,定義された永続性の程度をもつ。意図的に破壊されるまで存在する格納場所は,永続

的 (persistent) であるという。複合SQL文の完了,SQLトランザクションの終了,又はSQLセションの終

了で必然的に存在しなくなる格納場所は,一時的 (temporary) であるという。引数又は戻り値を保持する

必要のある間だけ存在する格納場所は,過渡的 (transient) であるという。 

既に示したとおり,永続的又は一時的な主要な格納場所は,実表とする。実表は,特殊な種類の格納場

所とし,SQL処理系が強制するように要求される制約を,その表の値に対して指定することができる

(“4.6.5.4 表制約”参照)。 

幾つかの格納場所は,それらの名前で参照してもよい。これは,例えば,実表及びSQL変数([ISO9075-4] 

参照)である。幾つかの格納場所は,REF値で参照してもよい。配列の要素によって占められる格納場所

は,その要素の要素番号で参照してもよい。 

4.5.2 

代入 

格納場所の実現値は,代入 (assignment) の操作によって変更することができる。代入は,[相手 (target) 

として知られている]格納場所の実現値を,[代入元 (source) の値として知られている](おそらく異な

る)値の新しい実現値で置き換える。代入において,格納場所の参照値があったとしても,その値に対す

る効果はない。 

4.5.3 

ナル可能性 

全ての格納場所には,ナル可能性特性 (nullability charasteristic) があり,その特性は,ナル値を含むこ

とができる[潜在的にナル可能 (possibly nullable) である]か,できない[ナル可能でないことが分かる 

(known not nullable)]かを示す。実表の列だけを,ナル可能でないことが分かるように制約することができ

るが,そのような列から導出される列は,その特性を引き継ぐことができる。 

表に行が存在しなくてもよいが,表は,ナルではあり得ない。 

4.6 

SQLスキーマオブジェクト 

4.6.1 

SQLスキーマオブジェクト一般情報 

SQLスキーマオブジェクトは,記述子をもつ。永続実表の記述子は,SQLデータとしての存在に依存は

しているが別のものである永続オブジェクトを記述する。他の記述子は,[少なくともJIS X 3005 

(ISO/IEC 9075) 規格群が関係する限りにおいて,]それらの記述子とは異なる存在をもたないSQLオブジ

ェクトを記述する。したがって,例えば,“表明記述子 (assertion descriptor)”がより厳密に正確であるとき,

“表明 (assertion)”という用語を用いても,正確さを失うことはない。 

全てのスキーマオブジェクトは,それが属する名前の種類のオブジェクト間でスキーマ内で一意な名前

13 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

をもつ。名前の種類は,次のとおりとする。 

− 実表及びビュー。 

− 定義域及び利用者定義型。 

− 表制約,定義域制約及び表明。 

− SQLサーバモジュール。 

− トリガ。 

− SQL呼出しルーチン(特定名だけとする。これは,陽に指定しなくてもよいが,その場合は,処理系

依存である。)。 

− 文字集合。 

− 照合順。 

− 文字変換。 

− 順序数生成子。 

幾つかのスキーマオブジェクトは,それらが属するオブジェクト内で一意となるように要求される名前

をもつ名前付きの構成要素をもつ。したがって,列は,実表又はビューの,一意な名前付きの構成要素と

し,属性は,構造型の,一意な名前付きの構成要素とし,フィールドは,行型の,一意な名前付きの構成

要素とする。 

幾つかのスキーマオブジェクトは,SQL処理系によって提供されてもよく,利用者が作成することも削

除することもできない。 

4.6.2 

文字集合に関連する記述子 

4.6.2.1 

文字集合 

文字集合 (character set) は,名前付きの文字符号化形式 (character encoding form) と同様に,文字列型

の値を構成するために用いてもよい,文字の名前付きの集合[文字レパートリ (character repertoire)]をも

つ。どの文字集合も,既定照合順 (default collation) をもつ。SQL処理系によって提供される文字集合は,

他の規格によって定義されても,SQL処理系によって定義されても,情報スキーマ中で表現される。 

文字がSQL処理系に完全に含まれるとき,それらを符号化して文字列にまとめる方法は,処理系依存と

する。文字がホストプログラム又はSQL処理系の外側の他の実体との間で交換されるとき,文字集合は,

各文字を表現するために用いるビット列を指定する符号化,及び文字の集まりを文字列にまとめるために

用いる仕組み (scheme) を指定する文字符号化形式 ももつ。 

SQL処理系によって提供されるどの文字集合の文字レパートリも,JIS X 0221 [ISO10646] で規定してい

る国際文字集合のレパートリの部分集合とする。 

JIS X 0221 [ISO10646] の“6.5 符号位置の短い識別子 (UID) (Short identifiers for code positions) (UIDs)”

で規定している表記法は,JIS X 3005 (ISO/IEC 9075) 規格群の文字及び文字列の正規の表現とする。 

注記10 JIS X 0221 [ISO10646] は,“私用 (private use)”のための符号位置の範囲を割り当てる。JIS X 

0221 [ISO10646] の将来の版は,SQL処理系での提供を必要とするようなより多くの符号位

置をおそらく追加するだろう。 

4.6.2.2 

照合順 

照合順 (collation) は,特定の文字レパートリ中で文字列を順序付けるための名前付きの操作とする。 

文字列型で宣言する格納場所には,データ型の部分として扱われる照合順をもつように指定してもよい。 

どの照合順も,[ISO14651] のような国際規格によって定義されるか若しくはそれから導出されるか,国

14 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

家規格によって定義されるか,又は処理系定義の照合順でなければならない。 

4.6.2.3 

文字変換 

文字変換 (transliteration) は,ある文字集合の文字列から,必ずしも異ならない与えられた文字集合の文

字列への対応付けのための名前付きの操作とする。その操作は,文字変換の名前によって識別される外部

関数の呼出しによって実行される。文字列全体がこの関数に渡され,文字列が戻されるので,必ずしも一

つの文字から一つの文字への対応付けである必要はなく,一つ以上の文字の並びから一つ以上の文字の別

の並びへの対応付けであってもよい。 

4.6.3 

定義域及びその構成要素 

4.6.3.1 

定義域 

定義域 (domain) は,データ型を指定できる幾つかの箇所にデータ型の代替として指定できる名前付き

の利用者定義オブジェクトとする。定義域は,データ型,省略可能な既定値選択肢,及び0個以上の(定

義域)制約から成る。 

4.6.3.2 

定義域制約 

定義域制約 (domain constraint) は,その定義域制約の定義域を基にする各列に対する表制約として作用

することによって,そのような全ての列に適用される。 

定義域制約は,関連付けられる定義域を基にする列にだけ適用される。 

定義域制約は,定義域への型変換 (cast) 操作の結果となるどの値にも適用される。 

4.6.4 

利用者定義型 

4.6.4.1 

利用者定義型の導入 

利用者定義型は,<利用者定義型名>によって識別されるスキーマオブジェクトとする。利用者定義型は,

個別型 (distinct type) か又は構造型 (structured type) のいずれかとする。 

4.6.4.2 

個別型 

個別型 (distinct type) は,ある既定義型又は集まり型を基にする利用者定義のデータ型とする。個別型

の値は,それが基にする型の値によって表現される。 

個別型の引数は,同じ個別型のパラメタに対してだけ渡すことができる。これは,そのデータ型の引数

に関してどのルーチンを呼び出すことができるかを厳密に制御することを可能とする。 

4.6.4.3 

構造型 

構造型 (structured type) は,名前付きの利用者定義のデータ型とする。属性 (attribute) は,構造型の名

前付きの構成要素とする。構造型の各属性は,データ型及び既定値をもつ。 

構造型の値は,幾つかの属性値 (attribute value) から成る。属性値は,隠蔽されている (encapsulated) と

いう。すなわち,アクセス可能だとしても,利用者に対して直接アクセス可能でない。属性値は,その値

を戻す観測関数 (observer function) として知られている関数を呼び出すことによってだけアクセス可能と

する。構造型の値は,位置付け子 (locator) によってアクセスすることもできる。 

構造型は,その型の直接上位型 (direct supertype) として知られている別の構造型の下位型 (subtype) と

して定義してもよい。下位型は,その型の直接上位型の全ての属性を継承 (inherit) し,それ自体の追加の

属性をもってもよい。下位型の式は,その型の上位型の式が許されるどの場所に現れてもよい[この概念

は,代替可能性 (substitutability) として知られている。]。さらに,式の値は,式の宣言型のどの下位型の

値であってもよい。 

構造型を基にして一つ以上の実表を定義することができる。構造型STを基にする実表は,STの上位型

を基にする実表の下位表 (subtable) にすることができる。 

15 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

構造型を基にして一つ以上のビューを定義することができる。構造型STを基にするビューは,STの上

位型を基にするビューの下位ビュー (subview) にすることができる。 

4.6.5 

実表及びその構成要素 

4.6.5.1 

実表 

実表 (base table) は,表の値を保持する格納場所とする(“4.3 表”参照)。全てのSQLデータは,実表

中に保持される。 

実表が構造型を基にするならば,その表の上位表 (supertable) である一つ以上の別の実表の下位表 

(subtable) であってもよい。 

4.6.5.2 

列 

列 (column) は,表の名前付きの構成要素とする。列は,データ型,既定値,及びナル可能性特性をも

つ。 

4.6.5.3 

期間 

期間 (period) は,単一の実表に関連付けられるオブジェクトとする。ある表に対する期間定義は,その

表に対して定義された列名の対に期間名を関連付ける。それらの列は,両方とも,日時データ型で,かつ,

ナル可能でないことが分かっていなければならない。さらに,両方の列の宣言型が同一でなければならな

い。 

4.6.5.4 

表制約 

表制約 (table constraint) は,単一の実表に関連付けられる整合性制約とする。 

表制約は,一意性制約 (unique constraint),主キー制約 (primary key constraint),参照制約 (referential 

constraint) 又は検査制約 (check constraint) のいずれかとする。 

一意性制約は,一意列 (unique columns) として表の一つ以上の列を指定する。一意性制約を満たすこと

は,表中のどの二つの行も,ナルを除き一意列中に同じ値をもたないことと同値とする。 

主キー制約は,PRIMARY KEYを指定する一意性制約とする。主キー制約を満たすことは,表中のどの

二つの行も,ナルを除き一意列中に同じ値をもたず,かつ,指定された一つ又は複数の列中のどの値も,

ナル値でないことと同値とする。 

参照制約は,参照列 (referencing columns) として一つ以上の列を指定し,被参照表 (referenced table) と

して参照される(必ずしも別の表ではない)ある実表の対応する被参照列 (referenced columns) を指定する。

このような被参照列は,被参照表の一意性制約の一意列とする。参照表中の全ての行に対して,参照列の

値が,被参照表中のいずれかの行の対応する被参照列の値と等しいならば,参照制約を常に満たす。しか

し,ナル値が存在するならば,参照制約を満たすことは,ナルに対して指定する[一致型 (match type) と

して知られている]扱いに依存する。 

参照動作 (referential action) は,被参照表に対する変更が参照制約の違反を引き起こすことになる場合

に参照表に対してどんな変更を行うべきかを決定するために指定してもよい。 

表検査制約は,探索条件 (search condition) を指定する。表の,いずれかの行に対して,探索条件の結果

が偽 (False) ならば,制約に違反する(しかし,不定 (Unknown) ならば,違反しない。)。 

4.6.5.5 

トリガ 

トリガ (trigger) は,単一の実表又は単一のビュー表に関連付けられるオブジェクトとする。トリガは,

当該表 (subject table),トリガ事象 (trigger event),トリガ動作時期 (trigger action time) 及び一つ以上の被

トリガ動作 (triggered actions) を指定する。 

トリガ事象は,当該表に関するどんな動作が被トリガ動作を引き起こさなければならないかを指定する。

16 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

トリガ事象は,INSERT,DELETE又はUPDATEのいずれかとする。 

トリガ動作時期は,被トリガ動作がトリガ事象の前(BEFORE)に実行されるか,代わり(INSTEAD OF)

に実行されるか,又は後(AFTER)に実行されるかを指定する。 

被トリガ動作は,一つの<SQL手続文>か,又はBEGIN ATOMIC,その後に続く,それぞれが<セミコロ

ン>で終了する一つ以上の<SQL手続文>,及びその後に続くENDのいずれかとする。 

4.6.6 

ビュー定義 

ビュー (view)[厳密には,ビュー定義 (view definition)]は,多くの目的のために実表と同じ方法で用い

てもよい名前付きの問合せとする。ビューの値は,問合せを評価した結果とする(“4.3 表”も参照)。 

4.6.7 

表明 

表明 (assertion) は,検査制約とする。探索条件の結果が偽 ならば,制約に違反する(しかし,不定 な

らば,違反しない。)。 

4.6.8 

SQLサーバモジュール([ISO9075-4] で規定) 

SQLサーバモジュール (SQL-server module) は,スキーマオブジェクトであるモジュールとする(“4.9 モ

ジュール”参照)。 

4.6.9 

スキーマルーチン 

スキーマルーチン (schema routine) は,スキーマオブジェクトであるSQL呼出しルーチンとする(“4.10 

ルーチン”参照)。 

4.6.10 順序数生成子 

順序数生成子 (sequence generator) は,連続した真数値を一度に一つ生成するための機構とする。順序

数生成子は,外部順序数生成子 (external sequence generator) 又は内部順序数生成子 (internal sequence 

generator) のいずれかとする。内部順序数生成子は,他のスキーマオブジェクトの構成要素とするが,外

部順序数生成子は,名前付きのスキーマオブジェクトとする。順序数生成子は,データ型をもち,その型

は,位取り0の真数型でなければならない。順序数生成子は,時刻とともに変化する現在基底値 (current 

base value) をもち,それは,順序数生成子のデータ型の値とする(詳細は,[ISO9075-2] の“4.22 順序数

生成子”参照)。 

4.6.11 権限 

権限 (privilege) は,指定されたスキーマオブジェクトを利用するために,又は指定されたスキーマオブ

ジェクトに関する指定された動作を実行するために必要となる認可の,(認可識別子,役割又はPUBLIC

のいずれかである)指定された権限受領者への,ある権限付与者による付与を表現する。指定可能な動作

は,SELECT,INSERT,UPDATE,DELETE,REFERENCES,USAGE,UNDER,TRIGGER及びEXECUTE

とする。 

付与選択肢付き (with grant option) の権限は,付与選択肢付き又は付与選択肢なしで,権限受領者が別

の権限受領者にその権限を付与することを認可する。 

階層選択肢付き (with hierarchy option) のSELECT権限は,権限が付与される表の,既に存在するか又は

将来追加されるかもしれない全ての下位表に関するSELECT権限を権限受領者に自動的に与える。 

可能などの権限受領者も,PUBLICに付与された権限によって認可される。情報スキーマ中のどのスキ

ーマオブジェクトに対しても,付与選択肢付きのSELECT権限がPUBLICに付与される。 

スキーマオブジェクトを作成する認可識別子には,そのオブジェクトに関する可能な全ての権限が,付

与選択肢付きで自動的に付与される。 

スキーマオブジェクトに関する権限をもつ認可識別子だけが,そのオブジェクトの存在を知ることがで

17 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

きる。 

4.7 

整合性制約及び制約検査 

4.7.1 

制約検査 

制約を記述するスキーマオブジェクトには,表明及び(表の列が基にしてもよい定義域の定義域制約も

含む)表制約の2種類があり,これらは,同じ方法で検査される。 

表制約は,強制 (enforced) か,又は強制でない (not enforced) かのいずれかとする。定義域制約及び表

明は,常に強制とする。 

どの制約も,遅延可能 (deferrable) か,又は遅延可能でない (not deferrable) かのいずれかとする。 

どのSQLセション中でも,全ての制約がそのSQLセションの特性である制約モード (constraint mode)

をもつ。各制約は,(永続的な)既定の制約モードをもち,各SQLセション中の各SQLトランザクション

とともに,そのモードで制約が始まる。 

制約モードは,遅延 (deferred) 又は即時 (immediate) のいずれかとし,制約が遅延可能の場合に,SQL

文によって設定することができる。 

トランザクションが開始するとき,各制約の制約モードには,それの既定値が設定される。 

どのSQL文の実行の完了時にも,制約モードが即時である全ての強制制約が検査される。 

トランザクションの終了前に,全ての制約モードには,即時が設定される(したがって,全ての強制制

約が検査される。)。 

4.7.2 

決定性及び制約 

式の評価結果は,非決定的であってもよい。例えば,データ型が可変長文字列の列の場合には,重複の

排除後に残る値は,たとえデータが同じであっても,時機が異なれば異なってもよい。これは,後続する

空白の個数が互いに重複する値の間で異なってもよいために起こる可能性があり,重複が排除された後に

保持すべき値は,JIS X 3005 (ISO/IEC 9075) 規格群で規定しない。したがって,その値の長さは,非決定

的となる。このような場合に,式,及び導出される値をもつ式は,潜在的に非決定的 (possibly 

non-deterministic) であるという[列を更新する全てのSQLエージェントが後続する空白を取り除くかもし

れないが,このことは,SQL処理系が知り得ないので,“潜在的 (possibly)”である。]。 

潜在的に非決定的な式を含む制約は,ある時点で満たされても,その後のある時点で満たされないかも

しれないので,制約がそのような式を含むことは許されない。 

ルーチンは,決定的であることを主張してもよい。それが決定的でないならば,ルーチンを呼び出す効

果は,処理系依存とする。 

4.8 

SQLエージェントとSQLサーバとの間の通信 

4.8.1 

ホスト言語 

ホスト言語 (host language) は,SQLエージェントを記述するために用いることができるプログラム言語

とする。SQLエージェントと成功裏に通信するSQL処理系に対しては,SQL処理系によって提供される

ホスト言語を用いて,SQLエージェントを書かなければならない。SQL処理系によって提供されるホスト

言語の集合は,処理系定義とする。[ISO9075-2],[ISO9075-3] 及び [ISO9075-10] は,SQL処理系と幾つ

かのプログラム言語との間の結合を規定し,それらのほとんどの言語に対して,JIS又は国際規格が存在

する。規格に適合するSQL処理系は,JIS X 3005 (ISO/IEC 9075) 規格群が結合を規定する少なくとも一

つのホスト言語を提供することが要求される。 

結合様式 (binding style) として知られている幾つかの通信方法がある。 

− ([ISO9075-2] で規定する)SQLクライアントモジュール結合様式。この結合様式では,利用者は,

18 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

処理系定義の機構を用いて,SQLクライアントモジュールとして利用すべきモジュールを指定する。 

− ([ISO9075-3] で規定する)呼出しレベルインタフェース。この場合には,SQLエージェントは,あ

るSQL文を値としてもつ文字列などの適切な引数を渡して,多くの標準ルーチンのうちの一つを呼び

出す。 

− ([ISO9075-2] 及び [ISO9075-10] で規定する)埋込みSQL。この場合には,SQL文を適用業務プロ

グラム中に記述する。次のことを行うために処理系依存の機構が用いられる。 

・ 各SQL文から外部呼出し手続を生成する。これらの手続は,SQLクライアントモジュールとして

の後で用いるために,一つのモジュールにまとめる。[ISO9075-10] で規定するオブジェクト言語結

合では,モジュール及び手続の役割は,クラス及びそれらのメソッドが果たす。 

・ 各SQL文を,それから生成された外部呼出し手続又はメソッドの呼出しに置き換える。 

− ([ISO9075-2] で規定する)SQLの直接起動。直接起動は,利用者と直接通信するフロントエンドを

通して,SQL文を直接実行する方法とする。 

どの結合様式を選択しても,SQL文は,ソース言語文字集合 (source language character set) として知ら

れている処理系定義の文字集合で記述する。ソース言語文字集合がSQLデータ中に現れるどの文字列の文

字集合とも同じである必要はない。 

[ISO9075-2] は,SQLクライアントモジュール中の外部呼出し手続がホスト言語プログラムによって呼

び出されるときの,外部呼出し手続の動作を規定する。[ISO9075-10] は,SQLクライアントのクラスのメ

ソッドがホストプログラムによって呼び出されるときの,メソッドの動作を規定する。 

4.8.2 

パラメタの渡し方及びデータ型対応 

4.8.2.1 

パラメタの一般的な渡し方及びデータ型対応情報 

外部呼出し手続のパラメタリスト中の各パラメタは,名前及びデータ型をもつ。翻訳単位に対する外部

ルーチンの参照とその翻訳単位との間の結合の方法及び時期は,処理系定義とする。 

4.8.2.2 

データ型対応 

JIS X 3005 (ISO/IEC 9075) 規格群は,SQLのデータ型とホスト言語のデータ型との間の対応を規定する。

全てのSQLのデータ型が全てのホスト言語中に,対応するデータ型をもつわけではない。 

4.8.2.3 

位置付け子 

ホスト変数,ホストパラメタ,外部ルーチンのSQLパラメタ,又は外部関数によって戻される値は,位

置付け子 (locator) として指定してもよい。位置付け子の目的は,非常に大きいデータの実現値の値全体

をSQLエージェントとの間で転送しないで,それらの値を操作することを許すことにある(詳細は,

[ISO9075-2] の“4.30.5 位置付け子”参照)。 

4.8.2.4 

状態パラメタ 

どの外部呼出し手続も,状態パラメタ (status parameter) として知られているSQLSTATEと呼ばれる出

力パラメタをもつ必要がある。 

SQLSTATEは,長さ5の文字列とし,それの値は,JIS X 3005 (ISO/IEC 9075) 規格群の各規格で規定す

る。値がʼ00000ʼのSQLSTATE値は,外部呼出し手続の最も新しい呼出しが成功したことを示す。 

4.8.2.5 

標識パラメタ 

標識パラメタ (indicator parameter) は,(標識パラメタ以外の)パラメタの直後に続けて指定することに

よって,それに関連付けられる整数パラメタとする。標識パラメタ中の負の値は,関連付けられたパラメ

タがナルであることを示す。1以上の値は,関連付けられたパラメタの値を切り捨てる必要がなかったな

19 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

らば,その値の長さが何であったかを示す。これは,文字列型及び他の幾つかのデータ型で発生してもよ

い。 

標識パラメタが関連付けられないパラメタにナル値が代入されることになるならば,例外条件が引き起

こされる。 

4.8.3 

記述子領域 

記述子領域 (descriptor area) (記述子と混同してはならない。)は,SQLエージェントの要求でSQL処

理系が割り当てる名前付き領域とする。記述子領域は,SQL処理系とSQLエージェントとの間の通信の

ために用いる。SQLエージェントと記述子領域との間で情報を転送するためのSQL文がある。 

4.8.4 

診断情報 

診断領域 (diagnostics area) は,SQL処理系が割り当てる通信領域とし,一つ以上の条件 (condition) が

引き起こされたときに,それらの条件をその診断領域中に記録する。 

SQL処理系が(SQL診断文以外の)SQL文を実行するときには,SQL処理系は,その実行の結果とし

て生じる一つ以上の条件を表現する値を診断領域中に設定する。これらの値は,何が発生したかを示す標

識を与える。それらは,SQL診断文によってアクセスすることができる。SQL診断文の実行は,記録され

るべき条件を引き起こさない。 

規格に適合するSQL処理系は,同時に二つ以上の条件を設定する必要がない。 

SQL文SSがSQLサーバによって実行されているとき,複数の診断領域が存在してもよい。これは,SS

の実行が完了する前に,同時に,SSの実行が別のSQL文の実行を引き起こす,幾つかの特定の状況で発

生する。複数の診断領域は,プッシュダウンスタックを形成し,そのスタックの1番目の要素が,最も新

しく実行されたSQL文に関連した情報を含む。追加の診断領域が存在するようになる場合の二つの例とし

て,SSが<CALL文>であるか又は<CALL文>を含む場合,及びSSの実行が被トリガ動作の実行を引き起

こす場合がある。 

4.8.5 

SQLトランザクション 

SQLトランザクション (SQL-transaction)[トランザクション (transaction)]は,回復に関しての基本単

位となる,SQL文の実行の並びとする。すなわち,実行結果が成功終了であるか,どのSQLスキーマ又

はSQLデータにも影響を与えないかのいずれかとする。 

どの時点においても,SQLエージェントとSQL処理系との間には,高々一つの現行SQLトランザクシ

ョンが存在する。 

現行SQLトランザクションがないならば,トランザクション開始文 (transaction-initiating statement) の

実行又は<副問合せ>の評価がトランザクションを開始する。 

どのSQLトランザクションも,COMMIT文又はROLLBACK文のいずれかによって終了する。これら

の文のいずれかの実行が暗に想定されてもよい。 

SQLトランザクションは,トランザクション状態 (transaction state) をもつ。トランザクション状態の

幾つかの特性は,SQL文の実行によって設定される。そのようなSQL文は,現行のSQLトランザクショ

ンがないときにだけ実行してもよい。トランザクションが開始される時点又はその後の,SQLクライアン

トがSQLサーバに接続するか又はコネクションを設定する最初の契機で,そのSQLサーバに特性が送ら

れる。 

SQLトランザクションのトランザクションアクセスモード (transaction access mode) は,トランザクシ

ョンが(どの永続SQLデータの変更も許されない)読込み専用か,又は(永続SQLデータの変更が許さ

れる)読み書き可能かを示す。 

background image

20 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

SQLトランザクションのトランザクション隔離性水準 (transaction isolation level) は,SQL環境中の別の

SQLエージェントによる動作の効果がそのSQLトランザクション内で認識される程度を指定する。 

どのトランザクション隔離性水準も,全てのSQLトランザクションが実行されることを保証する。完全

に実行されないSQLトランザクションは,完全に失敗する。どのトランザクション隔離性水準も,更新が

失われないことを保証する。最も高いトランザクション隔離性水準であるSERIALIZABLEは,時刻で重

なるSQLトランザクションの効果が,それらが時刻で重ならなかった場合に与えることになった効果と同

じであることを意味する直列化可能 (serializable) 実行を保証する。他のトランザクション隔離性水準であ

るREPEATABLE READ,READ COMMITTED及びREAD UNCOMMITTEDは,順に,より低い水準の隔

離性を保証する。 

4.9 

モジュール 

3種類のモジュールが存在し,それらのそれぞれは,幾つかの特性をもち,(モジュール内容としても知

られている)様々な種類のモジュールオブジェクトを含む。主要なモジュールオブジェクトは,一つ以上

のルーチンとする(“4.10 ルーチン”参照)。 

モジュールは,次のうちの一つとする。 

− 外部呼出し手続だけを含むSQLクライアントモジュール。 

− SQL呼出しルーチンだけを含むSQLサーバモジュール。 

4.10 ルーチン 

4.10.1 ルーチン一般情報 

表1“外部呼出しルーチンとSQL呼出しルーチンとの間の関係”は,SQLから呼び出されるルーチン及

び別の言語から呼び出されるルーチンだけでなく,SQLで書かれたルーチン及び別の言語で書かれたルー

チンとの可能な様々な組合せに対して用いる用語を示す。 

表1−外部呼出しルーチンとSQL呼出しルーチンとの間の関係 

SQLで書かれたルーチン 

SQL以外の言語で書かれたルーチン 

SQLから呼び出されるルーチン 

SQL関数及びSQL手続 

外部関数及び外部手続 

SQL以外の言語から呼び出されるルーチン 

外部呼出し手続 

(SQLに関連しない。) 

SQL呼出しルーチン (SQL-invoked routine) は,SQLから呼び出すことができるルーチンとする。それは,

関数又は手続のいずれかとする。幾つかの関数は,メソッド (method) としてそれらを特徴付ける特別な

特性をもつ。 

SQL呼出しルーチンは,スキーマオブジェクトか,又は(それ自体がスキーマオブジェクトである)SQL

サーバモジュールの構成要素のいずれかとする。 

SQL呼出し手続 (SQL-invoked procedure) は,SQLのCALL文によって呼び出される手続とする。SQL

呼出し関数 (SQL-invoked function) は,任意の値式中のルーチン呼出しによって呼び出される。 

外部ルーチン (external routine) は,指定されるプログラム言語の,SQL環境外にある翻訳単位を参照す

るSQL呼出しルーチンとする。そのような参照の結合の方法及び時期は,処理系定義とする。 

SQLルーチン (SQL routine) は,ルーチン本体がSQLで書かれたSQL呼出しルーチンとする。 

SQL呼出しルーチンの名前は,一意である必要がない。二つ以上のルーチンが同じ名前を共有するなら

ば,その名前は,オーバロードされ (overloaded) るといい,その名前の呼出しは,署名が呼出しの引数と

最も一致するルーチンの実行を引き起こす。通常,最も一致することを決定するときに,引数値を示す式

21 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

の宣言型だけが考慮されるが,固有の構文を用いて呼び出すメソッドの場合には,引数の一つの最特定型

が考慮される。 

4.10.2 型保持関数 

RESULTを指定するパラメタをSQL呼出し関数がもつならば,そのパラメタは,結果パラメタ (result 

parameter) として知られ,結果パラメタのデータ型と結果のデータ型とが同じ利用者定義型ならば,その

関数は,型保持関数 (type preserving function) という。型保持関数の結果は,結果パラメタの値とし,潜在

的に変異する。 

どの変異関数も,型保持関数とする。 

4.11 SQL文 

4.11.1 SQL文の種類 

SQL文は,JIS X 3005 (ISO/IEC 9075) 規格群の規格で規定する形式及び構文規則に適合する文字列とす

る。 

ほとんどのSQL文は,SQLクライアントモジュールで,実行のために準備し,実行することができる。

この場合には,SQL文が準備されるときに単一のSQL文をもつ外部呼出し手続が作成され,準備された

SQL文が実行されるときにはいつでも,その外部呼出し手続が暗に呼び出される。 

SQL文の分類方法には,少なくとも次の五つの方法がある。 

− 永続オブジェクト(すなわち,SQLデータ,SQLスキーマ及びそれらの内容,若しくはSQLクライ

アントモジュール)か,又は(SQLセション及びその他のSQL文のような)一時オブジェクトかに

かかわらず,SQLオブジェクトに対する効果による方法。 

− SQLトランザクションが動作中でないときに,SQLトランザクションを開始するかどうか,又は実行

できるか若しくは実行しなければならないかどうかによる方法。 

− ホスト言語で書かれたプログラム中に埋め込んでもよいかどうかによる方法。 

− 直接起動してもよいかどうかによる方法。 

− 動的に準備し,実行してもよいかどうかによる方法。 

JIS X 3005 (ISO/IEC 9075) 規格群は,これらのカテゴリのいずれかに分類できる処理系定義の追加の文

を処理系が提供することを許す。 

4.11.2 機能によって分類されたSQL文 

SQL文の大まかな種類を,次に示す。 

− スキーマ及びスキーマオブジェクトの作成,変更及び破壊のために用いることができるSQLスキーマ

文。 

− 表に対する問合せ,並びに挿入,更新及び削除の操作を実行するSQLデータ文。SQLデータ文の実

行は,二つ以上の表の二つ以上の行に効果を与えることができる。 

− トランザクションに対するパラメタを設定する,又はトランザクションを開始若しくは終了させる

SQLトランザクション文。 

− SQL文の並びの実行を制御するために用いてもよいSQL制御文。 

− コネクションを開始若しくは終了するSQLコネクション文,又はSQLクライアントが,あるSQLサ

ーバのSQLセションから別のSQLサーバのSQLセションに切り替えることを可能にするSQLコネ

クション文。 

− SQLセションの幾つかの既定値及びその他のパラメタを設定するSQLセション文。 

22 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

− (診断領域から)診断情報を取得する,又はSQLルーチン中で例外を信号として送るSQL診断文。 

− 動的に生成されたSQL文の準備及び実行,並びにそれらについての情報の取得機能を提供する動的

SQL文。 

JIS X 3005 (ISO/IEC 9075) 規格群の規格 

5.1 

概要 

この枠組 (Framework) 規格は,他の規格が基にする基本概念及びそれらで用いる表記法を記述するので,

他の全ての規格に必要不可欠なものとする。 

[ISO9075-2],すなわち,基本機能 (Foundation) は,SQL文の構造及びそれらの実行の効果を規定する。 

第1部及び第2部以外のJIS X 3005 (ISO/IEC 9075) 規格群のどの規格も,JIS X 3005 (ISO/IEC 9075) 規

格群の他の規格に対する追補として規定する[詳細は,“6.3.5 JIS X 3005 (ISO/IEC 9075) 規格群の規格の

関係”参照]。 

[ISO9075-3],すなわち,呼出しレベルインタフェース (Call-level interface) は,SQLエージェントとSQL

処理系との間の通信の別の機構を規定する。 

[ISO9075-4],すなわち,永続格納モジュール (Persistent Stored Modules) は,SQLを計算完備にするSQL

自体の重要な追加を規定する。 

[ISO9075-9],すなわち,外部データ管理 (Management of External Data) は,SQL環境中のSQLサーバの

制御下にないデータにSQLエージェントがアクセスすることを許すためのSQLの重要な追加を規定する。 

[ISO9075-10],すなわち,オブジェクト言語結合 (Object Language Bindings) は,SQL文をJavaプログ

ラムに埋め込むことを可能にする方法を規定する。 

[ISO9075-11],すなわち,情報スキーマ及び定義スキーマ (Information and Definition Schemas) は 表,

ビュー,列などの永続的なデータベースオブジェクトの名前を適用業務が知ることができるビューを規定

する。 

[ISO9075-13],すなわち,Javaプログラム言語を用いるSQLルーチン及び型 (SQL Routines and Types 

Using the Java™ Programming Language) は,Javaプログラム言語で書いた静的メソッドをSQL呼出しルー

チンとして呼び出す機能,及びJavaプログラム言語で定義したクラスをSQLの構造型として用いる機能

を規定する。 

[ISO9075-14],すなわち,XML関連仕様 (XML-Related Specifications) は,データベース言語SQLをXML

と連携して用いる方法を規定する。 

各規格の内容は,次の細分箇条で示す。 

5.2 

JIS X 3005-1: 枠組 (SQL/Framework) 

この規格は,次の記述を含む。 

− SQL環境の記述,及びJIS X 3005 (ISO/IEC 9075) 規格群で用いる概念の簡潔な記述。 

− 各規格の内容の簡潔な記述。これらの記述は,純粋に参考であり,要件にならない。 

− JIS X 3005 (ISO/IEC 9075) 規格群の全て又はほとんどの規格に適用する表記法及び規約。他の規格は,

必要に応じて規約を更に規定する。 

5.3 

ISO/IEC 9075-2: 基本機能 (SQL/Foundation) 

[ISO9075-2] は,SQLの次の機能を規定する。 

5.3.1 

[ISO9075-2] で規定するデータ型 

[ISO9075-2] は,次のデータ型を規定する。 

23 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

− 全ての数型及びデータ列型。 

− ブール型。 

− 全ての日時型及び時間隔型。 

− 行型。 

− 集まり型。 

− 利用者定義型。 

− 定義域。 

− 参照型。 

5.3.2 

表 

表の関数従属性及び候補キーの決定規則を定義する。 

5.3.3 

結合方法 

[ISO9075-2] は,SQLエージェントをSQL処理系と結合する三つの方法を規定する。 

5.3.3.1 

埋込みSQL 

埋込みSQLは,ホスト言語 (host language) として知られている特定のプログラム言語の規則に従って

書かれる翻訳単位中にSQL文を埋め込む方法とする。それは,ホスト言語での完全に等価な翻訳単位をど

のようにして導出することができるかを規定する。その等価な翻訳単位では,各埋込みSQL文は,SQL

文を含むデータベース言語手続を呼び出す一つ以上の文に置き換えられる。 

5.3.3.2 

動的SQL 

動的SQLは,埋込みSQLの拡張とする。規定する機能は,次による。 

− SQL処理系とSQLエージェントとの間での通信のために用いる記述子領域の割当て及び解放。 

− 後に続く実行のための文の準備を含む,SQL文の実行。 

5.3.3.3 

SQLの直接起動 

SQLの直接起動は,SQL文を直接実行する方法とする。SQLの直接起動では,次の方法は,処理系定義

とする。 

− SQL文の呼出し方法。 

− そのような文の実行の結果として生じる条件を引き起こす方法。 

− そのような文の実行の結果として生じる診断情報にアクセスする方法。 

− 結果を戻す方法。 

5.3.4 

[ISO9075-2] で規定するSQL文 

[ISO9075-2] で規定するSQL文の種類を,次に示す。 

− [ISO9075-2] で規定するスキーマ及びスキーマオブジェクトの作成,変更及び破壊のために用いるこ

とができるSQLスキーマ文。 

− 表に対する問合せ,並びに挿入,更新及び削除の操作を実行するために用いることができるSQLデー

タ文。幾つかのSQLデータ文は,それらの名前に“動的 (dynamic)”という語を含む。それらを動的

SQL文と混同してはならない。 

− トランザクションの特性を設定するため,及びトランザクションを開始又は終了するために用いるこ

とができるSQLトランザクション文。 

− 手続を呼び出すため,及び関数によって戻される値を指定するために用いることができる二つのSQL

制御文(それぞれ,CALL及びRETURN)。 

− コネクションを開始又は終了するため,及びSQLクライアントに,あるSQLサーバのSQLセション

24 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

から別のSQLサーバのSQLセションに切り替えさせるために用いることができるSQLコネクション

文。 

− SQLセションの幾つかの既定値及びその他の特性を設定するために用いることができるSQLセショ

ン文。 

− (診断領域から)診断情報を取得するSQL診断文。 

− 動的に生成されるSQL文の準備及び実行,並びにそれらについての情報の取得のための機能を提供す

る動的SQL文。 

− ホスト言語の文に変換されるSQL埋込み例外宣言。 

[ISO9075-2] は,規定する各SQL文に対して,トランザクションが動作中でないときに実行されるなら

ば,どのSQL文がトランザクションを開始し,どのSQL文が開始しないかを規定する。 

[ISO9075-2] は,各SQLに対して,次のことを規定する。 

− ホスト言語中に埋め込んでもよいかどうか。 

− 動的に準備し,実行してもよいかどうか。データを記述子領域に取り出す場合を除いて,どの準備可

能SQL文も,即時実行することができる。 

− 直接起動してもよいかどうか。 

5.4 

ISO/IEC 9075-3: 呼出しレベルインタフェース (SQL/CLI) 

[ISO9075-3] は,多くのプログラム言語のうちの一つで書かれたプログラムとSQL処理系との間の結合

方法を規定する。その効果は,[ISO9075-2] で規定する動的SQLと機能的に等価とする。 

次の用途で用いることができる手続(ルーチン)を規定する。 

− 資源(記述子又は通信領域)の割当て及び解放。 

− SQLクライアントとSQLサーバとの間のSQLコネクションの開始,制御及び終了。 

− 後に続く実行のための文の準備を含む,SQL文の実行。 

− 診断情報の取得。 

− SQL処理系についての情報の取得。例えば,SQLクライアントが接続可能なSQLサーバ。 

CLIと結合との重要な差異は,CLIの文脈では多くのSQL環境を独立に開始及び管理することができる

のに対して,後者の文脈ではSQL環境が一つしか存在しないことにある。結果的に,SQL環境は,単純

に,様々な機能をもつ環境の集合であると定義されるが,この用語は,CLIでは,たくさんあるかもしれ

ないうちの一つのSQL環境の現在の状態(記述子)を参照するために用いる。したがって,この用語は,

適用業務(SQLエージェント)とSQLクライアントとの間のセション(SQLクライアントとSQLサーバ

との間の,SQLコネクションとしてCLIで参照されるSQLセションと混同してはならない。)の意味で用

いる。 

5.5 

ISO/IEC 9075-4: 永続格納モジュール (SQL/PSM) 

[ISO9075-4] は,追加のSQL文の構文及び意味を規定することによって,SQLを計算完備にする。 

SQLを計算完備にするものは,次の機能を含む。 

− 制御の流れを指示するための文の指定。 

− 変数及びパラメタへの式の結果の代入。 

− 実行中に引き起こされるかもしれない様々な条件を複合文で扱うことを可能にする条件ハンドラの指

定。 

25 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

− 条件を信号として送る又は再送するための文の指定。 

− 元祖SQLサーバカーソルの宣言。 

− 局所変数の宣言。 

SQLサーバモジュールを記述するスキーマ情報を含む情報スキーマ表も規定する。 

5.5.1 

[ISO9075-4] で規定するSQL文 

[ISO9075-4] で規定するSQL文の大まかな種類を次に示す。 

− SQLルーチンの実行を制御するために用いてもよい追加のSQL制御文。 

− 変数及び例外ハンドラを宣言するために用いてもよいSQL制御宣言。 

− 例外を信号として送るために用いてもよい追加のSQL診断文。 

− モジュールを作成及び破壊するために用いてもよい追加のSQLスキーマ文。 

5.6 

ISO/IEC 9075-9: 外部データ管理 (SQL/MED) 

[ISO9075-9] は,外部表及びデータリンクデータ型の利用を介して,外部データの管理を支援すること

をデータベース言語SQLで可能にする機能を規定する。 

これらは,次の項目を定義するための機能,及び外部データ源と相互に作用する外部データ覆いと通信

するために,SQLサーバが利用できるルーチンを含む。 

− 外部サーバ。 

− 外部データ覆い。 

− 外部表。 

5.7 

ISO/IEC 9075-10: オブジェクト言語結合 (SQL/OLB) 

[ISO9075-10] は,SQL文をJavaプログラムに埋め込むための機能を規定する。 

5.8 

ISO/IEC 9075-11: 情報スキーマ及び定義スキーマ (SQL/Schemata) 

[ISO9075-11],すなわち,情報スキーマ及び定義スキーマは,情報スキーマ(INFORMATION̲SCHEMA)

及び定義スキーマ(DEFINITION̲SCHEMA)の二つのスキーマを規定する。情報スキーマのビューは,表,

ビュー,列などの永続的なデータベースオブジェクトの名前を適用業務が知ることを可能にする。これら

のビューは,定義スキーマの実表によって定義される。定義スキーマの唯一の目的は,情報スキーマを実

現し,理解を助けるためにデータモデルを提供することにある。SQL処理系は,情報スキーマビューを介

して見られるように,定義スキーマの存在を模擬する以外の必要はない。 

5.9 

ISO/IEC 9075-13: Javaプログラム言語を用いるSQLルーチン及び型 (SQL/JRT) 

[ISO9075-13] は,Javaプログラム言語で書かれた静的メソッドをSQL呼出しルーチンとして呼び出す

ことを可能にすること,及びJavaプログラム言語で定義されたクラスをSQL構造型として用いることを

データベース言語SQLで可能にする機能を規定する。 

これらは,次の機能を含む。 

− SQL呼出しルーチンの定義,操作及び呼出しの拡張。 

− 利用者定義型の定義及び操作の拡張。 

− 新たな組込み手続。 

5.10 ISO/IEC 9075-14: XML関連仕様 (SQL/XML) 

[ISO9075-14] は,XML文書の作成及び操作を可能にすることをデータベース言語SQLで可能にする機

能を規定する。 

これらは,次の機能を含む。 

background image

26 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

− 新たな既定義型であるXML。 

− XML型の値を作成及び操作するための新たな組込み演算子。 

− 表,スキーマ及びカタログのXML文書への対応付けのための規則。 

JIS X 3005 (ISO/IEC 9075) 規格群の他の規格で用いる表記法及び規約 

この箇条で規定する表記法及び規約は,より適切なものを各規格で個別に規定する場合を除いて,JIS X 

3005 (ISO/IEC 9075) 規格群の他の規格で用いる。 

6.1 

JIS X 0221 [ISO10646] からの表記法 

UCS符号位置の表現のための表記法は,JIS X 0221 [ISO10646] の“6.5 符号位置の短い識別子 (UID)”

で規定している。 

この規格群では,この表記法は,文字を曖昧さなく識別するためだけに利用し,処理系がその文字を用

いるための特定の符号化を意味するわけではない。 

6.2 

この規格で規定する表記法 

JIS X 3005 (ISO/IEC 9075) 規格群で用いる構文表記法は,拡張を行ったBNF[“バッカス正規形 (Backus 

Normal Form,Backus Naur Form)”]とする。 

BNF言語定義では,BNF非終端記号 (BNF nonterminal symbol) として知られているその言語の各構文要

素は,生成規則 (production rule) によって定義する。この生成規則は,要素の実現値を形作るために用い

ることができる,文字,文字列及び構文要素から成る式によって要素を定義する。 

JIS X 3005 (ISO/IEC 9075) 規格群で用いるBNFの記号及びその意味を表2“BNFで用いる記号”に示す。 

表2−BNFで用いる記号 

記号 

意味 

<> 

山括弧で囲まれた文字列は,SQL言語の構文要素(BNF非終端)の名前とする。 

::= 

定義演算子は,規則によって定義される要素をその定義から分離するために,生成規則中で用いる。定義さ
れる要素は,この演算子の左側に現れ,その要素を定義する式は,右側に現れる。 

[] 

角括弧は,式中で省略可能な要素を示す。式中の角括弧で囲まれた部分は,陽に指定してもよいし,省略し
てもよい。 

{} 

波括弧は,式中の要素をまとめる。式中の波括弧で囲まれた部分は,陽に指定しなければならない。 

代替手段演算子。縦棒は,式中で縦棒に後続する部分が縦棒に先行する部分の代替手段であることを示す。
縦棒が波括弧又は角括弧に囲まれない部分に現れるならば,それは,その生成規則によって定義される要素
の完全な代替手段を示す。式中で縦棒が波括弧又は角括弧に囲まれた部分に現れるならば,それは,最も内
側の波括弧又は角括弧の中の要素の代替手段を示す。 

... 

省略符号は,式中で適用される要素を任意の回数繰り返してもよいことを示す。省略符号が閉じ波括弧“}”
の直後に現れるならば,式中でその閉じ波括弧及びそれに対応する開き波括弧“{”で囲まれた部分に適用す
る。省略符号が他の要素の後に現れるならば,その要素にだけ適用する。構文規則,アクセス規則,一般規
則及び適合性規則では,そのようなリスト中のn番目の要素の参照は,ほかに記述がない限り,それらが指
定される順序を仮定する。 

!! 

普通の自然言語の文を導入する。これは,構文要素の定義がBNFで表現されないときに用いる。 

空白は,構文要素を分離するために用いる。複数の空白及び改行は,単一の空白として扱う。上記で特

別な機能が与えられた記号以外の,式中のその他の文字及び文字列は,それら自体を表す。加えて,生成

規則中の定義演算子の右側の記号がBNF記号だけから成るならば,これらの記号は,それ自体を表し,そ

の特別な意味はもたない。 

27 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

波括弧の対及び角括弧の対は,任意の深さの入れ子にすることができ,代替手段演算子は,そのような

入れ子のどの深さで現れてもよい。 

構文要素の実現値を形作る文字列は,次の段階を適用することによって,その構文要素のBNF定義から

生成することができる。 

1) 要素に対して,生成規則の右側に定義されている要素から一つの選択肢を選択し,その要素をその

選択肢で置き換える。 

2) 各省略符号及びそれが適用される対象を,その対象の一つ以上の実現値で置き換える。 

3) 角括弧で囲まれた各文字列部分に対して,その角括弧及びその内容を削除するか又はその角括弧を

波括弧で置き換える。 

4) 波括弧で囲まれた各文字列部分に対して,その波括弧内の部分文字列に1)〜5) までの段階を適用 

し,波括弧を取り除く。 

5) 文字列中に残っているBNF非終端記号に対して,1)〜5) までの段階を適用する。 

展開又は生成は,文字列中に非終端記号がなくなったときに完了する。 

ソース言語文字集合中の文字列CSの,BNF非終端NTからの左正規形導出は,5) の段階で常に最も左

のBNF非終端を選びながら,上記1)〜5) までの段階をNTに適用することによって得られる。 

6.3 

規約 

6.3.1 

構文要素の規定 

構文要素は,次によって規定する。 

− 機能 (Function):要素の目的についての短い文。 

− 形式 (Format):要素の構文のBNF定義。 

− 構文規則 (Syntax Rules):要素が満たさなければならず,BNFで表現されない,要素の構文的な特性

若しくは付加的な構文上の制約又はその両方の,自然言語での規定。 

− アクセス規則 (Access Rules):一般規則が成功裏に適用される前に満たされなければならない,スキ

ーマオブジェクトへのアクセス可能性を決める規則の自然言語での規定。 

− 一般規則 (General Rules):要素の実行時効果についての自然言語での規定。要素の効果を規定するた

めに,二つ以上の一般規則を用いるとき,要求される効果は,規則の適用の順番の変更又は終了を指

定するか暗に想定する規則が適用されない限り,最初の一般規則から始めて,番号順にそれらの規則

を適用することによって得られる効果とする。適用される特定の規則によって指定されるか又は暗に

想定されない限り,一般規則の適用は,番号順で最後の規則が適用されたときに終了する。 

− 適合性規則 (Conformance Rules):SQLに適合するために,要素がどのように提供されなければならな

いかの規定。 

表記記号の適用範囲は,それらの記号を定義する細分箇条とする。細分箇条内では,構文規則,アクセ

ス規則又は一般規則中で定義された記号は,参照される前に定義されているという条件で,その他の規則

中で参照することができる。 

6.3.2 

情報スキーマ及び定義スキーマの規定 

JIS X 3005 (ISO/IEC 9075) 規格群の情報スキーマ及び定義スキーマのオブジェクトは,次によって規定

する。 

− 機能 (Function):定義の目的についての短い文。 

28 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

− 定義 (Definition):定義されるオブジェクトのSQLでの定義。 

− 記述 (Description):定義からは明らかではない範囲の,オブジェクトの実行時の値の規定。 

− 適合性規則 (Conformance Rules):SQLに適合するために,要素がどのように提供されなければならな

いかの規定。 

情報スキーマ中のビュー定義は,これらのビュー表の内容を規定するためにだけ用いている。これらの

ビューが基にする実際のオブジェクトは,処理系依存とする。 

6.3.3 

用語の使用 

6.3.3.1 

構文上の包含関係 

構文要素を<A>,<B>及び<C>とする。<A>,<B>及び<C>の実現値を,それぞれ,A1,B1及びC1とす

る。 

形式中で,<A>のBNF生成規則の右側に<B>が現れるならば,<A>は,<B>を直に含む (immediately 

contain) という。<A>が<C>を直に含むか,又は<C>を含む<B>を<A>が直に含むならば,<A>は,<C>を

含む (contain) 又は指定する (specify) という。 

SQL言語中で,<A>が<B>を直に含み,かつ,B1がA1のテキストの部分ならば,A1は,B1を直に含

む という。A1がC1を直に含むか,又はA1がB1を直に含み,かつ,B1がC1を含むならば,A1は,

C1を含む 又は指定する という。A1がC1を含むならば,C1は,A1に含まれ (contained in),A1によっ

て指定され (specified by) る。 

A1がB1を含み,かつ,B1を含む<C>の実現値をA1が含むならば,A1は,<C>の実現値を介在して (with 

an intervening instance of) B1を含むという。A1がB1を含み,かつ,B1を含む<C>の実現値をA1が含まな

いならば,A1は,<C>の実現値を介在しないで (without an intervening instance of) B1を含むという。 

A1が<A>の実現値又は<B>の実現値を介在しないでB1を含むならば,A1は,B1を単純に含む (simply 

contain)。A1がB1を単純に含む ならば,B1は,A1に単純に含まれ (simply contained in) る。 

<副問合せ>,<WITHIN GROUP指定>,又は<順序付け集合関数>ではない<集合関数指定>の実現値を介

在しないでA1がB1を含むならば,A1は,B1を直接含む (directly contain)。 

<A>の実現値が<B>の実現値を含むならば,<B>は,<A>に含まれる といい,<A>は,<B>を含む 

(containing) 生成記号という。<A>の実現値が<B>の実現値を単純に含むならば,<B>は,<A>に単純に含

まれる (simply contained in) といい,<A>は,<B>を単純に含む (simply containing) 生成記号という。 

A1が条件Cを満たし,かつ,Cを満たす<A>の実現値をA1が含まないならば,A1は,Cを満たす最も

内側の (innermost) <A>とする。A1が条件Cを満たし,かつ,Cを満たす<A>の実現値にA1が含まれない

ならば,A1は,Cを満たす最も外側の (outermost) <A>とする。 

<ビュー定義>Vによって定義されるビューを識別する<表名>を<A>が含むならば,<A>は,Vに含まれ

る<問合せ式>を一般に含む (generally contain) という。<問合せ式>QEを識別する<問合せ名>を<A>が含

むならば,<A>は,QEを一般に含むという。<A>が<B>を含むならば,<A>は,<B>を一般に含む。<A>

が<B>を一般に含み,かつ,<B>が<C>を一般に含むならば,<A>は,<C>を一般に含む。 

<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照> RIを<A>が含むな

らば,<A>は,RIの当該ルーチンの集合中の全てのSQLルーチンの<SQLルーチン本体>を広く含む 

(broadly contain) という。<A>が<B>を一般に含むならば,<A>は,<B>を広く含む。<A>が<B>を広く含み,

かつ,<B>が<C>を広く含むならば,<A>は,<C>を広く含む。 

注記11 “<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該

29 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ルーチンの集合”は,[ISO9075-2] の“10.4 <ルーチン呼出し>”で定義している。 

注記12 広く含む関係 (broad containment) は,処理系定義要素又は適合性の機能などの選択機能を規

定するためだけに用いる。 

形式中で,(“であり”などの文法上の全ての変形も含めて,)“である”という語は,次のとおりに定義

される。<A> ::= <B> という形式のBNF生成規則が存在するならば,<A>は,<B>である という。<A>

が<B>であり,かつ,<B>が<C>であるならば,<A>は,<C>(である)とする。<A>が<C>(である)な

らば,<C>は,<A>を構成する (constitute) という。SQL言語では,<A>が<B>で(あり),A1のテキスト

がB1のテキスト(である)ならば,A1は,B1であるという。逆に,A1がB1であるならば,B1は,A1

を構成する という。 

6.3.3.2 

規則の要件を示す用語 

構文規則中で,(し)なければならない (shall) という用語は,SQL言語に構文上適合するために真とな

ることが要求される条件を定義する。そのような条件は,それらが一つ以上のスキーマの内容に依存する

とき,一般規則によって規定している動作を行う直前に,真であることが要求される。SQLの形式及び構

文規則に適合しない言語の扱いは,処理系依存とする。アクセス規則又は一般規則の評価を行おうとした

ときに,構文規則によって要求されるいずれかの条件が満たされず,かつ,適合しないSQL言語も,適合

するSQL言語を適合しない方法でも,処理系が処理しないならば,例外条件:構文誤り又はアクセス規則

違反 (syntax error or access rule violation) が引き起こされる。 

アクセス規則中で,(し)なければならない という用語は,一般規則の適用を成功させるために満たす

ことが要求される条件を定義する。そのようないずれかの条件が一般規則を適用するときに満たされない

ならば,例外条件:構文誤り又はアクセス規則違反 が引き起こされる。 

適合性規則中で,(し)なければならない という用語は,一つ又は複数の名前付きの機能を提供する必

要がない場合に真となることが要求される条件を定義する。 

6.3.3.3 

規則の評価順序 

規格に適合する処理系は,一般規則で規定する動作をそのままの順番で実行することは要求されないが,

SQLデータ及びスキーマ,ホストパラメタ及びホスト変数,並びにSQLパラメタ及びSQL変数に対する

効果は,その順番での効果と同じでなければならない。実効的に (effectively) という用語は,処理系が効

果を別の方法で達成してもよい動作を強調するために用いる。 

ある構文要素に含まれる構文要素に対する構文規則及びアクセス規則は,その構文要素を含む構文要素

に対する構文規則及びアクセス規則と実効的に同じ時点で適用する。ある構文要素に含まれる構文要素に

対する一般規則は,実効的にその構文要素を含む構文要素に対する一般規則の前に適用する。 

演算子の優先順序がJIS X 3005 (ISO/IEC 9075) 規格群の形式又は括弧によって決定されるところでは,

それらの演算子は,実効的にその優先順序によって指定される順序で適用する。 

演算子の優先順序が形式又は括弧によって決定されないところでは,式の実効的な評価は,一般に

(generally) 左から右に行う。しかし,特に,オペランド若しくは演算子が条件を引き起こすことになると

き,又は式の結果がその式の全ての部分を完全に評価することなしに決定できるとき,式を実際に 

(actually) 左から右に評価するかどうかは,処理系依存とする。 

一般には,ある構文要素が二つ以上の別の構文要素を含むならば,それらを含む構文要素の生成規則中

で,前に現れている含まれる要素に対する一般規則を,後に現れている含まれる要素に対する一般規則の

前に適用する。 

例えば,次の生成規則 

30 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

<A> ::= <B> <C> 

では,<A>,<B>及び<C>に対する構文規則及びアクセス規則は,実効的に同時に適用する。<B>に対する

一般規則は,<C>に対する一般規則の前に適用し,<A>に対する一般規則は,<B>及び<C>の両方に対する

一般規則の後に適用する。 

注記13 これの実際の適用に対しては,例外が存在する。例えば,[ISO9075-2] の“13.4 <SQL手続文

>”は,一般規則に対するこの一般規則の一種の例外を示す。その細分箇条では,<SQL手続

文>に含まれる特定の文(例えば,<INSERT文>)の一般規則は,<SQL手続文>に含まれる

文の一般規則を評価することを“13.4 <SQL手続文>”の一般規則が明記しているときにだ

け呼び出される。 

式又は探索条件の結果が,その式又は探索条件のある部分の結果に依存しないならば,式又は探索条件

のその部分を非本質的 (inessential) であるという。決定的であり,かつ,SQLデータを潜在的に修正しな

いSQL呼出し関数の呼出しは,非本質的 であるとみなす。非決定的であるか又はSQLデータを潜在的に

修正するSQL呼出し関数の呼出しを,本質的 (essential) であるとみなすか,非本質的 であるとみなすか

は,処理系定義とする。 

非本質的部分に関わるアクセス規則を満たさないならば,非本質的である部分が実際に評価されるかど

うかにかかわらず,例外条件:構文誤り又はアクセス規則違反 が引き起こされる。非本質的である部分

の評価が例外条件を引き起こすことになるならば,その例外条件を引き起こすかどうかは,処理系依存と

する。 

式の結果の計算中に,SQL処理系は,その結果を決定するときに用いる一つ以上の中間結果 (intermediate 

result) を生成してもよい。中間結果を含む格納場所の宣言型は,処理系依存とする。 

6.3.3.4 

条件付き規則 

条件付き規則は,“ならば (If)”又は“場合 (Case)”規約を用いて規定する。“場合”規約を用いて規定

する規則は,“ならば”規約を用いる条件付き部分規則の細別を含む。条件が真である最初のこのような“な

らば”部分規則は,“場合”規則の実効的な部分規則とする。“場合”規則の最後の部分規則は,“そうでな

ければ (Otherwise)”を指定してもよく,この場合には,“場合”規則中の先行するどの“ならば”部分規

則も満たさないならば,“そうでなければ”部分規則は,“場合”規則の実効的な部分規則とする。最後の

部分規則が“そうでなければ”を指定せず,かつ,条件が真である部分規則がないならば,“場合”規則の

実効的な部分規則は,存在しない。 

6.3.3.5 

構文上の置換え 

構文規則及び一般規則中で,“Xが暗に想定される (implicit)”という句は,要素Xを実際に指定したか

のように,構文規則及び一般規則を解釈すべきことを示す。与えられた細分箇条の構文規則内で,要素が

陽に指定されたか又は暗に想定されるかは,知られている。 

構文規則及び一般規則中で,“次の<x>が暗に想定される。Y”という句は,Y を含む構文要素<x>を実際

に指定したかのように,構文規則及び一般規則を解釈すべきことを示す。 

構文規則及び一般規則中で,“前者 は,後者 と等価とする”という句は,要素中の前者 の全ての実現

値が後者 の実現値であるかのように,構文規則及び一般規則を解釈すべきことを示す。 

細分箇条が定義するBNF生成規則中にBNF非終端記号がどのように含まれるかを規定しないで,その

BNF非終端記号がその細分箇条中で参照されるならば,次による。 

場合: 

− BNF非終端記号が,細分箇条中で定義されるそのもの自体ならば,その参照は,定義している生成規

31 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

則の左側のそのBNF非終端記号の実現値への参照であると仮定しなければならない。 

− そうでなければ,その参照は,そのBNF非終端記号が直に含まれるBNF生成規則への参照であると

仮定しなければならない。 

6.3.3.6 

その他の用語 

幾つかの構文規則では,名前付き又は名前なしの表を示すために,T1のような用語を定義する。このよ

うな用語は,表名又は相関名として用いる。このような用語を相関名として用いるところでは,どんな新

たな相関名も,示された表に対して実際に定義されることを意味しないし,実際のどの相関名の適用範囲

にもそれが影響を与えることはない。 

SQL文S2が<CALL文>CSで,かつ,SQL文S1が,CSに含まれる<ルーチン呼出し>の当該ルーチンで

ある<SQL呼出しルーチン>に含まれる最も外側のSQL文ならば,S1は,S2の実行の直接の結果 (direct 

result) として実行されるという。 

SQL文S1が,SQL文S2の実行によって活性化されたトリガ実行文脈中で実行されるならば,S1は,

S2の実行の間接の結果 (indirect result) として実行されるという。 

値Pが値Wの部分 (is part of) であることは,次のことと同値とする。 

− Wが表で,かつ,PがWの行である。 

− Wが行で,かつ,PがWのフィールドである。 

− Wが集まりで,かつ,PがWの要素である。 

− Pが,Wの部分であるいずれかの値の部分である。 

値が部分をもつならば,その値の実現値が部分をもつことになる。したがって,その値が占める格納場

所が部分をもち,それらの部分のそれぞれも,格納場所となる。 

項目Xが項目Yの部分 であることは,次のことと同値とする。 

− Yが行で,かつ,XがYの列である。 

− Yが<ルーチン呼出し>で,かつ,XがYのSQLパラメタである。 

− Yが利用者定義型の実現値で,かつ,XがYの属性である。 

− XがX2の部分であり,かつ,X2がYの部分であるような項目X2が存在する。 

JIS X 3005 (ISO/IEC 9075) 規格群の他の規格で,その規格だけで用いる追加の用語を定義してもよい。 

6.3.3.7 

例外 

別の方法で規定する場合を除いて,“例外条件: が引き起こされる”という句は,“例外条件:”に条

件の名前が続き,次のことを示すために,一般規則中及びその他の場所で用いる。 

− 文の実行が不成功である。 

− “6.3.3.8 例外条件で終了しない一般規則”で規定していない細分箇条の一般規則の適用を終了して

いるかもしれない。 

− 診断情報が利用可能になる。 

− 文の実行がSQLデータ又はスキーマにどんな効果も与えない。 

例外条件で終了するSQL文の代入相手及びSQL記述子領域に与える効果は,JIS X 3005 (ISO/IEC 9075) 

規格群で陽に定義していない限り,処理系依存とする。 

“終了条件: が引き起こされる”という句は,“終了条件:”に条件の名前が続き,一般規則の適用が

32 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

終了しないこと,及び診断情報が利用可能になることを示すために,一般規則中及びその他の場所で用い

る。例外条件も引き起こされない限り,SQL文の実行は,成功する。 

文の結果として二つ以上の条件が引き起こされたとき,二つ以上の条件についての診断情報を利用可能

にするかどうかは,処理系依存とする(状態パラメタの値の優先順序に関する規則については,[ISO9075-2] 

の“4.30.2 状態パラメタ”参照)。 

6.3.3.8 

例外条件で終了しない一般規則 

次の細分箇条の一般規則は,文脈を退避及び回復する。したがって,陽に記述する場合を除いて,例外

条件が引き起こされるところで終了しない。 

− [ISO9075-2] の“10.4 <ルーチン呼出し>” 

− [ISO9075-2] の“13.4 <SQL手続文>” 

− [ISO9075-2] の“15.19 トリガの実行” 

− [ISO9075-2] の“22.1 <直接SQL文>” 

− [ISO9075-4] の“14.1 <複合文>” 

− [ISO9075-4] の“14.2 <ハンドラ宣言>” 

6.3.4 

記述子 

記述子は,特定の種類のオブジェクトを定義するデータの概念的な構造化された集まりとする。記述子

の概念は,SQLの意味を規定するときに用いる。どの記述子も,どのSQL環境中のどのような特定の形

態でも存在する必要はない。 

幾つかのSQLオブジェクトは,別のSQLオブジェクトの文脈中以外で存在することができない。例え

ば,列は,表の文脈内以外で存在できない。そのような各オブジェクトは,それ自体の記述子によって独

立に記述され,実効化するオブジェクト(例えば,表)の記述子は,実効化される各オブジェクト(例え

ば,列,表制約など)の記述子を含む (include) という。逆に,実効化されるオブジェクトの記述子は,

実効化するオブジェクトの記述子に含まれる (be included in) という。あるオブジェクトAの記述子が,

あるオブジェクトBの記述子を含み,かつ,Bの記述子が,あるオブジェクトCの記述子を一般に含むな

らば,Aの記述子は,Cの記述子を一般に含む (generally include)。 

別の場合には,包含関係が存在しなくても,別のあるSQLオブジェクトが存在しなければ,幾つかの

SQLオブジェクトは,存在することができない。例えば,表明によって参照される表が存在しないならば,

SQLは,その表明の存在を許さない。したがって,表明記述子は,一つ以上の表記述子に依存している (be 

dependent on) 又は依存する (depend on) (等価的に,表明は,一つ以上の表に依存している 又は依存す

る。)。一般には,記述子D1は,ある記述子D2に依存する又は依存しているといえる。 

あるオブジェクトAの記述子が,あるオブジェクトBの記述子に依存し,かつ,Bの記述子が,あるオ

ブジェクトCの記述子に一般に依存するならば,Aの記述子は,Cの記述子に一般に依存する (generally 

depend) 又は一般に依存している (be generally dependent on)。 

SQL文の実行の結果として,多くの記述子が作成されてもよい。SQL文の結果として作成されるSQL

オブジェクトは,そのSQL文の実行の結果として作成されるだけの別の記述子に依存してもよい。 

注記14 これは,特に,<スキーマ定義> SQL文の場合に関連がある。<スキーマ定義>は,例えば,<

表制約>を更に含む多くの<表定義>を含んでもよい。一つの<表定義>中の単一の<表制約>は,

別の<表定義>によって作成される2番目の表を参照してもよく,その別の<表定義>自体が最

初の表への参照を含んでもよい。完全な<スキーマ定義>の実行中に必要な全ての記述子が作

成されるという条件で,別の記述子への各表の依存性が正しくなる。 

33 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

一つのSQLオブジェクトの別のオブジェクトへの依存性を示す二つの方法がある。多くの場合,依存し

ているSQLオブジェクトの記述子は,それが依存しているSQLオブジェクト“の名前を含む (include the 

name of)”という。この場合,“の名前”は,“の記述子を識別するために十分な情報”を意味するものと

して理解しなければならない。代わりに,依存しているSQLオブジェクトの記述子は,それが依存してい

るSQLオブジェクトのテキスト(例えば,<問合せ式>,<探索条件>など)を含むといってもよい。しか

し,そのような場合,処理系が(既定値及び想定値を明確にした)実際のテキストを含むか,又は処理系

独自の様式の構文解析木を含むかは,無関係とする。すなわち,その記述子の正当性は,その中で参照し

ているオブジェクトの記述子の存在に,明らかに“依存している”。 

ビューの場合には,ビューが依存する他のSQLオブジェクトを決定するために,(階層的な<問合せ式>

ではなく,)元の<問合せ式>を用いる。 

注記15 階層的な<問合せ式>は,ビューVの全ての下位表を説明するために用いる。Vの階層的な<

問合せ式>に依存性があるならば,この依存性は,Vのどの下位表の元の<問合せ式>でも見

つかる。元の<問合せ式>に依存性があるビューの破壊は,残存している上位表の階層的な<

問合せ式>を依存性なしに書き換えることになる。 

列が定義域を“基にする (be based on)”という文は,列がその定義域に“依存している (be dependent on)”

という文と等価とする。 

SQLオブジェクトを破壊しようとしても,したがって,それの記述子を破壊しようとしても,別の記述

子がそれに依存しているならば,失敗することがあり,それは,その破壊をどのように指定するかに依存

する。このような試みは,破壊されるべき記述子が別のある記述子に含まれるときにも,失敗することが

ある。記述子を破壊すると,それに含まれる全ての記述子を破壊することになるが,それが依存している

記述子には,どんな効果も与えない。 

記述子によって記述される幾つかのSQLオブジェクトの実装には,この規格群で規定していないオブジ

ェクトの存在が必要になる。そのようなオブジェクトが必要なところでは,それらは,関連する記述子が

作成されるときにはいつでも実効的に作成され,関連する記述子が破壊されるときにはいつでも実効的に

破壊される。 

6.3.5 

JIS X 3005 (ISO/IEC 9075) 規格群の規格の関係 

この規格及び [ISO9075-2] 以外のJIS X 3005 (ISO/IEC 9075) 規格群の規格は,JIS X 3005-1 [ISO9075-1] 

及び [ISO9075-2] 並びにそれらの技術的正誤票 (Technical Corrigenda) に依存し,追加規格 (incremental 

part) として参照される。各追加規格は,JIS X 3005 (ISO/IEC 9075) 規格群のテキストに併合されたかの

ように用いなければならない。この細分箇条では,併合方法を規定するために用いる規約を記述する。 

併合方法の記述は,JIS X 3005 (ISO/IEC 9075) 規格群を訂正するために発行された技術的正誤票に対し

ても説明する。この場合には,典型的に“技術的正誤票で”又は“TCで”というような句を用いること

によって示す。 

6.3.5.1 

新しい箇条,細分箇条及び附属書並びに修正される箇条,細分箇条及び附属書 

JIS X 3005 (ISO/IEC 9075) 規格群のいずれかの追加規格の(“1 適用範囲”及び“2 引用規格”以外の)

箇条,細分箇条又は附属書が [ISO9075-2],[ISO9075-3],[ISO9075-4] 又は [ISO9075-11] の箇条,細分箇

条又は附属書と同一の名前をもつところでは,追加規格が [ISO9075-3],[ISO9075-4] 又は [ISO9075-11] 

自体でない限り,箇条,細分箇条又は附属書の番号又は文字が対応するかどうかにかかわらず,その箇条,

細分箇条又は附属書は,それぞれ,[ISO9075-2],[ISO9075-3],[ISO9075-4] 又は [ISO9075-11] の箇条,

細分箇条又は附属書を補う。これは,典型的に,段落,形式項目,表,図,規則又は注記の追加又は置換

34 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

えによって行う。 

各追加規格では,その追加規格の各箇条,細分箇条及び附属書と,[ISO9075-2],[ISO9075-3],[ISO9075-4] 

及び/又は [ISO9075-11] の対応する箇条,細分箇条又は附属書との間の関係を,次によって示す。 

− 追加規格では,Objectの題名の直後に続けて,“このObjectは,JIS X 3005-n (ISO/IEC 9075-n) の“nn.nn  

xxxxx”を修正する。(This Object modifies Object nn.nn, “xxxxx”, in ISO/IEC 9075-n.)”という形式の文。 

− 先行する細別中での挿入される文によって参照される規格では,Objectの題名の直後に続けて,“この

Objectは,JIS X 3005-m (ISO/IEC 9075-m) の“mm.mm yyyyy”によって修正される。(This Object is 

modified by Object mm.mmm, “yyyyy”, in ISO/IEC 9075-m.)”という形式の文。 

− Objectは,箇条,細分箇条又は附属書であってもよい。 

追加規格の箇条,細分箇条又は附属書が,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は 

[ISO9075-11] のどの箇条,細分箇条又は附属書の名前とも同一でない名前をもつところでは,それは,そ

の追加規格固有の言語仕様を提供する。箇条又は細分箇条の部分である細分箇条で,新規として識別され

る細分箇条は,本来新規であり,それに印を付けない。 

各追加規格の箇条,細分箇条及び附属書は,併合される文書にそれらが現れることを意図した順序で現

れる。その配置に関する明確な指示がほかにない場合には,新しいどの箇条,細分箇条又は附属書も,次

のとおり配置される。JIS X 3005 (ISO/IEC 9075) 規格群の追加規格中でその前に現れる箇条,細分箇条又

は附属書の名前と同一の名前をもつ [ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] の

対応する箇条,細分箇条又は附属書に位置付ける。新しい箇条,細分箇条又は附属書は,その箇条,細分

箇条又は附属書の直後に続けなければならない。既存の箇条,細分箇条又は附属書を修正する箇条,細分

箇条又は附属書を介在しないで,複数の新しい箇条,細分箇条又は附属書が存在するならば,それらの新

しい箇条,細分箇条又は附属書は,その前の名前が一致する箇条,細分箇条又は附属書の後に続けて順序

どおりに現れる。 

[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] の箇条,細分箇条又は附属書に対して,追加規格

で修正を行うとき,その修正は,次の順序で適用する。 

1) 追加規格からの [ISO9075-3] に対する全ての修正。 

2) 追加規格からの [ISO9075-4] に対する全ての修正。 

3) 追加規格からの [ISO9075-11] に対する全ての修正。 

4) [3) の結果として,追加されたか,補われたか又は置き換えられた全ての修正も含めて,]

[ISO9075-11] からの [ISO9075-2] に対する全ての修正。 

5) [1) の結果として,追加されたか,補われたか又は置き換えられた全ての修正も含めて,]

[ISO9075-3] からの [ISO9075-2] に対する全ての修正。 

6) [2) の結果として,追加されたか,補われたか又は置き換えられた全ての修正も含めて,]

[ISO9075-4] からの [ISO9075-2] に対する全ての修正。 

7) 追加規格からの [ISO9075-2] に対する全ての修正。最後のこの修正で,4),5) 及び6) の結果とし

て適用された修正を補うか又は置き換えてもよいことに注意する。 

二つ以上の追加規格による [ISO9075-2],[ISO9075-3],[ISO9075-4] 及び [ISO9075-11] のうちの一つ以

上に対する修正は,相互に作用しない。追加規格によって行われる修正は,その規格の言語仕様にだけ影

響があり,それらの仕様は,他のどの追加規格によって行われる修正にも影響を受けない。 

35 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.3.5.2 

新しい表及び図並びに修正される表及び図 

JIS X 3005 (ISO/IEC 9075) 規格群のいずれかの追加規格の表が [ISO9075-2],[ISO9075-3],[ISO9075-4] 

又は [ISO9075-11] の表と同一の名前をもつところでは,追加規格が [ISO9075-3],[ISO9075-4] 又は 

[ISO9075-11] 自体でない限り,表の番号が対応するかどうかにかかわらず,その表は,[ISO9075-2],

[ISO9075-3],[ISO9075-4] 又は [ISO9075-11] の表を補う。 

追加規格の表の行は,対応する表に実効的に挿入される一般的に新しい行とするが,まれに,表中の既

存の行を追加規格の表の行によって実効的に置き換えることがある。このような置換えは,対応する表の

最初の列の値が同じときに必要となる。 

JIS X 3005 (ISO/IEC 9075) 規格群のいずれかの追加規格の図が [ISO9075-2],[ISO9075-3],[ISO9075-4] 

又は [ISO9075-11] の図と同一の名前をもつところでは,追加規格が [ISO9075-3],[ISO9075-4] 又は 

[ISO9075-11] 自体でない限り,図の番号が対応するかどうかにかかわらず,その図は,[ISO9075-2],

[ISO9075-3],[ISO9075-4] 又は [ISO9075-11] の図を補う。 

[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] の表又は図が,ある追加規格の表又

は図によって修正されるか又は置き換えられるとき,その追加規格では,修正するObjectの少し上に現れ

る規則又は段落中に,典型的に“このObjectは,JIS X 3005-n (ISO/IEC 9075-n) のObject  nn.nn“xxxxx”

を修正する。(This Object modifies Object nn.nn, “xxxxx”, in ISO/IEC 9075-n.)”という形式の文が見つかる。 

[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] の表又は図が,ある追加規格の表又

は図によって修正されるか又は置き換えられるとき,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は 

[ISO9075-11] の表又は図の題名に先行して,修正するか又は置き換える表又は図を含む追加規格の番号を

含む小さく赤い囲み (small red box) がある。 

注記16 この規格の印刷された冊子では,小さい囲み及びその内容は,灰色又は黒色になるかもしれ

ない。 

追加規格の表又は図が,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] のどの表又

は図の名前とも同一でない名前をもつところでは,それは,その追加規格固有の仕様を提供する。 

6.3.5.3 

機能 

修正される細分箇条では,修正する細分箇条からの機能で,元の細分箇条の機能を完全に置き換える。 

6.3.5.4 

新しい形式項目及び修正される形式項目 

修正される箇条及び細分箇条では,BNF非終端記号(すなわち,::= 印の左側に現れるBNF非終端記

号)を定義する形式項目は,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/若しくは [ISO9075-11] に定

義が現れる形式項目を修正するか,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/若しくは [ISO9075-11] 

に定義が現れる形式項目を置き換えるか,又は [ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/若しくは 

[ISO9075-11] に定義が全くない新しい形式項目を定義するかのいずれかとする。 

[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] に定義が現れる形式項目を修正する

追加規格のこれらの形式項目は,次のような“形式注釈 (Format comment)”の存在によって識別する。 

<修正される項目> ::= 

!! JIS X 3005-2からの全ての代替手段 (All alternatives from ISO/IEC 9075-2) 

| <新しい代替手段> 

これに対して,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] の形式項目を完全に

置き換える形式項目は,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] の形式項目の

BNF非終端記号と同一のBNF非終端記号をもつが,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は 

36 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

[ISO9075-11] からのいずれかの代替手段をそれらが含むという記述がない。 

[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] のどの形式項目にも対応しない新し

い形式項目は,追加規格中で区別しない。 

新しい細分箇条の形式項目には,印を付けない。 

[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] の形式項目が,ある追加規格の形式

項目によって修正されるか又は置き換えられるとき,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は 

[ISO9075-11] のその形式項目は,その形式項目によって定義しているBNF非終端の名前に直に先行する

囲みで,かつ,修正するか又は置き換える形式項目を含む追加規格の番号を含む小さく赤い囲みで示す。 

6.3.5.5 

新しい段落及び規則並びに修正される段落及び規則 

修正される箇条及び細分箇条では,各段落又は規則が,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/

又は [ISO9075-11] の段落又は規則の修正か,又はこの追加規格で追加される新しい段落又は規則かを示

すために,それに印を付ける。 

段落又は規則の修正は,【】(box) で囲んだ指示的な句を含めることによって識別する。 

【5番目の段落を置き換える。】は,後続するテキストによって,細分箇条の題名に後続する文中で識別

される規格の対応する細分箇条の5番目の段落を置き換えることを意味する。 

【構文規則6) b) ii) を置き換える。】は,後続するテキストによって,細分箇条の題名に後続する文中で

識別される規格の対応する細分箇条の構文規則6) b) ii) を置き換えることを意味する。 

【構文規則3) を補う。】は,後続するテキストによって,構文規則3) を拡張又は増強すべきことを意

味する。たいていの場合,補いは,新しい構文の提供を意味する新しい代替手段の追加による。 

修飾なしでの“置き換える”は,指示されたレベルで段落又は規則を完全に置き換えることを意味する。

例えば,【構文規則6) b) を置き換える。】は,構文規則6) b) 及びそれが含むかもしれない全ての部分規則

を置き換えることを意味する。〜の先行テキスト (lead text of) という用語を含むならば,その置換えは,

その指示に続く段落又は規則の,ダッシュ,中点又は符号を付けて列挙された最初の細別項目までのテキ

ストに対するものとし,その細別項目は,含めない。例えば,【構文規則1) b) の先行テキストを置き換え

る。】は,次の規則の斜体のテキスト (italicized text) だけを置き換えることを意味する。 

1) 構文規則1) の先行テキスト。 

a) 構文規則1) a) のテキスト。 

b) 構文規則1) b) の先行テキスト。 

場合: 

i) 

構文規則1) b) i) のテキスト。 

ii) 構文規則1) b) ii) のテキスト。 

c) 構文規則1) c) のテキスト。 

追加規則の新しい段落又は規則には,挿入されるところを示すために印を付ける。 

【2番目の段落の前に挿入する。】は,後続するテキストが,その細分箇条の題名に後続する文中で識別

される規格の対応する細分箇条の2番目の段落の直前に挿入されたかのように読むことを意味する。 

【一般規則4) の前に挿入する。】は,後続するテキストが,その細分箇条の題名に後続する文中で識別

される規格の対応する細分箇条の一般規則4) の直前に挿入されたかのように読むことを意味する。 

【この段落を挿入する。】又は【この一般規則を挿入する。】のように,特定の挿入位置を示さないなら

ば,後続するテキストが,その細分箇条の題名に後続する文中で識別される規格の対応する細分箇条の適

切な部分(例えば,一般規則)の最後に追加されたかのように読むことを意味する。 

37 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

各細分箇条の段落は,1から数え,ダッシュ,中点又は符号を付けて列挙された細別は,その段落のテ

キストと同じ段落の部分として数える。番号付きの注記は,段落として数えない。 

そのような指示では,“SR”を“構文規則”の意味で,“AR”を“アクセス規則”の意味で,“GR”を

“一般規則”の意味で,“CR”を“適合性規則”の意味で用いる。“Desc.”を“記述”の意味で,“Func.”

を“機能”の意味で用いる。 

[ISO9075-2],[ISO9075-3],[ISO9075-4] 及び/又は [ISO9075-11] の規則又は段落が,ある追加規格の

規則又は段落によって修正されるか又は置き換えられるとき,[ISO9075-2],[ISO9075-3],[ISO9075-4] 及

び/又は [ISO9075-11] のその規則又は段落は,その規則又は段落のテキストに直に先行する囲みで,か

つ,修正するか又は置き換える規則又は段落を含む追加規格の番号を含む小さく赤い囲みで示す。 

新しい箇条又は細分箇条の全ての段落,形式項目及び規則も,新規であり,したがって,それらには,

印を付けない。 

6.3.5.6 

修正される附属書 

修正される附属書では,修正する附属書の段落の先行テキストは,破棄する。 

注記17 これによって,表と,中点,ダッシュ又は細別符号を付けて列挙された細別項目とだけが保

持されることになる。 

他の全てのテキスト及び/又は表は,元の附属書の最初の段落によって暗示されたグループ化及び並べ

替えを考慮して,元の附属書のテキスト及び/又は表に併合する。 

注記18 テキスト中での箇条及び細分箇条への参照は,参照される箇条及び細分箇条が併合されるテ

キスト中で得られた値に調整する。 

6.3.6 

サブルーチンとして用いる細分箇条 

この規格群の各規格で,幾つかの細分箇条を,それらの意味を呼び出すために明示的な構文なしで定義

する。サブルーチン細分箇条と呼ばれるそのような細分箇条は,典型的に,一つ以上の別の細分箇条によ

って必要となる規則を取り込み,それらの別の細分箇条の規則によって呼び出されることを意図している。

幾つかの場合には,明示的な構文をもたないこれらの細分箇条は,別の規格によって,及び/又は処理系

定義の機構を利用することによって呼び出されることを意図している。 

言い換えると,これらの細分箇条の規則は,別の細分箇条,別の規格又は処理系定義の機構によって呼

び出されるある種の定義の“サブルーチン (subroutine)”であるかのように振る舞う。これらのサブルーチ

ン細分箇条は,典型的に,それらの呼出し元からそれらに情報を受け渡すことを要求するという方法で規

定する。受け渡さなければならない情報は,これらのサブルーチン細分箇条のパラメタとして表現され,

その情報は,これらのサブルーチン細分箇条の呼出し元によって提供される引数の形式で受け渡さなけれ

ばならない。 

サブルーチン細分箇条のどの呼出しも,呼び出されるサブルーチン細分箇条の必要な全てのパラメタに

対して,情報を陽に与えなければならない。必要な全てのパラメタに対する情報を与えないで,サブルー

チン細分箇条が呼び出されるならば,その効果は,処理系依存とする。 

6.3.7 

索引の体裁 

ISO/IEC 9075規格群の各規格の索引には,次の規約を用いる。 

− 太字 (boldface) の索引項目は,単語,句又はBNF非終端記号が定義されているページを示す。 

− 斜体 (italics) の索引項目は,BNF非終端記号が形式で用いられるページを示す。 

− 太字でも斜体でもない索引項目は,単語,句又はBNF非終端記号が定義されていないが,形式以外(例

えば,見出し,機能,構文規則,アクセス規則,一般規則,適合性規則,表,又はその他の記述テキ

38 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

スト)で用いられているページを示す。 

注記 JIS X 3005規格群の各規格の索引については,必ずしもこの規約どおりではない。 

6.3.8 

機能ID及び機能名 

機能は,規格定義機能 (standard-defined feature) 又は処理系定義機能 (implementation-defined feature) の

いずれかとする。 

規格定義機能は,JIS X 3005 (ISO/IEC 9075) 規格群の各規格で定義する。処理系定義機能は,SQL処理

系によって定義される(“8.4 拡張及び選択機能”参照)。 

機能は,機能ID及び機能名によって参照される。機能ID値は,文字及び三つの数字か,又は文字,三

つの数字,ハイフン及び一つ若しくは二つの追加の数字かのいずれかから成る。ハイフン及び追加の数字

を含む機能ID値は,完全な機能を定義するのに役立つ“部分機能 (subfeatures)”を示し,ハイフンなしの

機能ID値で完全な機能を示す。 

文字が“V”の機能IDは,処理系定義機能のために予約している。 

ある機能の部分機能の集合は,必ずしもその機能を網羅しないが,その機能の注目すべき特別な場合を

箇条書きにすることを意図している。さらに,機能の部分機能は,必ずしも互いに排他的ではない。すな

わち,幾つかの場合には,一つの部分機能が,別の部分機能を包括してもよい。 

適合性の要件を規定するために,機能全体だけを用いる。 

規格定義機能は,各規格の必須機能か,又は適合性規則によって定義する選択機能のいずれかとする。

規格定義機能の機能IDは,安定的で,一定のまま変わらないことを当てにすることができる。 

便宜上,JIS X 3005 (ISO/IEC 9075) 規格群の各規格で定義する全ての機能は,それらが定義される規格

中の参考の附属書に集約する。例えば,[ISO9075-2] で定義する機能は,[ISO9075-2] の“附属書F SQL

の機能の分類”で見つけることができる。 

適合性規則は,一般的に,機能によって規制されるBNF非終端記号を定義する細分箇条に入れる。非終

端記号の利用を特定の状況で規制するだけの状況では,適合性規則は,非終端記号を用いるところに入れ

る。これは,非終端記号の利用が機能によって規制されるという事実を,別の細分箇条の構文規則及び適

合性規則の見分によって推定できて,適合性規則が原理的に冗長であるという状況でも,行われる。適合

性規則のその他の冗長性は,できる限り排除する。 

JIS X 3005 (ISO/IEC 9075) 規格群の規格に対する附属書 

JIS X 3005 (ISO/IEC 9075) 規格群のどの規格のどの附属書も,参考とする。各附属書の内容は,付加的

な情報を提供し,それらの幾つかは,規定文中のどこかで記述したものを再記述する。 

7.1 

SQL適合性の要約 

[ISO9075-2]及び [ISO9075-3] を除くどの追加規格も,機能の番号で順序付けて,機能に関連する適合性

規則を含む全ての細分箇条の番号及び題名を含めて,JIS X 3005 (ISO/IEC 9075) 規格群の全ての機能を列

挙する附属書を含む。 

7.2 

処理系定義要素 

JIS X 3005 (ISO/IEC 9075) 規格群のどの規格も,その規格で規定し,SQL処理系間で異なることが許さ

れるが,特定の各SQL処理系に対して実装者が定める必要があるSQLの全ての要素及びその処理を列挙

する附属書を含む。 

7.3 

処理系依存要素 

JIS X 3005 (ISO/IEC 9075) 規格群のどの規格も,その規格で記述するが,規定しない,したがって,SQL

39 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

処理系間で異なることが許されるが,特定のどのSQL処理系に対しても実装者が定める必要がないSQL

の全ての要素及びその処理を列挙する附属書を含む。 

7.4 

削除予定機能 

[ISO9075-2] 及びどの追加規格も,その規格で規定するが,その規格の将来の版で規定されないかもし

れないSQLの全ての要素及びその処理を列挙する附属書を含む。 

7.5 

前の版との非互換性 

[ISO9075-2] 及びどの追加規格も,その規格の前の版で規定するが,現在の版では同じように規定しな

いSQLの全ての要素及びその処理を列挙する附属書を含む。そのような非互換性の最もよくある原因は,

言語への予約キーワードの追加であり,それは,JIS X 3005 (ISO/IEC 9075) 規格群の前の版に適合した

SQL言語中でのそれらの利用を無効にする。 

7.6 

SQLの機能の分類 

[ISO9075-2] 及びどの追加規格も,機能の番号で順序付けて,機能の名前を指定して,その規格で規定

するJIS X 3005 (ISO/IEC 9075) 規格群の全ての機能を列挙する附属書を含む。 

7.7 

欠陥報告 

[ISO9075-2] 及びどの追加規格も,細分箇条の番号で順序付けて,欠陥の本質を指定して,この規格の

前の版で報告され,この版で残ったままになっている全ての欠陥を列挙する附属書を含む。 

適合性 

幾つかの異なる種類の適合性を主張してもよい。適合性のどの主張も,適合性の最小の主張を含まなけ

ればならない。さらに,適合性は,0個以上の追加規格及び0個以上の選択機能に対して主張してもよい。 

8.1 

最小適合性 

適合性のどの主張も,最小適合性の主張 (claim of minimum conformance) を含まなければならず,その最

小適合性の主張は,[ISO9075-2] 及び [ISO9075-11] で規定する適合性の要件を満たす主張として定義され

る。最小適合性の主張は,[ISO9075-2] 及び [ISO9075-11] の適合性の要件によって要求される記述を含ま

なければならない。 

中核SQL (Core SQL) は,[ISO9075-2] 及び [ISO9075-11] で規定する適合性の要件で定義される機能の

集合とする。 

8.2 

各規格への適合性 

JIS X 3005 (ISO/IEC 9075) 規格群の規格への適合性の主張は,その規格で規定する全ての必須の機能の

提供を意味する。 

さらに,JIS X 3005 (ISO/IEC 9075) 規格群の規格への適合性のどの主張も,その規格で規定する適合性

の要件を満たさなければならない。 

JIS X 3005 (ISO/IEC 9075) 規格群の追加規格への適合性の主張は,適合性を主張するJIS X 3005 

(ISO/IEC 9075) 規格群のその規格の適合性の要件によって要求される主張を含まなければならない。 

8.3 

機能への適合性 

([ISO9075-2] 及び [ISO9075-11] を含む)JIS X 3005 (ISO/IEC 9075) 規格群のいずれかの規格への適合

性のために必須であるそれらの機能に加えて,JIS X 3005 (ISO/IEC 9075) 規格群のどの規格も,選択機能

を定義してもよい。これらの機能は,機能IDで識別し,適合性規則で規定する(“6.3.8機能ID及び機能

名”参照)。 

選択機能FEATは,“機能FEAT“機能名”なしでは,… (without Feature FEAT, “name of feature”, ...)”と

40 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

いう句によって各適合性規則の最初で示すように,選択される適合性規則の緩和によって規定する。適用

業務は,適用業務が必要とするSQL機能の集合を指定する。すなわち,適用業務のSQL言語は,必要な

機能に対して陽に緩和された制限を除いて,全ての適合性規則の制限を守らなければならない。逆に言え

ば,規格に適合するSQL処理系は,そのSQL処理系がSQLのどの機能を提供するかを特定しなければな

らない。SQL処理系は,必要な機能がSQL処理系の提供する機能の部分集合であるどんな適用業務も処

理しなければならない。 

機能FEAT1は,別の機能FEAT2を前提としてもよい。FEAT1を提供することを主張するSQL処理系

は,FEAT1の前提である各機能FEAT2も提供しなければならない。逆に言えば,適用業務は,FEAT1を

必要とすることを示すだけでよく,これが FEAT1の前提である各機能FEAT2も含むことを仮定してもよ

い。別の機能の前提となる機能の一覧は,JIS X 3005 (ISO/IEC 9075) 規格群の各規格の“適合性”と名付

けられた箇条で“…の前提機能の関係”と名付けた表で示す。幾つかの機能が複数の別の機能を前提とす

ること,及び幾つかの機能が別の規格で規定する機能を前提とすることに注意する。JIS X 3005 (ISO/IEC 

9075) 規格群の選択機能への適合性のどの主張も,機能を規定する適合性規則が存在しないかのように,

適合性を主張する全ての規格の適合性の要件を満たさなければならない。 

構文規則及び一般規則は,あるSQL構文を別の構文を用いて定義してもよい。そのような変換は,変換

される構文の意味を定義するために用いられ,変換を定義する構文規則で特に注記されていない限り,適

用可能な適合性規則を検査した後に,実効的に実行される。変換は,別のSQL機能を定義するために,あ

るSQL機能のSQL構文を用いてもよい。これらの変換は,構文の振る舞いを定義するのに役立ち,変換

を定義する構文規則で特に注記されていない限り,そのように定義された機能によって許される又は禁じ

られるという機能構文に対するどんな意味ももたない。規格に適合するSQL処理系は,SQL処理系が提

供することを主張する機能の集合に対して適用可能な適合性規則によって定義される変換されない構文

を,変換によって想定される意味で処理するだけでよい。 

8.4 

拡張及び選択機能 

SQL処理系は,JIS X 3005 (ISO/IEC 9075) 規格群が規定する機能に対する付加的な処理系定義の機能を

提供してもよく,予約語をリストに追加してもよい。 

注記19 予約語が追加されるならば,適合するSQL文が正しく処理されないかもしれない可能性があ

る。 

SQLフラグ機能が処理系定義の機能をフラグ付けするかどうかは,処理系定義とする。 

注記20 SQLフラグ機能は,この規格群で定義していない任意の機能IDを用いて処理系定義の機能

をフラグ付けしてもよい。しかし,この規格群の将来の版が,そのような機能IDを規格定

義機能に対して用いないという保証はない。 

注記21 SQLフラグ機能によってフラグ付けする処理系定義の機能は,二つ以上のSQL処理系からの

処理系定義の機能を識別してもよい。 

注記22 処理系定義の機能への機能IDの割当ては,SQLフラグ機能間で異なってもよい。 

注記23 SQL処理系は,情報スキーマのSQL̲FEATURESビューを通して処理系定義の機能を可視化

することを選択してもよいが,要求はされない。 

SQL処理系は,付加的な処理系定義のSQL呼出しルーチン,又はSQL呼出しルーチンに対する処理系

定義の引数値を提供してもよい。 

SQL処理系は,規格に適合しないSQL文又はルーチン呼出しを処理するための利用者選択肢を提供し

てもよい。SQL処理系は,JIS X 3005 (ISO/IEC 9075) 規格群の規格で規定する結果と異なる結果を生成す

41 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

るために,SQL文又はルーチン呼出しを処理する利用者選択肢を提供してもよい。 

それは,利用者選択肢によって陽に要求されるときだけ,そのような結果を生成しなければならない。

JIS X 3005 (ISO/IEC 9075) 規格群の追加規格で付加的な拡張及び選択機能を規定してもよい。 

8.5 

SQLフラグ機能 

SQLフラグ機能は,処理系提供の機能とし,それは,規格に適合するSQL処理系が提供してもよいSQL

言語の拡張又はSQL処理の別の代替手段を識別することができる(“8.4 拡張及び選択機能”参照)。 

SQLフラグ機能は,規格に適合するSQL処理系で,この規格群の異なる水準下で動作する異なるSQL

処理系の間で,可搬で,かつ,相互運用可能なSQL言語の生成の助けとなることを意図している。 

SQLフラグ機能は,SQL言語の静的検査に効果をあげることを意図している。一般規則が評価されるま

でに決定できない拡張を検出することは要求されない。 

SQL処理系は,その処理系に関する限り,誤りにならないSQL言語をフラグ付けするだけでよい。 

注記24 誤りを含むSQL言語をシステムが処理するならば,何が誤りで,何が拡張であるかを単一の

文内で決定することが非常に難しいかもしれない。一つの可能性として,処理系は,2段階,

すなわち,最初は,通常の構文解析機能で,2番目は,SQLフラグ機能で,SQL言語を検査

することを選択してもよい。最初の段階では,処理系が処理できない又は認識できない規格

外のSQL言語に対して誤りのメッセージを生成する。第2段階では,その処理系に関係する

限り,誤りを含まないSQL言語を処理する。すなわち,その処理系によって処理することが

できる規格外の全てのSQL言語を一度に検出し,フラグ付けする。このようなどの2段階の

処理も,末端の利用者に対して透過的にするのがよい。 

SQLフラグ機能は,規格に適合するSQL処理系が提供する代替処理環境で異なって実行されてもよい

適合するSQL言語識別を助ける。それは,適合しないSQL処理環境から適合するSQL処理環境にSQL

言語を移動するときに修正しなければならないかもしれないSQLの要素を識別するツールも提供する。 

SQLフラグ機能は,次の“フラグ付け水準 (level of flagging)”選択肢のうちの一つ以上を提供する。 

− 中核SQLフラグ付け (Core SQL Flagging) 

− 各部SQLフラグ付け (Part SQL Flagging) 

これらの選択肢の一つを提供するSQLフラグ機能は,SQL言語の指定された部分集合に違反するSQL

言語の構成要素を識別できなければならない。“中核SQLフラグ付け”で用いるSQL言語の部分集合は,

中核SQLとする。“各部SQLフラグ付け”で用いるSQL言語の部分集合は,中核SQLに加えて,JIS X 3005 

(ISO/IEC 9075) 規格群の指定された一つ又は複数の規格への適合性のために必要な機能とする。 

SQLフラグ機能は,“SQL機能フラグ付け (SQL Feature Flagging)”も提供してもよい。“SQL機能フラグ

付け”は,SQL言語の指定された部分集合に加えて,SQL言語の構成要素を適合させるためにどの選択機

能が必要であるかを示す。 

SQLフラグ機能は,次の“検査の範囲 (extent of checking)”選択肢のうちの一つ以上を提供する。 

− 構文だけ (Syntax Only) 

− カタログ調査 (Catalog Lookup) 

構文だけの選択肢の下では,SQLフラグ機能は,指定されたSQL言語だけを解析する。すなわち,そ

れは,情報スキーマをアクセスしないで決定することができる構文規則の違反に対して検査する。構文要

素のデータ型に依存する違反が構文だけから原理的に推測できるとしても,SQLフラグ機能は,そのよう

42 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

な違反を必ずしも検出しない。 

注記25 詳細は,[ISO9075-2] の“附属書F SQLの機能の分類”,[ISO9075-3] の“附属書F SQL

の機能の分類”,[ISO9075-4] の“附属書F SQLの機能の分類”,[ISO9075-9] の“附属書F 

SQLの機能の分類”,[ISO9075-10] の“附属書F SQLの機能の分類”,[ISO9075-11] の“附

属書F SQLの機能の分類”,[ISO9075-13] の“附属書F SQLの機能の分類”及び 

[ISO9075-14] の“附属書F SQLの機能の分類”参照。 

カタログ調査の選択肢の下では,SQLフラグ機能は,定義スキーマ情報を利用できることを仮定し,全

ての構文規則の違反を検査する。例えば,幾つかの構文規則は,データ型を制限する。フラグ機能のこの

選択肢は,そのような制限を緩和する拡張を識別することもある。安全保護違反を避けるために,この選

択肢は,特定の情報スキーマを通じてだけ定義スキーマを見て調べなければならない。フラグ機能は,ど

の<SQLスキーマ定義文>又は<SQLスキーマ操作文>も,必ずしも実行又は実行の模擬をしない。 

8.6 

適合性の主張 

JIS X 3005 (ISO/IEC 9075) 規格群に対する適合性の主張は,次の全ての適合性を主張しなければならな

い。 

1) 最小適合性の主張。 

2) 追加規格に対する0個以上の適合性の主張。 

3) 選択機能に対する0個以上の適合性の主張。 

注記26 この箇条8の要件に加えて,JIS X 3005 (ISO/IEC 9075) 規格群の各規格では,その規格に対

する適合性の主張で表明しなければならないことを規定する。 

8.6.1 

SQL適用業務に対する要件 

“SQL適用業務 (SQL application)”という用語は,ここでは,次の一つ以上を含む翻訳単位の集まりの

意味で用いる。 

− SQL文。 

− SQL/CLIルーチンの呼出し。 

− 外部呼出し手続の呼出し。 

規格に適合するSQL適用業務は,次の全てを満たすという条件で,構文誤りなしで処理されなければな

らない。 

− どのSQL文又はSQL呼出しも,JIS X 3005 (ISO/IEC 9075) 規格群に従って,構文的に正しい。 

− スキーマの内容がSQL適用業務の要件を満たす。 

− SQLデータがスキーマの内容に適合する。 

− 利用者が,構文的に正しくないSQL文の即時実行を行っていない。 

規格に適合するSQL適用業務は,追加機能,又は主張する適合性の水準を超える機能を用いてはならな

い。 

SQL適用業務による適合性の主張では,次のことも表明しなければならない。 

− 正しく動くために,どんな処理系定義の要素及び動作が必要か。 

− どんなスキーマの内容を利用者が供給する必要があるか。 

8.6.2 

SQL処理系に対する要件 

規格に適合するSQL処理系は,関連する一般規則,定義及び記述に従って,適合するSQL言語を処理

43 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

しなければならない。 

規格に適合するSQL処理系は,関連する定義及び一般規則に従って,適合するルーチン呼出しを処理し

なければならない。 

SQL処理系による適合性の主張では,次のことも表明しなければならない。 

− 主張の範囲内で,JIS X 3005 (ISO/IEC 9075) 規格群が処理系定義と規定する全ての要素及び動作の定

義。 

規格に適合するSQL処理系で,追加機能,又は“中核 (Core)”として規定している機能を超える機能を

提供するSQL処理系は,SQLフラグ機能を提供しなければならない。 

44 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書A 

(参考) 

SQLの保守及び解釈 

ISO/IEC JTC1は,JTC1規格の改正,保守及び解釈についての公式な手続を与える。JTC1専門業務用

指針 (JTC1 Directives) の“14 国際規格の保守 (Maintenance of International Standards)”では,“欠陥報告 

(defect report)”の作成及び処理のための手続を規定している。欠陥報告は,既存の国際規格に対する技術

的正誤票 (technical corrigenda),追補 (amendments),解釈書 (interpretations) 又はその他の説明書 

(commentary) になることもある。 

ISO/IEC 9075規格群の仕様に関する今後の新規質問事項又は新規欠陥報告に関しては,次の宛先に連絡

することが望ましい。 

Secretariat, ISO/IEC JTC1/SC32 

American National Standards Institute 

11 West 42nd Street 

New York, NT 10036 

USA 

45 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書B 

(参考) 

処理系定義要素 

この附属書は,この規格の本体で処理系定義として識別している機能を参照する。 

処理系定義 (implementation-defined) という用語は,処理系間で異なってもよいが,それぞれの特定の処

理系に対して定義しなければならない特性を識別するために用いる。 

1) “4.2.2 SQLエージェント” 

a) SQLの直接起動(“5.3.3.3 SQLの直接起動”参照)において,SQL文の実行を引き起こすSQLエ

ージェントは,処理系定義とする。 

2) “4.2.4 SQLクライアントモジュール” 

a) SQLクライアントモジュールを作成又は破壊する機構は,処理系定義とする。 

b) SQLクライアントモジュールが名前をもつならば,許される名前は,処理系定義とする。 

3) “4.2.9.1 カタログ” 

a) カタログを作成及び破壊するための機構は,処理系定義とする。 

b) <PREPARE文>及び<EXECUTE IMMEDIATE文>の実行によって,現行SQLセション中で動的に

準備される<準備可能文>の実行に対する既定カタログ名は,処理系定義とする。 

4) “4.2.9.2 SQLスキーマ” 

a) SQLスキーマは,SQLスキーマ文の実行又は処理系定義の機構によって作成され,破壊されても

よい。 

5) “4.4.3.1 数型” 

a) 算術演算の結果が結果の型で正確に表現できないならば,結果を丸めるか又は切り捨てるかは,

処理系定義とする。 

6) “4.4.3.2 文字列型” 

a) 文字列型の最大長は,処理系定義とする。 

b) 文字長大オブジェクト型の最大可変長は,処理系定義とする。 

7) “4.4.3.3 2進オクテット列型” 

a) 2進オクテット列型の最大長は,処理系定義とする。 

b) 2進オクテット長大オブジェクト型の最大可変長は,処理系定義とする。 

8) “4.6.2.2 照合順” 

a) 提供される照合順で,各国規格又は国際規格によって定義された照合順から導出されない照合順

は,処理系定義とする。 

9) “4.8.1 ホスト言語” 

a) SQL処理系によって提供されるホスト言語の集合は,処理系定義とする。 

b) SQLクライアントモジュール結合様式を用いるとき,SQLクライアントモジュールを指定する機

構は,処理系定義とする。 

c) どの結合様式を選択しても,SQL文は,ソース言語文字集合 (source language character set) とし

て知られている処理系定義の文字集合で記述する。 

10) “4.8.2.1 パラメタの一般的な渡し方及びデータ型対応情報” 

46 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

a) 翻訳単位に対する外部ルーチンの参照とその翻訳単位との間の結合の方法及び時期は,処理系定

義とする。 

11) “4.10.1 ルーチン一般情報” 

a) 翻訳単位に対する外部ルーチンの参照とその翻訳単位との間の結合の方法及び時期は,処理系定

義とする。 

12) “4.11.1 SQL文の種類” 

a) SQL処理系が提供する追加の文は,処理系定義とする。 

13) “5.3.3.3 SQLの直接起動” 

a) SQLの直接起動では,SQL文の呼出し方法,条件を引き起こす方法,診断情報にアクセスする方

法,及び結果を報告する方法は,処理系定義とする。 

14) “6.3.3.3 規則の評価順序” 

a) SQL呼出し関数が決定的であり,かつ,SQLデータを潜在的に修正しないならば,その呼出しは,

非本質的とする。そうでなければ,それが本質的であるか非本質的であるかは,処理系定義とす

る。 

15) “6.3.6 サブルーチンとして用いる細分箇条” 

a) 幾つかの場合には,明示的な構文をもたないこれらの細分箇条は,別の規格によって,及び/又

は処理系定義の機構を利用することによって呼び出されることを意図している。 

b) これらの細分箇条の規則は,別の細分箇条,別の規格又は処理系定義の機構によって呼び出され

るある種の定義の“サブルーチン (subroutine)”であるかのように振る舞う。 

16) “8.4 拡張及び選択機能” 

a) SQL処理系は,JIS X 3005 (ISO/IEC 9075) 規格群が規定する機能に対する付加的な処理系定義の

機能を提供してもよく,予約語をリストに追加してもよい。 

b) SQLフラグ機能が処理系定義の機能をフラグ付けするかどうかは,処理系定義とする。 

c) SQL処理系は,付加的な処理系定義のSQL呼出しルーチン,又はSQL呼出しルーチンの処理系

定義の引数値を提供してもよい。 

47 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書C 
(参考) 

処理系依存要素 

この附属書は,規格に適合する処理系の動作を処理系依存として,この規格で陽に規定している箇所を

参照する。 

処理系依存 (implementation-dependent) という用語は,処理系間で異なってもよいが,特定のどの処理系

に対しても規定する必要がない特性を識別するために用いる。 

1) “4.6.1 SQLスキーマオブジェクト一般情報” 

a) SQL呼出しルーチンの特定名が陽に指定されないならば,それは,処理系依存とする。 

2) “4.6.2.1 文字集合” 

a) SQL処理系に完全に含まれる文字に対して,それらを符号化して文字列にまとめる方法は,処理

系依存とする。 

3) “4.7.2 決定性及び制約” 

a) 決定的であることを主張するが,実際には決定的でないルーチンを呼び出す効果は,処理系依存

とする。 

4) “4.8.1 ホスト言語” 

a) 埋込みSQL結合様式に対して,SQL文から外部呼出し手続を生成する機構,それらの外部呼出し

手続をSQLクライアントモジュールにまとめる機構,及び各SQL文をそれから生成された外部

呼出し手続の呼出しに置き換える機構は,処理系依存とする。 

5) “6.3.2 情報スキーマ及び定義スキーマの規定” 

a) 情報スキーマのビューが基にする実際のオブジェクトは,処理系依存とする。 

6) “6.3.3.2 規則の要件を示す用語” 

a) JIS X 3005 (ISO/IEC 9075) 規格群の形式及び構文規則に適合しない言語の扱いは,処理系依存と

する。 

7) “6.3.3.3 規則の評価順序” 

a) 優先順序が形式又は括弧によって特に決定されないとき,式を実際に左から右に評価するかどう

かは,処理系依存とする。 

b) 式又は探索条件の非本質部分の評価が例外条件を引き起こすことになるならば,その例外条件を

引き起こすかどうかは,処理系依存とする。 

c) 中間結果を含む格納場所の宣言型は,処理系依存とする。 

8) “6.3.3.7 例外” 

a) 例外条件で終了するSQL文の代入相手及びSQL記述子領域に与える効果は,JIS X 3005 (ISO/IEC 

9075) 規格群で陽に定義していない限り,処理系依存とする。 

b) SQL文の実行結果として二つ以上の条件が引き起こされたならば,そのような二つ以上の条件に

ついての診断情報を利用可能にするかどうかは,処理系依存とする。 

48 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書D 
(参考) 

削除予定機能 

この附属書は,ISO/IEC 9075-2の“附属書D 削除予定機能”を修正する。 

次の機能については,この規格の改正で将来削除することを意図している。 

なし。 

49 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書E 

(参考) 

ISO/IEC 9075:2008との非互換性 

この規格のこの版は,JIS X 3005-1:2010 (ISO/IEC 9075-1:2008) で規定した,データベース言語SQLの

前の版との幾つかの非互換機能を導入する。 

この附属書中で明記されていない限り,データベース言語SQLの機能及び能力は,JIS X 3005-1:2010 

(ISO/IEC 9075-1:2008) と互換性がある。 

1) JIS X 3005-1:2010 (ISO/IEC 9075-1:2008)では,SQLプロファイル (SQL Profiles) がデータベース言

語SQLに対して定義されていた。この規格のこの版では,SQLプロファイルの定義が削除された。 

50 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書F 

(参考) 

SQLの機能の分類 

この附属書は,この規格中で規定している機能の分類を記述する。 

この規格のこの版で定義する機能はない。 

51 

X 3005-1:2014 (ISO/IEC 9075-1:2011) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書G 
(参考) 

JIS X 3005 (ISO/IEC 9075) 規格群のこの版で取り込まれていない欠陥報告 

この附属書中の各項目は,この規格の前の版で報告され,この版で残ったままになっている欠陥を記述

する。 

 なし。