DerbyのサポートするSQL-92の機能

SQL-92のサポートには4つのレベルがあります。
  • SQL92E

    初歩的

  • SQL92T

    過渡的 FIPS 127-2という発行物にてNISTが定義

  • SQL92I

    中級

  • SQL92F

    完全

基本データ型

次の表ではDerbyにて利用可能なSQL-92の基本データ型を示します。
表 1. 利用可能なSQL-92の機能: 基本データ型
機能 定義する仕様 Derby
SMALLINT SQL92E Yes
INTEGER SQL92E Yes
DECIMAL(p,s) SQL92E Yes
NUMERIC(p,s) SQL92E Yes
REAL SQL92E Yes
FLOAT(p) SQL92E Yes
DOUBLE PRECISION SQL92E Yes
CHAR(n) SQL92E Yes

基本算術演算

表 1. SQL-92の機能のサポート:基本的な算術演算
機能 定義する仕様 Derby
+, *, -, /, unary +, unary - SQL92E Yes

基本的な比較

表 1. SQL-92の機能のサポート:基本的な比較
機能 定義する仕様 Derby
<, >, <= ,>=, <>, = SQL92E Yes

基本的な述語

表 1. SQL-92の機能のサポート:基本的な述語
機能 定義する仕様 Derby
BETWEEN, LIKE, NULL SQL92E Yes

定量的な述語

表 1. SQL-92の機能のサポート:定量的な述語
機能 定義する仕様 Derby
IN, ALL/SOME, EXISTS SQL92E Yes

スキーマの定義

表 1. SQL-92の機能のサポート:スキーマの定義
機能 定義する仕様 Derby
SQL92E Yes
ビュー SQL92E Yes
権限 SQL92E Yes

列の属性

表 1. SQL-92の機能のサポート:列の属性
機能 定義する仕様 Derby
既定値 SQL92E Yes
空値をとれるかの定義 SQL92E Yes

制約(延期できない)

表 1. SQL-92の機能のサポート: 制約(延期できない)
機能 定義する仕様 Derby
NOT NULL SQL92E Yes (SYSCONSTRAINTSには記録されない)
UNIQUE/PRIMARY KEY SQL92E Yes
FOREIGN KEY SQL92E Yes
CHECK SQL92E Yes
View WITH CHECK OPTION SQL92E No ビューの更新はできない

カーソル

表 1. SQL-92の機能のサポート:カーソル
機能 定義する仕様 Derby
DECLARE, OPEN, FETCH, CLOSE SQL92E Yes JDBCのメソッド呼び出しが該当
UPDATE, DELETE CURRENT SQL92E Yes

動的なSQL1

表 1. SQL-92の機能のサポート: 動的なSQL1
機能 定義する仕様 Derby
ALLOCATE / DEALLOCATE / GET / SET DESCRIPTOR SQL92T Yes JDBCのメソッド呼び出しにより実現
PREPARE / EXECUTE / EXECUTE IMMEDIATE SQL92T Yes JDBCのメソッド呼び出しにより実現
DECLARE, OPEN, FETCH, CLOSE, UPDATE, DELETE dynamic cursor SQL92T Yes JDBCのメソッド呼び出しにより実現
DESCRIBE output SQL92T JDBCにより実現

基本的な情報スキーマ

表 1. SQL-92の機能のサポート 基本的な情報スキーマ
機能 定義する仕様 Derby
TABLES SQL92T SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS
VIEWS SQL92T SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS
COLUMNS SQL92T SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS

基本的なスキーマへの操作

表 1. SQL-92の機能のサポート: 基本的なスキーマへの操作
機能 定義する仕様 Derby
CREATE / DROP TABLE SQL92T Yes
CREATE / DROP VIEW SQL92T Yes
GRANT / REVOKE SQL92T Yes
ALTER TABLE ADD COLUMN SQL92T Yes
ALTER TABLE DROP COLUMN SQL92T Yes

表の結合

表 1. SQL-92の機能のサポート: 表の結合
機能 定義する仕様 Derby
INNER JOIN SQL92T Yes
natural join SQL92T No
LEFT, RIGHT OUTER JOIN SQL92T Yes
join condition SQL92T Yes
named columns join SQL92T Yes

