JIS X 3005-1:2014 データベース言語SQL 第1部:枠組(SQL/Framework) | ページ 5

                                                                                             15
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
構造型を基にして一つ以上のビューを定義することができる。構造型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) を指定する。
トリガ事象は,当該表に関するどんな動作が被トリガ動作を引き起こさなければならないかを指定する。

――――― [JIS X 3005-1 pdf 21] ―――――

16
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
トリガ事象は,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に付与される。
スキーマオブジェクトを作成する認可識別子には,そのオブジェクトに関する可能な全ての権限が,付
与選択肢付きで自動的に付与される。
スキーマオブジェクトに関する権限をもつ認可識別子だけが,そのオブジェクトの存在を知ることがで

――――― [JIS X 3005-1 pdf 22] ―――――

                                                                                             17
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
きる。

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クライアントモジュール結合様式。この結合様式では,利用者は,

――――― [JIS X 3005-1 pdf 23] ―――――

18
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
処理系定義の機構を用いて,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以上の値は,関連付けられたパラメタの値を切り捨てる必要がなかったな

――――― [JIS X 3005-1 pdf 24] ―――――

                                                                                             19
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
らば,その値の長さが何であったかを示す。これは,文字列型及び他の幾つかのデータ型で発生してもよ
い。
標識パラメタが関連付けられないパラメタにナル値が代入されることになるならば,例外条件が引き起
こされる。

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データの変更が許さ
れる)読み書き可能かを示す。

――――― [JIS X 3005-1 pdf 25] ―――――

次のページ PDF 26

JIS X 3005-1:2014の引用国際規格 ISO 一覧

  • ISO/IEC 9075-1:2011(IDT)

JIS X 3005-1:2014の国際規格 ICS 分類一覧

JIS X 3005-1:2014の関連規格と引用規格一覧