メインコンテンツまでスキップ
翻訳ページ

このページは AI の支援を受けて英語から翻訳されています。内容が異なる場合は英語版が正となります。

字句構造

関連項目:
[ StackQL リソース階層 ] [ キーワード ] [ データ型 ] [ DESCRIBE ]

StackQL の字句構造と文法は、MySQL の言語実装(ANSI SQL-92 標準を基にしたもの)をモデルにしており、いくつかの拡張が加えられています。StackQL の文は、クラウドリソースのクエリ(SELECT の文法を使用)や、INSERT、UPDATE、REPLACE、DELETE などの標準的なデータ操作言語(DML)文によるインフラストラクチャの作成、変更、削除に使用します。また、インスタンスの起動や、AWS S3 のバケットに対するオブジェクトの取得や格納などの DML 以外の操作は、組み込みのプロバイダープロシージャ(DBMS のストアドプロシージャに相当)として実装されています。組み込みのプロバイダープロシージャは EXEC 文で呼び出します。

StackQL の SQL ドメイン固有言語では、宣言的なインフラストラクチャプログラミングと手続き的なインフラストラクチャプログラミングの両方が可能です。


構文​

StackQL の操作は、セミコロン(;)で終わる 1 つ以上の文で構成されます。文には、キーワード、識別子、パラメーター、値が含まれます。GCP で 10GB のディスクを作成する StackQL の文の例は次のとおりです。

INSERT INTO google.compute.disks (project, zone, name, sizeGb)
SELECT 'myProject', 'australia-southeast1-a', 'my10GbDisk', 10;

上記の例では、INSERT、INTO、SELECT がキーワード、google.compute.disks が識別子、project、zone、name、sizeGb がパラメーター、'myProject'、'australia-southeast1-a'、'my10GbDisk'、10 が値です。

キーワード​

キーワードは大文字と小文字を区別しません。つまり、INSERT と insert は同じものとして扱われます。ただし、慣例として大文字で書かれることがよくあります。キーワードの完全な一覧は「キーワード」セクションにあります。

識別子​

識別子は、クラウドベンダーのリソース階層内のオブジェクトを表すシンボルです。識別子は複数の部分で構成されます。識別子の詳細については、「StackQL リソース階層」のトピックを参照してください。

パラメーターと値​

パラメーターはリソースによって指定されます。パラメーターは、特定のクラウドベンダーのリソースに対して DESCRIBE 文を使用すると確認できます。値は、パラメーターに対応する型付きのスカラーオブジェクトまたは複合オブジェクトです。パラメーターと値の詳細については、DESCRIBE と「データ型」のトピックを参照してください。

変数​

$region のようにドル記号を接頭辞に持つ識別子は、SET で割り当てたセッション変数を参照します。この識別子は、文の計画が作成される前に、変数の型付きの値に置き換えられます。単一引用符で囲んだ '$region' は文字列リテラルです。FROM 句では $variable はリレーション名に解決され、式の位置では IDENTIFIER($variable) が列名に解決されます。"$.auth.aws.password" のように二重引用符で囲み、ドル記号を接頭辞に持つパスは、SET と UNSET が受け付けるランタイム設定のターゲットです。セッション変数は StackQL v1.0 以降で利用できます。セッション変数を参照してください。

演算子​

|| は文字列連結演算子で、比較演算子よりも結合の優先順位が高くなります。OR はブール値の論理和です。v1.0 より前の StackQL リリースでは、|| は OR として字句解析されていました。

コメント​

StackQL は、StackQL の文内で複数行コメントとインラインコメントをサポートしています。コメントの例を次に示します。

/* This
Is a
Multiline
Comment
*/

--This is an inline comment