日時のデータ型

表 1. SQL-92の機能のサポート: 日時のデータ型
機能 定義する仕様 Derby
単純なDATE, TIME, TIMESTAMP, INTERVAL SQL92T Yes ただしINTERVALは無い。
日時の定数 SQL92T Yes
日時の演算 SQL92T Yes Javaのメソッドにて可能
日時の比較 SQL92T Yes
述語: OVERLAPS SQL92T Yes Javaのメソッドにて可能

VARCHAR データ型

表 1. SQL-92の機能のサポート: VARCHAR
機能 定義する仕様 Derby
LENGTH SQL92T Yes
連結 (||) SQL92T Yes

トランザクションの分離

表 1. SQL-92の機能のサポート: トランザクションの分離
機能 定義する仕様 Derby
READ WRITE / READ ONLY SQL92T JDBCの利用、データベースの属性、記録媒体による
RU, RC, RR, SER SQL92T Yes

ユーザ毎に複数スキーマを持つ

表 1. SQL-92の機能のサポート: ユーザ毎に複数スキーマを持つ
機能 定義する仕様 Derby
SCHEMATA ビュー SQL92T SYS.SYSSCHEMAS

権限表

表 1. SQL-92の機能のサポート: 権限表
機能 定義する仕様 Derby
TABLE_PRIVILEGES SQL92T No
COLUMNS_PRIVILEGES SQL92T No
USAGE_PRIVILEGES SQL92T No

表への操作

表 1. SQL-92の機能のサポート: 表への操作
機能 定義する仕様 Derby
UNION relaxation SQL92I Yes
EXCEPT SQL92I Yes
INTERSECT SQL92I Yes
CORRESPONDING SQL92I No

スキーマの定義文

表 1. SQL-92の機能のサポート: スキーマの定義文
機能 定義する仕様 Derby
CREATE SCHEMA SQL92I 部分的に実現

ユーザ認証

表 1. SQL-92の機能のサポート: ユーザ認証
機能 定義する仕様 Derby
SET SESSION AUTHORIZATION SQL92I SET SCHEMAを使う
CURRENT_USER SQL92I Yes
SESSION_USER SQL92I Yes
SYSTEM_USER SQL92I No

表の制約

表 1. SQL-92の機能のサポート:表の制約
機能 定義する仕様 Derby
TABLE CONSTRAINTS SQL92I SYS.SYSCONSTRAINTS
REFERENTIAL CONSTRAINTS SQL92I SYS.SYSFOREIGNKEYS
CHECK CONSTRAINTS SQL92I SYS.SYSCHECKS

スキーマ情報の提供

表 1. SQL-92の機能のサポート: スキーマ情報の提供
機能 定義する仕様 Derby
SQL_FEATURES SQL92I/FIPS 127-2 JDBCのDatabaseMetaDataを利用
SQL_SIZING SQL92I/FIPS 127-2 JDBCのDatabaseMetaDataを利用

日時の全機能

表 1. SQL-92の機能のサポート: 日時の全機能
機能 定義する仕様 Derby
TIMEやTIMESTAMPの精度 SQL92F Yes

全ての文字列処理

表 1. SQL-92の機能のサポート: 全ての文字列処理
機能 定義する仕様 Derby
POSITION式 SQL92F JavaのメソッドあるいはLOCATEを利用
UPPER/LOWER 関数 SQL92F Yes

様々

