22.11 標準SQL文法との差異(参考)
SML#のSQL演算子式の構文は, 可能な限り標準SQLの構文に似せている. そうすることによって, SML#のSQL機能のために 新しい埋め込み言語を覚えなくてもよいようにしている. しかし,埋め込み言語の性質上, ホスト言語の文法の影響を受けて, 標準SQLの文法を実現できない場合がある. 以下に, SML#のSQL構文が 標準SQLと異なっている箇所をまとめる. 以下の点に気をつければ, 標準SQLほぼそのままの書き方で SML#のSQL機能を使いこなせるはずである.
-
•
定数リテラルの書き方(特に文字列)はSML#に準じる.
-
•
標準SQLではキーワードの大文字小文字は無視される一方, SML#では全てのSQLキーワードは小文字でなければならない.
-
•
テーブル名やカラム名の大文字小文字はSML#の型システム上では 区別される. ただし,SQL.connectがスキーマの一致を検査するときのみ, 名前の大文字小文字は区別されない.
-
•
標準SQLでは関数適用構文で引数を囲む必要であるが, SML#ではSML#の関数適用式と同様に括弧を書かなくてよい.
-
•
負符号演算子にはSML#式と同様に~を用いる.
-
•
二項演算子の結合順位はSML#のinfix宣言によって決まる.
-
•
and論理演算子は括弧に囲まれた式の中でしか使えない.
-
•
カラムやテーブルの参照には#を前置する.
-
•
カラムの参照には必ずテーブル名を明示しなければならない.
-
•
ORDER BY句からSELECT句のカラム名を参照する場合は, カラム名に#.を前置する.
-
•
FROM句やINSERT,UPDATE,DELETEコマンドのテーブル参照には, #と, テーブルが属するデータベースを指すSML#の識別子(一般に _sqlやfn構文で束縛される)を前置する.