SQLの構文糖です。
シンタックスシュガーです。
キャンディーです。
これはSQLに対しての構文糖や、DSLの類いです。 最近は、O/Rマッパーが広がってるようですが その時代の流れに逆らい、まだSQLに別の進化があるのではないか? と思っています。
これを作ろうと思ったのは、私はSQLを書く事が多く サブクエリなど長々と書いていると分かりにくくなってきて 「もっと簡単に書けないのか?」 などと思う事が多くありました。
SQLが普及してから長く経つので、こういったものがあるのではないか? と探してみましたが、なかなか良いものが見つかりませんでした。
世間的にどちらかというと、SQLが長くなりそうな場合は プログラム側に処理を移すのが、一般的なやり方だと思います。 その方が可読性も高まるし、変数なども使用出来ます。
それでも私の場合は、SQLを使う場面が多くあり しかも長いSQLが多い。
それではと思い自分用に作っていましたが 「他にも同じように困っている方がいるかもしれない」 と思い、公開する事にしました。
時代の流れを、またSQLの方に戻そうという野望があります。
SQLが使える方向けです。
ファイルは、2つのパートに分かれます。 上のパートは、定義パートです。 下のパートは、SQL構文パートです。
###定義パート 定義パートには、SQLでASを使って宣言される
- テーブル定義
- SELECT内のカラム定義 を変数のように定義する事が出来ます。
下記のように記載します。
変数名== 定義内容
また、ASを使わずにそのまま変換される変数も定義する事が出来ます。
下記のように記載します。
変数名= 定義内容
これらは、定義パート、SQL構文パートで展開されますが GROUP BY、ORDER BY、HAVINGでは展開されません。
###SQL構文パート SQL構文パートは、省略記号を使ってSQLを短く記載する事が出来ます。
S-- /* SELECT */
F-- /* FROM */
W-- /* WHERE */
A- /* AND */
O- /* OR */
G-- /* GROUP BY */
O-- /* ORDER BY */
H-- /* HAVING */
まるで、キャンディのようですね。 これらの記号は、全て行の先頭でのみ使用可能です。
また、「F--」の行では、下記の結合記号が使用出来ます。
=< /* INNER JOIN */
<< /* LEFT JOIN */
>> /* RIGHT JOIN */
SQLからドキュメントの様なものが出力出来ないか? と思っています。
その他、SQLを書くうえで困る事があれば対応していきたいです。
MITライセンスです。
Copyright (c) 2015 llby