SQL Engine Reference (v11)

文法要素の定義

次は、文法構文のセクションで使用する要素の定義をまとめたものです。

変更オプション ::= 変更オプション-リスト1 | 変更オプション-リスト2 
 
変更オプション-リスト1 ::= 変更オプション | (変更オプション 
   [, 変更オプション]...) 
 
変更オプション ::= ADD [COLUMN] 列定義 
	| ADD テーブル制約定義 
	| ALTER [COLUMN] 列定義 
	| DROP [COLUMN] 列名 
	| DROP CONSTRAINT 制約名 
	| DROP PRIMARY KEY 
	| MODIFY [COLUMN] 列定義 
 
変更オプション-リスト2 ::= PSQL_MOVE [COLUMN] 列名 TO  
   [[PSQL_PHYSICAL] PSQL_POSITION] 新しい列位置 |  
   RENAME COLUMN 列名 TO 新しい列名 
 
as またはセミコロン ::= AS | ; 
 
before/after ::= BEFORE | AFTER 
 
呼び出し引数 ::= 位置引数[, 位置引数]... 
 
列制約 ::= NOT NULL 
	| NOT MODIFIABLE 
	| UNIQUE 
	| PRIMARY KEY 
	| REFERENCES テーブル名 [(列名)] [参照アクション] 
 
コレーション名 ::= '文字列' | ユーザー定義名 
 
列制約定義 ::= [CONSTRAINT 制約名] 列制約 
 
列定義 ::= 列名 データ型 [DEFAULT ] [列制約定義 [列制約定義]... 
   [CASE | COLLATE コレーション名] 
 
列名 ::= ユーザー定義名 
 
コミット ステートメント ::= COMMIT ステートメント参照 
 
比較演算子 ::= < | > | <= | >= | = | <> | != 
 
制約名 ::= ユーザー定義名 
 
相関名 ::= ユーザー定義名 
 
カーソル名 ::= ユーザー定義名 
 
データ型 ::= データ型名 [(桁数[, 小数位])] 
 
データ型名 ::= 「Pervasive PSQL で使用できるデータ型」を参照 
 
データベース名 ::= ユーザー定義名 
 
 ::= 式 - 式  
	| 式 + 式  
	| 式 * 式  
	| 式 / 式  
	| 式 & 式  
	| 式 | 式  
	| 式 ^ 式  
	| (式)  
	| -式  
	| +式  
	| ‾式  
	| ?  
	| リテラル  
	| スカラー関数  
	| {fn スカラー関数}  
	| USER  
 
リテラル ::= '文字列'  
	| 数字  
	| {d '日付リテラル'}  
	| {t '時刻リテラル'}  
	| {ts 'タイムスタンプ リテラル'}  
 
スカラー関数 ::= 「スカラー関数」を参照 
 
式またはサブクエリ ::=  | (クエリ スペック) 
 
フェッチ方向 ::= NEXT 
 
グループ名 ::= ユーザー定義名 
 
インデックス定義 ::= (インデックス セグメントの定義[, インデックス セグ
メントの定義]...) 
 
インデックス名 ::= ユーザー定義名 
 
インデックス番号 ::= ユーザー定義の値(0 から 118 までの整数) 
 
インデックス セグメントの定義 ::= 列名 [ASC | DESC] 
 
挿入/更新/削除 ::= INSERT | UPDATE | DELETE 
 
挿入値 ::= values句  
	| クエリ スペック 
 
結合定義 ::= テーブル参照 [INNER] JOIN テーブル参照 ON 検索条件 
	| テーブル参照 CROSS JOIN テーブル参照 
	| 外部結合の定義 
 
ラベル名 ::= ユーザー定義名 
 
リテラル ::= '文字列' 
	| 数字 
	| {d '日付リテラル'} 
	| {t '時刻リテラル'} 
	| {ts 'タイムスタンプ リテラル'} 
 
order-by式 ::=  [CASE | COLLATE コレーション名] [ASC | DESC] 
 
外部結合の定義 ::= テーブル参照 外部結合タイプ JOIN テーブル参照 
   ON 検索条件 
 
外部結合タイプ ::= LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] 
 
パラメーター ::= パラメーター タイプ名 データ型  
   [DEFAULT プロシージャ式 | = プロシージャ式] 
	| SQLSTATE 
 
パラメーター タイプ名 ::= パラメーター名 
	| パラメーター タイプ パラメーター名 
	| パラメーター名 パラメーター タイプ 
 
パラメーター タイプ ::= IN | OUT | INOUT | IN_OUT 
 
パラメーター名 ::= [:]ユーザー定義名 
 
パスワード ::= ユーザー定義名 | '文字列' 
 
位置引数 ::=  
 
桁数 ::= 整数 
 
