SQL構文

OracleDI Driver for LDAPを使用するときには、以降で説明する文を使用できます。標準SQL構文を使用して、リレーショナル・データの構造とデータを管理できます。

重要な注意: 外部データベースを使用する場合は、ここで説明するコマンドのかわりに、固有の問合せエンジン構文を使用できます。

重要な注意: OracleDI Driver for LDAPは自動コミット・モードでのみ動作します。コミット・コマンドやロールバック・コマンドを使用して明示的にトランザクションを管理することはできません。

重要な注意: 外部データベースを使用してLDAPツリー・データを保管する場合、一時表ではDDL文のみを実行できます。

次の表は、示されているDML操作を特定のキー・フィールドに対して実行するときに適用される推奨事項をまとめたものです。

列の種類

挿入

更新

削除

外部キー

 

マスター表の参照制約および順序のある表の移入操作に注意してください。

使用不可

マスター表の参照制約および順序のある削除要求に注意してください。

主キー

スレーブ表の参照制約および順序のある表の移入操作に注意してください。

使用不可

スレーブ表の参照制約および順序のある削除要求に注意してください。

IS_xxx

 

正しいフラグ値を元のオブジェクト・クラスに関連付けることに注意してください。

使用不可

OK

Key_Column

 

正しいLDAP構文でRDN値を設定することに注意してください。

 

使用不可

OK

SQL文

任意の数のコマンドを結合できます。「;」を使用して各コマンドを区切ることができますが、使用しなくてもかまいません。

DISCONNECT 

この接続を閉じます。

説明

INSERT INTO

INSERT INTO <table_name> [ ( <column_name> [,...]) ]  { VALUES (<expression> [,...])| <SELECT Statement> } 

1つ以上の新しいデータ行を表に挿入します。

SELECT

SELECT [DISTINCT] { <select_expression> | <table_name>.* | * } [, ... ] 

[ INTO <new_table> ] 

FROM <table_list> 

[ WHERE <expression> ] 

[ GROUP BY <expression> [, ...] ] 

[ ORDER BY <order_expression> [, ...] ] 

[ { UNION [ALL] | {MINUS|EXCEPT} | INTERSECT } <select_statement> ] 

 
<table_list>
::=

<table_name> [ { INNER | LEFT [OUTER] } JOIN <table_name> ON <expression> ] [, ...] 

<select_expression> ::=

{ <expression> | COUNT(*) | {COUNT | MIN | MAX | SUM | AVG} (<expression>)  <column_alias>} 

<order_expression> ::=

{ <column_number> | <column_alias> | <select_expression> } [ ASC | DESC ] 

スキーマの1つ以上の表から情報を取得します。

UPDATE

UPDATE table SET column = <expression> [, ...] [WHERE <expression>] 

データベースの表のデータを変更します。

 

式、条件、値

<expression> ::=

[NOT] <condition> [ { OR | AND } <condition> ] 

<condition> ::=

{ <value> [ || <value> ] 

| <value> { = | < | <= | > | >= | <> | != | IS [NOT] } <value>

| EXISTS(<select_statement>) 

| <value> BETWEEN <value> AND <value>

| <value> [NOT] IN ( {<value> [, ...] | selectStatement } ) 

| <value> [NOT] LIKE <value> [ESCAPE] value } 

<value> ::=

