# 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言語のリファレンス
関連概念
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エスケープの構文