述部 ::=  [NOT] BETWEEN  AND  
	|  比較演算子 式またはサブクエリ 
	|  [NOT] IN (クエリ スペック) 
	|  [NOT] IN ([, ]...) 
	|  [NOT] LIKE  
	|  IS [NOT] NULL 
	| 式 比較演算子 ANY (クエリ スペック) 
	| 式 比較演算子 ALL (クエリ スペック) 
	| EXISTS (クエリ スペック) 
 
プロシージャ式 ::= 通常の式と同様、ただし、IF 式と ODBC式 のスカ
ラ関数は使用できない 
 
プロシージャ検索条件 ::= 通常の検索条件と同様、ただし、サブクエリを
含む式は使用できない 
 
プロシージャ ステートメント ::= [ラベル名:] BEGIN [ATOMIC]  
   [プロシージャ ステートメント[; プロシージャ ステートメント]...] 
   END [ラベル名] 
	| CALL プロシージャ名 (プロシージャ式[, プロシージャ式]...) 
	| CLOSE カーソル名 
	| DECLARE カーソル名 CURSOR FOR 選択ステートメント 
[FOR UPDATE | FOR READ ONLY] 
	| DECLARE 変数名 データ型 [DEFAULT プロシージャ式 | = プロシー
ジャ式] 
	| DELETE WHERE CURRENT OF カーソル名 
	| 削除ステートメント 
	| FETCH [フェッチ方向 [FROM]] カーソル名 [INTO 変数名[, 変
数名]] 
	| IF プロシージャ検索条件 THEN プロシージャ ステートメント
[; プロシージャ ステートメント]...
[ELSE プロシージャ ステートメント
[; プロシージャ ステートメント]...] END IF 
	| IF プロシージャ検索条件 プロシージャ ステートメント 
[ELSE プロシージャ ステートメント] 
	| 挿入ステートメント 
	| LEAVE ラベル名 
	| [ラベル名:] LOOP プロシージャ ステートメント
[; プロシージャ ステートメント]... END LOOP [ラベル名] 
	| OPEN カーソル名 
	| PRINT プロシージャ式[, '文字列'] 
	| RETURN [プロシージャ式] 
	| トランザクション ステートメント 
	| into 付き選択ステートメント 
	| 選択ステートメント 
	| SET 変数名 = プロシージャ式 
	| SIGNAL [ABORT] sqlstate値 
	| START TRANSACTION [トランザクション名] 
	| 更新ステートメント 
	| UPDATE SET 列名 = プロシージャ式[, 列名 = プロシージャ式]...
WHERE CURRENT OF カーソル名 
	| [ラベル名:] WHILE プロシージャ検索条件 DO 
[プロシージャ ステートメント [; プロシージャ ステートメント]]
...END WHILE [ラベル名] 
	| [ラベル名:] WHILE プロシージャ検索条件 プロシージャ ステートメン
ト  
	| テーブル変更ステートメント  
	| インデックス作成ステートメント  
	| テーブル作成ステートメント  
	| ビュー作成ステートメント  
	| インデックス削除ステートメント  
	| テーブル削除ステートメント  
	| ビュー削除ステートメント  
	| 権限付与ステートメント  
	| 権限取消ステートメント  
	| 設定ステートメント  
 
プロシージャ名 ::= ユーザー定義名 
 
public またはユーザー/グループ名 ::= PUBLIC | ユーザー/グループ名 
 
クエリ スペック [UNION [ALL] クエリ スペック]... 
   [ORDER BY order-by式[, order-by式]...] [FOR UPDATE] 
 
クエリ スペック ::= (クエリ スペック) 
   | SELECT [ALL | DISTINCT] [top 句] 選択リスト 
   FROM テーブル参照[, テーブル参照]... 
   [WHERE 検索条件] 
   [GROUP BY [, ]... 
     [HAVING 検索条件]] 
 
参照エイリアス ::= OLD [AS] 相関名 [NEW [AS] 相関名] 
	| NEW [AS] 相関名 [OLD [AS] 相関名] 
 
参照アクション ::= 参照更新アクション [参照削除アクション] 
	| 参照削除アクション [参照更新アクション] 
 
参照更新アクション ::= ON UPDATE RESTRICT 
 
参照削除アクション ::= ON DELETE CASCADE 
	| ON DELETE RESTRICT 
 
リリース ステートメント ::= RELEASE ステートメントを参照 
 
結果 ::= ユーザー定義名 データ型 
 
ロールバック ステートメント ::= ROLLBACK WORK ステートメントを参照 
 
セーブポイント名 ::= ユーザー定義名 
 
スカラー関数 ::= スカラー関数リスト参照 
 
小数位 ::= 整数 
 
検索条件 ::= 検索条件 AND 検索条件 
	| 検索条件 OR 検索条件 
	| NOT 検索条件 
	| (検索条件) 
	| 述部 
 