[ + | - ] { term [ { + | - | * | / } term

| ( condition

| function ( [parameter] [,...] ) 

| selectStatement giving one value 

<term> ::= 

{ 'string' | number | floatingpoint | [table.]column | TRUE | FALSE | NULL } 

<string> ::= 

<name> ::=

<values> ::=

SQLファンクション

数値ファンクション

ABS(d)

double値の絶対値を返します。

ACOS(d)

角度のアーク・コサインを返します。

ASIN(d)

角度のアーク・サインを返します。

ATAN(d)

角度のアーク・タンジェントを返します。

ATAN2(a,b)

a/bのタンジェントを返します。

BITAND(a,b)

a & bを返します。

BITOR(a,b)

a | bを返します。

CEILING(d)

dより小さくない最小の整数を返します。

COS(d)

角度のコサインを返します。

COT(d)

角度のコタンジェントを返します。

DEGREES(d)

ラジアンを角度に変換します。

EXP(d)

e(2.718...)のd乗を返します。

FLOOR(d)

dより大きくない最大の整数を返します。

LOG(d)

eを底とする自然対数を返します。

LOG10(d)

10を底とする対数を返します。

MOD(a,b)

モジュロbを返します。

PI()

円周率(3.1415...)を返します。

POWER(a,b)

aのb乗を返します。

RADIANS(d)

角度をラジアンに変換します。

RAND()

0.0以上1.0未満のランダムな値xを返します。

ROUND(a,b)

aを小数点以下b桁に四捨五入します。

SIGN(d)

dが0より小さい場合は-1、dが0の場合は0、dが0より大きい場合は1を返します。

SIN(d)

角度のサインを返します。

SQRT(d)

平方根を返します。

TAN(d)

角度のタンジェントを返します。

TRUNCATE(a,b)

aを小数点以下b桁に切り捨てます。

 

文字列ファンクション

ASCII(s)

sの左端の文字のASCIIコードを返します。

BIT_LENGTH(s)

文字列の長さをビット数で返します。

CHAR(c)

ASCIIコードがcの文字を返します。

CHAR_LENGTH(s)

文字列の長さを文字数で返します。

CONCAT(str1,str2)

str1とstr2を連結して返します。

DIFFERENCE(s1,s2)

s1とs2の音の差を返します。

HEXTORAW(s1)

文字列を16進数からRAWに変換して返します。

INSERT(s,start,len,s2)

startからlenの個数の文字をs2に置き換えた文字列を返します。

LCASE(s)

小文字に変換します。

LEFT(s,count)

sの左端の文字数を返します。

LENGTH(s)

sの文字数を返します。

LOCATE(search,s,[start])

s内のstartより後で最初に見つかったsearchのインデックス(1=左、0=見つからない)を返します。

LTRIM(s)

sの先頭にあるすべての空白を除去します。

OCTET_LENGTH(s)

文字列の長さをバイト数で返します。

RAWTOHEX(s)

変換した文字列を返します。

REPEAT(s,count)

sをcountの回数繰り返したものを返します。

REPLACE(s,replace,s2)

sに出現するすべてのreplaceをs2に置き換えます。

RIGHT(s,count)

sの右端の文字数を返します。

RTRIM(s)

最後にあるすべての空白を除去します。

SOUNDEX(s)

sの音を表す4文字コードを返します。

SPACE(count)

countの個数のスペースで構成される文字列を返します。

SUBSTR(s,start[,len])

SUBSTRINGの別名です。

SUBSTRING(s,start[,len])

start(1=左端)から始まる長さlenの部分文字列を返します。

SUBSTRING(s FROM start [FOR len])という構文も使用できます。

TRIM

TRIM([{LEADING | TRAILING | BOTH}] FROM s): sから前と後のスペースを除去します。

UCASE(s)

大文字に変換します。

LOWER(s)

小文字に変換します。

UPPER(s)

大文字に変換します。

 

日時ファンクション

CURDATE()

現行日付を返します。

CURTIME()

現在の時刻を返します。

CURRENT_DATE

現行日付を返します。

CURRENT_TIME

現在の時刻を返します。

CURRENT_TIMESTAMP

現在のタイムスタンプを返します。

DATEDIFF(s, d1,d2)

sで指定されている時間の単位で、日時d1から日時d2までの経過時間のカウントを返します。sには'ms'=ミリ秒、'ss'=秒、'mi'=分、'hh'=時、'dd'=日、'mm'=月、'yy'=年を指定できます。

DAYNAME(date)

曜日の名前を返します。

DAYOFMONTH(date)

月の日付を返します(1〜31)。

DAYOFWEEK(date)

週の曜日を返します(1は日曜日)。

DAYOFYEAR(date)

年単位の日数を返します(1〜366)。

EXTRACT

EXTRACT ({YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} FROM <datetime>): <datetime>の値から適切な部分を抽出します。

HOUR(time)

時間の値を返します(0〜23)。

MINUTE(time)

分の値を返します(0〜59)。

MONTH(date)

月の値を返します(1〜12)。

MONTHNAME(date)

月の名前を返します。

NOW()

現行日時をタイムスタンプとして返します。

QUARTER(date)

四半期の値を返します(1〜4)。

SECOND(time)

秒の値を返します(0〜59)。

WEEK(date)

年の何週目かを返します(1〜53)。

YEAR(date)

年の値を返します。

 

システム・ファンクション

IFNULL(exp,value)

expがNULLの場合はvalueが返され、それ以外の場合はexpが返されます。

CASEWHEN(exp,v2,v2)

expがtrueの場合はv1が返され、それ以外の場合はv2が返されます。

CONVERT(term,type)

expを別のデータ型typeに変換します。

COALESCENCE(e1,e2,e3,...)

e1がNULLでない場合はe1を返します。e1がNULLの場合はe2を評価します。e2がNULLでない場合はe2を返します。e2がNULLの場合はe3を評価し、同様に続きます。

NULLIF(v1,v2)

v1がv2と等しくない場合はv1を返します。それ以外の場合はNULLを返します。

CASE WHEN

CASE WHEN文には次の2つの構文があります。

CASE v1 WHEN v2 THEN v3 [ELSE v4] END: v1がv2と等しい場合はv3を返します。等しくない場合は、ELSEが指定されている場合はv4を、指定されていない場合はNULLを返します。

CASE WHEN e1 THEN v1[WHEN e2 THEN v2] [ELSE v4] END: e1がtrueの場合はv1を返します。必要に応じて評価を繰り返します。WHENの評価がすべてtrueでない場合、ELSEがある場合はv4を、ない場合はNULLを返します。

CAST(term AS type)

expを別のデータ型typeに変換します。

 
 

システム/接続ファンクション

 DATABASE()

 この接続のデータベースの名前を返します。

 USER()

 この接続のユーザー名を返します。

 IDENTITY()

 この接続によって挿入された最後のID値を返します。

 

注意: 日付値は一重引用符(')で開始および終了し、書式はyyyy-mm-ddです(java.sql.Dateを参照)。時刻値は一重引用符(')で開始および終了し、書式はhh:mm:ssです(java.sql.Timeを参照)。