プログラミング言語SML#解説 4.0.0版
22 SQL式とコマンド

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#の識別子(一般に _sqlfn構文で束縛される)を前置する.