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 是保留關鍵字,因此除非用反引號字元括起來,否則不能用作識別符。

識別符和引號識別符都不區分大小寫,但有一些細微差異。請參閱大小寫敏感性以了解更多詳細資訊。

引號識別符具有與字串字面值相同的逸出序列,如下所定義。

字面值

字面值表示內建資料類型的常數值。某些 (但不是全部) 資料類型可以用字面值表示。

字串字面值

字串和位元組字面值都必須用單引號 (') 引起來

引號字面值

字面值範例描述
引號字串
  • 'it''s'
  • 'Title: "Boy"'
用單引號 (') 括起來的引號字串可以包含未逸出的雙引號 (")。
兩個引號 ('') 是逸出序列。
引號字串可以包含換行符號。

整數字面值

整數字面值是十進位數字 (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 姓名標示授權條款所述的條款使用。