表 1. SQL-92の機能のサポート: 様々
機能 定義する仕様 Derby
デリミトされた識別子 SQL92E Yes
相互に関連した副問合せ SQL92E Yes
挿入・更新・削除文 SQL92E Yes
結合 SQL92E Yes
Whereによる限定 SQL92E Yes
Group by SQL92E Yes
Having SQL92E Yes
集約関数 SQL92E Yes
Order by SQL92E Yes
選択式 SQL92E Yes
Select * SQL92E Yes
SQLCODE SQL92E No SQL-92では推奨されない。
SQLSTATE SQL92E Yes
ビューでのUNION、INTERSECTおよびEXCEPT SQL92T Yes
暗黙の数値型変換 SQL92T Yes
暗黙の文字列型変換 SQL92T Yes
診断情報の取得 SQL92T JDBCのSQLExceptionsを利用
グループへの処理 SQL92T Yes
selectの選択項目一覧における限定された* SQL92T Yes
小文字の識別子 SQL92T Yes
空値とすることのできる主キー SQL92T No
複数のモジュールサポート SQL92T No (JDBCの一部ではなく、必要ではない。)
参照性の削除処理 SQL92T CASCADE、SET NULL、RESTRICTやNO ACTION
CAST関数 SQL92T Yes
INSERT式 SQL92T Yes
明示的な既定値 SQL92T Yes
キーワードの緩和 SQL92T Yes
Domainの定義 SQL92I No
CASE式 SQL92I 部分的にサポート
合成された文字列の定数 SQL92I 連結が利用できる
LIKEの機能強化 SQL92I Yes
UNIQUEの述語 SQL92I No
表の利用情報 SQL92I SYS.SYSDEPENDS
中間的な情報スキーマ SQL92I JDBCのDatabaseMetaDataおよびDerbyのシステム表が利用可
副プログラムのサポート SQL92I より機能が豊富なJDBCでは関係が無い。
中間的なSQLへのフラグ付け SQL92I No
スキーマの操作 SQL92I Yes
長い識別子 SQL92I Yes
両側への外部結合 SQL92I No
タイムゾーンの指定 SQL92I No
スクロール可能なカーソル SQL92I 部分的 (JDBC2.0ではスクロール可能なinsensitiveなカーソル。)
中間的な集合関数のサポート SQL92I 部分的に実現
文字セットの定義 SQL92I Javaのロケールをサポート
文字セットへの名前付け SQL92I Javaのロケールをサポート
スカラー副問合せの値 SQL92I Yes
拡張されたnull述部 SQL92I Yes
制約の管理 SQL92I Yes (ADD/DROP CONSTRAINT)
FOR BIT DATA 型 SQL92F Yes
Assertion 制約 SQL92F No
一時表 SQL92F DECLARE GLOBAL TEMPORARY TABLEで、部分的に実現。
完全な動的SQL SQL92F No
完全なvalues式 SQL92F Yes
真の値判定 SQL92F Yes
導出表をFROMにおける SQL92F Yes
アンダースコアを後につけることができる SQL92F Yes
Indicatorデータ型 SQL92F JDBCとは関連しない。
参照する名前の順番 SQL92F No
完全なSQLのフラグ付け SQL92F No
行および表の構築子 SQL92F Yes
カタログ名の限定子 SQL92F No
単純表 SQL92F No
CHECK制約での副問合せ SQL92F No ただしJavaのメソッドで同等のことができる。
Union join SQL92F No
Collationやtranslation SQL92F Javaのロケールが利用可能
参照性の更新処理 SQL92F RESTRICTおよびNO ACTION。 トリガによりその他も可能。
ALTER domain SQL92F No
INSERT 列権限 SQL92F No
参照性のMATCH型 SQL92F No
ビューのCHECK制約の機能強化 SQL92F No、ビューは更新できない。
Session管理 SQL92F JDBCを利用
接続管理 SQL92F JDBCを利用
自己参照的な操作 SQL92F Yes
insensitiveなカーソル SQL92F Yes JDBC 2.0を通して可能
完全な集合関数 SQL92F 部分的な実現
カタログへのフラグ付け SQL92F No
局所的な表への参照 SQL92F No
カーソル全体の更新 SQL92F No
関連概念
SQLの識別子
組込みシステム関数
JDBC リファレンス
関連資料
大文字小文字と特殊文字
SQL 節
SQL式
JOIN 演算
SQL 問い合わせ
組み込み関数
SQL予約語
Derbyのシステム表
Derbyの例外メッセージとSQL state
java.sql.BatchUpdateException クラス
Connected Device ConfigurationおよびFoundation Profile向けのJDBCパッケージ(JSR169)
JDBC 3.0の機能
JDBC 4.0の機能
JDBCエスケープの構文