Beam Calcite SQL 詞彙結構
Beam Calcite SQL 語句由一系列的 token 組成。Token 包括識別符、引號識別符、字面值、關鍵字、運算子和特殊字元。Token 可以用空格 (空白、退格、Tab、換行) 或註解分隔。
識別符
識別符是與欄位、資料表和其他資料庫物件關聯的名稱。
識別符必須以字母或底線開頭。後續字元可以是字母、數字或底線。引號識別符是用反引號 (`
) 字元括起來的識別符,可以包含任何字元,例如空格或符號。但是,引號識別符不能是空的。保留關鍵字只有在用反引號括起來時才能用作識別符。
語法 (在此定義為正規表示式)
[A-Za-z_][A-Za-z_0-9]*
範例
Customers5
_dataField1
ADGROUP
無效範例
5Customers
_dataField!
GROUP
5Customers
以數字開頭,而不是字母或底線。_dataField!
包含特殊字元「!」,它不是字母、數字或底線。GROUP
是保留關鍵字,因此除非用反引號字元括起來,否則不能用作識別符。
識別符和引號識別符都不區分大小寫,但有一些細微差異。請參閱大小寫敏感性以了解更多詳細資訊。
引號識別符具有與字串字面值相同的逸出序列,如下所定義。
字面值
字面值表示內建資料類型的常數值。某些 (但不是全部) 資料類型可以用字面值表示。
字串字面值
字串和位元組字面值都必須用單引號 ('
) 引起來。
引號字面值
字面值 | 範例 | 描述 |
---|---|---|
引號字串 |
| 用單引號 (' ) 括起來的引號字串可以包含未逸出的雙引號 (" )。兩個引號 ( '' ) 是逸出序列。引號字串可以包含換行符號。 |
整數字面值
整數字面值是十進位數字 (0 到 9) 的序列。整數可以分別加上「+
」或「-
」的前置符號來表示正值和負值。
範例
123
-123
整數字面值會被解讀為 BIGINT
。
浮點數字面值
語法選項
[+-]DIGITS.[DIGITS][e[+-]DIGITS]
[DIGITS].DIGITS[e[+-]DIGITS]
DIGITSe[+-]DIGITS
DIGITS
表示一個或多個十進位數字 (0 到 9),而 e
表示指數標記 (e 或 E)。
範例
123.456e-67
.1E4
58.
4e2
包含小數點或指數標記的數值字面值會被假定為 double 型別。
如果值在有效的 float 範圍內,則可以隱式強制轉換浮點數字面值為 float 型別。
沒有 NaN 或無限大的字面值表示法。
陣列字面值
陣列字面值是以逗號分隔的元素清單,並用方括號括起來,並加上 ARRAY
關鍵字。
範例
ARRAY[1, 2, 3]
ARRAY['x', 'y', 'xy']
結構字面值
語法
(elem[, elem...])
其中 elem
是結構中的元素。elem
必須是字面值資料類型,而不是表達式或欄位名稱。
輸出類型是匿名結構類型 (結構不是具名類型),其中匿名欄位的類型與輸入表達式的類型相符。
範例 | 輸出類型 |
---|---|
(1, 2, 3) | STRUCT<BIGINT,BIGINT,BIGINT> |
(1, 'abc') | STRUCT<BIGINT,STRING> |
日期字面值
語法
DATE 'YYYY-M[M]-D[D]'
日期字面值包含 DATE
關鍵字,後接符合標準日期格式的字串字面值,並用單引號括起來。日期字面值支援介於 1 到 9999 年 (含) 的範圍。此範圍之外的日期無效。
例如,以下日期字面值表示 2014 年 9 月 27 日
DATE '2014-09-27'
當預期使用 DATE 類型表達式時,標準日期格式的字串字面值也會隱式強制轉換為 DATE 類型。例如,在查詢中
SELECT * FROM foo WHERE date_col = "2014-09-27"
字串字面值 "2014-09-27"
將被強制轉換為日期字面值。
時間字面值
語法
TIME '[H]H:[M]M:[S]S[.DDDDDD]]'
TIME 字面值包含 TIME
關鍵字和符合標準時間格式的字串字面值,並用單引號括起來。
例如,以下時間表示下午 12:30。
TIME '12:30:00.45'
時間戳記字面值
語法
TIMESTAMP 'YYYY-[M]M-[D]D [[H]H:[M]M:[S]S[.DDDDDD]]'
時間戳記字面值包含 TIMESTAMP
關鍵字和符合標準時間戳記格式的字串字面值,並用單引號括起來。
時間戳記字面值支援介於 1 到 9999 年 (含) 的範圍。此範圍之外的時間戳記無效。
例如,以下時間戳記表示 2014 年 9 月 27 日下午 12:30
TIMESTAMP '2014-09-27 12:30:00.45'
大小寫敏感性
Beam SQL 遵循以下大小寫敏感性規則
類別 | 區分大小寫嗎? | 附註 |
---|---|---|
關鍵字 | 否 | |
函數名稱 | 否 | |
資料表名稱 | 是 | |
欄位名稱 | 是 | |
字串值 | 是 | |
字串比較 | 是 | |
查詢中的別名 | 否 | |
正規表示式比對 | 請參閱附註 | 除非表達式本身指定它應該不區分大小寫,否則正規表示式比對預設為區分大小寫。 |
LIKE 比對 | 是 |
保留關鍵字
關鍵字是在 Beam SQL 語言中具有特殊含義的 token 群組,並具有以下特性
- 除非用反引號 (`) 字元括起來,否則關鍵字不能用作識別符。
- 關鍵字不區分大小寫。
Beam SQL 具有以下保留關鍵字。
A ABS ABSOLUTE ACTION ADA ADD ADMIN AFTER ALL ALLOCATE ALLOW ALTER ALWAYS AND ANY APPLY ARE ARRAY ARRAY_MAX_CARDINALITY AS ASC ASENSITIVE ASSERTION ASSIGNMENT ASYMMETRIC AT ATOMIC ATTRIBUTE ATTRIBUTES AUTHORIZATION AVG BEFORE BEGIN BEGIN_FRAME BEGIN_PARTITION BERNOULLI BETWEEN BIGINT BINARY BIT BLOB BOOLEAN BOTH BREADTH BY C CALL CALLED CARDINALITY CASCADE CASCADED CASE CAST CATALOG CATALOG_NAME CEIL CEILING CENTURY CHAIN CHAR CHAR_LENGTH CHARACTER CHARACTER_LENGTH CHARACTER_SET_CATALOG CHARACTER_SET_NAME CHARACTER_SET_SCHEMA CHARACTERISTICS CHARACTERS CHECK CLASSIFIER CLASS_ORIGIN CLOB CLOSE COALESCE COBOL COLLATE COLLATION COLLATION_CATALOG COLLATION_NAME COLLATION_SCHEMA COLLECT COLUMN COLUMN_NAME COMMAND_FUNCTION COMMAND_FUNCTION_CODE COMMENT COMMIT COMMITTED CONDITION CONDITION_NUMBER CONNECT CONNECTION CONNECTION_NAME CONSTRAINT CONSTRAINT_CATALOG CONSTRAINT_NAME CONSTRAINT_SCHEMA CONSTRAINTS CONSTRUCTOR CONTAINS CONTINUE CONVERT CORR CORRESPONDING COUNT COVAR_POP COVAR_SAMP CREATE CROSS CUBE CUME_DIST CURRENT CURRENT_CATALOG CURRENT_DATE CURRENT_DEFAULT_TRANSFORM_GROUP CURRENT_PATH CURRENT_ROLE CURRENT_ROW CURRENT_SCHEMA CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TRANSFORM_GROUP_FOR_TYPE CURRENT_USER CURSOR CURSOR_NAME CYCLE DATA DATABASE DATE DATETIME_INTERVAL_CODE DATETIME_INTERVAL_PRECISION DAY DEALLOCATE DEC DECADE DECIMAL DECLARE DEFAULT DEFAULTS DEFERRABLE DEFERRED DEFINE DEFINED DEFINER DEGREE DELETE DENSE_RANK DEPTH DEREF DERIVED DESC DESCRIBE DESCRIPTION DESCRIPTOR DETERMINISTIC DIAGNOSTICS DISALLOW DISCONNECT DISPATCH DISTINCT DOMAIN DOUBLE DOW DOY DROP DYNAMIC DYNAMIC_FUNCTION DYNAMIC_FUNCTION_CODE EACH ELEMENT ELSE EMPTY END END-EXEC END_FRAME END_PARTITION EPOCH EQUALS ESCAPE EVERY EXCEPT 例外 排除 排除中 執行 執行 存在 指數 解釋 延伸 外部 提取 假 提取 篩選 最終 第一 第一個值 浮點數 向下取整 後續 為了 外來鍵 FORTRAN 已找到 秒的小數部分 框架列 釋放 從 完整 函數 融合 G 一般 產生 幾何 取得 全域 執行 跳到 授權 已授權 群組 群組化 群組 條件 階層 保留 小時 身分 如果 立即 立即地 實作 匯入 在 包含 增量 指示器 初始 最初地 內部 輸入輸出 輸入 不區分大小寫 插入 實例 可實例化 整數 整數 交集 交集 間隔 進入 調用者 是 隔離 JAVA 連接 JSON K 鍵 鍵成員 鍵類型 標籤 延遲 語言 大型 最後 最後一個值 橫向 提前 前導 左 長度 層級 函式庫 像 像正規表示式 限制 自然對數 本地 本地時間 本地時間戳記 位置 定位器 小寫 M 映射 匹配 已匹配 匹配 匹配編號 匹配辨識 最大 最大值 度量 成員 合併 訊息長度 訊息八位元組長度 訊息文字 方法 微秒 千禧年 最小 分鐘 最小值 模數 修改 模組 月份 更多 多重集合 MUMPS 名稱 名稱 國家 自然 NCHAR NCLOB 巢狀 | 新 下一個 否 無 正規化 已正規化 不 第 N 個值 分位數 空值 可為空值 空值時返回空值 空值 數字 數值 物件 正規表示式出現次數 八位元組長度 八位元組 的 偏移 舊 省略 在 一 僅 開啟 選項 選項 或 排序 排序中 序數 其他 輸出 外部 輸出 在...之上 重疊 覆蓋 覆寫 填補 參數 參數模式 參數名稱 參數序數位置 參數特定目錄 參數特定名稱 參數特定結構描述 部分 分割 PASCAL 直接傳遞 過去 路徑 模式 每個 百分比 百分位數連續 百分位數離散 百分比排名 期間 排列 放置 計畫 PLI 部分 位置 正規表示式位置 次方 在...之前 在...之前 精確度 準備 保留 先前 主要 先前 權限 程序 公開 季度 範圍 排名 讀取 讀取 實數 遞迴 參考 參考 參考 回歸平均數 X 回歸平均數 Y 回歸計數 回歸截距 回歸 R 平方 回歸斜率 回歸 SXX 回歸 SXY 回歸 SYY 相對 釋放 可重複 取代 重設 重新啟動 限制 結果 返回 傳回基數 傳回長度 傳回八位元組長度 傳回 SQL 狀態 返回 撤銷 右 角色 回滾 彙總 常式 常式目錄 常式名稱 常式結構描述 列 列計數 列號 列 執行中 儲存點 比例 結構描述 結構描述名稱 範圍 範圍目錄 範圍名稱 範圍結構描述 捲動 搜尋 秒 區段 安全性 尋找 選擇 自身 敏感 序列 可序列化 伺服器 伺服器名稱 工作階段 工作階段使用者 設定 設定 減號 顯示 類似 簡單 大小 跳過 小型整數 某些 來源 空間 特定 特定名稱 特定類型 SQL SQL 例外 SQL 狀態 SQL 警告 SQL_BIGINT SQL_BINARY SQL_BIT SQL_BLOB SQL_BOOLEAN SQL_CHAR SQL_CLOB SQL_DATE SQL_DECIMAL SQL_DOUBLE SQL_FLOAT SQL_INTEGER SQL_INTERVAL_DAY SQL_INTERVAL_DAY_TO_HOUR SQL_INTERVAL_DAY_TO_MINUTE SQL_INTERVAL_DAY_TO_SECOND SQL_INTERVAL_HOUR SQL_INTERVAL_HOUR_TO_MINUTE SQL_INTERVAL_HOUR_TO_SECOND SQL_INTERVAL_MINUTE SQL_INTERVAL_MINUTE_TO_SECOND SQL_INTERVAL_MONTH SQL_INTERVAL_SECOND SQL_INTERVAL_YEAR SQL_INTERVAL_YEAR_TO_MONTH SQL_LONGVARBINARY SQL_LONGVARCHAR SQL_LONGVARNCHAR SQL_NCHAR SQL_NCLOB SQL_NUMERIC SQL_NVARCHAR SQL_REAL SQL_SMALLINT SQL_TIME SQL_TIMESTAMP SQL_TINYINT SQL_TSI_DAY SQL_TSI_FRAC_SECOND SQL_TSI_HOUR SQL_TSI_MICROSECOND SQL_TSI_MINUTE SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_SECOND SQL_TSI_WEEK SQL_TSI_YEAR SQL_VARBINARY SQL_VARCHAR 平方根 開始 狀態 陳述式 靜態 母體標準差 樣本標準差 串流 結構 樣式 子類別來源 子多重集合 子集 替代 子字串 正規表示式子字串 在...之後 總和 對稱 系統 系統時間 系統使用者 表格 表格名稱 表格取樣 表格屬性 暫時 然後 關係 時間 時間戳記 時間戳記加法 時間戳記差 時區小時 時區分鐘 微小整數 到 頂層計數 尾隨 交易 作用中的交易 已提交的交易 已回滾的交易 轉換 轉換 翻譯 正規表示式翻譯 翻譯 視為 觸發程序 觸發程序目錄 觸發程序名稱 觸發程序結構描述 修剪 修剪陣列 真 截斷 類型 UESCAPE 無界限 未提交 在...之下 聯集 唯一 未知 未命名 取消巢狀 更新 大寫 更新插入 使用方式 使用者 使用者定義類型目錄 使用者定義類型代碼 使用者定義類型名稱 使用者定義類型結構描述 使用 值 值 值為 母體變異數 樣本變異數 VARBINARY VARCHAR 可變 版本 版本控制 檢視 週 當 每當 其中 寬度分桶 視窗 使用 在...之內 沒有 工作 包裝函式 寫入 XML 年 時區 |
終止分號
陳述式可以在透過應用程式程式設計介面 (API) 提交的查詢字串內容中選擇性地使用終止分號 (;
)。某些互動式工具要求陳述式必須有終止分號。在包含多個陳述式的要求中,陳述式必須以分號分隔,但最後一個陳述式可以選擇不加分號。
註解
註解是剖析器忽略的一連串字元。Beam SQL 支援下列類型的註解。
單行註解
單行註解是透過在註解前面加上 --
來支援的。
範例
SELECT x FROM T; --x 是一個欄位,而 T 是一個表格
註解包含從「--
」序列到行尾的所有字元。您可以選擇在「--
」之後加上空格。
多行註解
多行註解是透過使用 /* <註解> */
包圍註解來支援的。
範例
SELECT x FROM T /* x is a field and T is a table */
WHERE x = 3;
無效範例
SELECT x FROM T /* comment starts here
/* comment ends on this line */
this line is not considered a comment */
WHERE x = 3;
註解包含第一個出現的「/*
」和第一個隨後出現的「*/
」所包圍的所有字元,包括換行符號。不支援巢狀註解。第二個範例包含巢狀註解,這會使查詢失效。
本頁的部分內容是基於 Google 創作和分享的作品修改而成,並根據創用 CC 3.0 姓名標示授權條款所述的條款使用。