選択項目 ::=  [[AS] エイリアス名] | テーブル名. * 
 
選択リスト ::= * | 選択項目[, 選択項目]... 
 
セット関数 ::= COUNT (*) 
	| COUNT ([DISTINCT | ALL] ) 
	| SUM ([DISTINCT | ALL] ) 
	| AVG ([DISTINCT | ALL] ) 
	| MIN ([DISTINCT | ALL] ) 
	| MAX ([DISTINCT | ALL] ) 
	| STDEV ([DISTINCT | ALL] ) 
 
sqlstate値 ::= '文字列' 
 
テーブル制約定義 ::= [CONSTRAINT 制約名] テーブル制約 
 
テーブル制約 ::= UNIQUE (列名[, 列名]...) 
	| PRIMARY KEY (列名[, 列名]...) 
	| FOREIGN KEY (列名 [, 列名]) 
	REFERENCES テーブル名 
	[(列名[, 列名]...)] 
	[参照アクション] 
 
テーブル要素 ::= 列定義 
	| テーブル制約定義 
 
テーブル式 ::= 
	FROM テーブル参照[, テーブル参照]... 
	[WHERE 検索条件] 
	[GROUP BY [, ]... 
	[HAVING 検索条件]  
 
テーブル名 ::= ユーザー定義名 
 
テーブル権限 ::= ALL 
	| SELECT [(列名[, 列名]...)] 
	| UPDATE [(列名[, 列名]...)] 
	| INSERT [(列名[, 列名]...)] 
	| DELETE 
	| ALTER 
	| REFERENCES 
 
テーブル参照 ::= {OJ 外部結合の定義} 
	| [データベース名.]テーブル名 [[AS] エイリアス名] 
	| 結合定義 
	| (結合定義) 
 
テーブル サブクエリ ::= クエリ スペック  
   [[UNION [ALL] クエリ スペック]...] 
   [ORDER BY order-by式[, order-by式]...] 
 
トランザクション ステートメント ::= コミット ステートメント 
	| ロールバック ステートメント 
	| リリース ステートメント 
 
トリガー名 ::= ユーザー定義名 
 
ユーザーおよびパスワード ::= ユーザー名[:]パスワード 
 
ユーザー/グループ名 ::= ユーザー名 | グループ名 
 
ユーザー名 ::= ユーザー定義名 
 
 ::= リテラル | USER | ? 
 
値リスト ::= ([, ]...) 
 
values句 ::= DEFAULT VALUES | VALUES ( [, ]...) 
 
変数名 ::= ユーザー定義名 
 
ビュー名 ::= ユーザー定義名 

SQL ステートメント リスト

SqlStatementList は次のように定義されます。

SqlStatementList 
ステートメント ';' | SqlStatementList ';' 
ステートメント ::= StatementLabel ':'ステートメント  
|BEGIN ... END ブロック  
|CALL ステートメント  
|CLOSE CURSOR ステートメント  
|COMMIT ステートメント  
|DECLARE CURSOR ステートメント  
|DECLARE 変数ステートメント  
|DELETE ステートメント  
|FETCH ステートメント  
|IF ステートメント  
|INSERT ステートメント  
|LEAVE ステートメント  
|LOOP ステートメント  
|OPEN ステートメント  
|PRINT ステートメント  
|RELEASE SAVEPOINT ステートメント  
|RETURN ステートメント  
|ROLLBACK ステートメント  
|SAVEPOINT ステートメント  
|SELECT ステートメント  
|SET ステートメント   
|SIGNAL ステートメント  
|START TRANSACTION ステートメント  
|UPDATE ステートメント  
|WHILE ステートメント 

述部

述部は次のように定義されます。

 比較演算子   
| [NOT] BETWEEN  AND  
| [NOT] LIKE 文字列リテラル 
| IS [NOT] NULL 
|NOT 述部  
|述部 AND 述部 
|述部 OR 述部  
|'(' 述部 ')'比較演算子 ::= '=' | '>=' | '>' | '<=' | '<' | 
'<>' | '!=' 
|[NOT] IN 値リスト  

式は次のように定義されます。

数字  
|文字列リテラル  
|列名  
|変数名  
|NULL   
|CONVERT '(' ',' データ型 ')'  
|'-'   
| '+'   
| '-'   
| '*'   
| '/'   
| '&'   
|'~'   
| '|'   
| '^'   
|関数名 '(' [式リスト] ')'  
|'(' ')'  
|'{' D 文字列リテラル '}'  
|'{' T 文字列リテラル '}'  
|'{' TS 文字列リテラル '}' 
|@:IDENTITY 
|@:ROWCOUNT 
|@@IDENTITY 
|@@ROWCOUNT 

式リストは次のように定義されます。

式リスト ::= [, ...] 

WHILE

グローバル変数