統一服務在支持ANSI SQL標準語法的DML(data manipulation language)基礎上,針對API開發過程中SQL語法使用的具體需求,定義了自己的擴展,以支持參數聲明、動態SQL、范圍參數生成等用法。本文為您介紹SQL語法指南。
使用限制
僅支持SELECT操作。
不支持事務功能。
表名和列名默認情況下不區分大小寫。
基本語法
[ WITH with_subquery [, ...] ]
SELECT
[ [ ALL | DISTINCT ] | select_expr [ AS output_name ] [, ...] ]
[ FROM table_reference [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition ]
[ { UNION | ALL | INTERSECT | EXCEPT | MINUS } query ]
[ ORDER BY expression
[ ASC | DESC ]
[ LIMIT { number | ALL } ]
SQL模式API支持基本語法及操作范圍如上所示,不同數據源上可以使用語法不盡相同,具體以目標數據源的SQL語法說明為準。
參數聲明
基礎SQL語法之上,統一服務支持以 ${<參數名>,<類型>,<默認值>} 三元符的方式進行各類調用時參數的聲明。
示例:使用SQL語句定義一個聲明了數值型參數“uid”和字符串數組參數“unArr”的API,且參數“uid”設置默認值為“1”。
SELECT name, addr, tel
FROM table_name
WHERE user_id = ${uid,Number,1}
and user_name in ${unArr,Array,a,b};
已支持的參數類型
類型 | 說明 | 對應數據庫類型 | 默認值設置(非必須) | 示例 |
Number | 數值 | int、Integer、Double、BigInt等 | 單值 | ${uid,Number,1} |
String | 字符串 | Char、Varchar、Text、String等 | 單值,不需要引號 | ${tel,String,177723_test} |
Array | 字符串數組 | Char、Varchar、Text、String等 | 多值用逗號分隔 | ${names,Array,a,b} |
Array_Num | 數值數組 | int、Integer、Double、BigInt等 | 多值用逗號分隔 | ${uids,Array_Num,1,2,3} |
date | 日期類型,需要調用方自行保證日期格式 | Date、DateTime,TimeStamp等 | 單值,不需要引號 | ${date,Date,2022-12-30 12:00:00} |
動態SQL
統一服務通過內置自定義函數NotRequired(),實現了對于動態SQL特性的支持,以實現非必選參數的設置,使用方式為NotRequired(<字段> <操作符> ${<參數名>,<類型>,<默認值}>)。
示例:定義一個聲明了數值型參數“uid”和字符串數組可選參數“unArr”的API,且參數“uid”設置默認值為“1”,當請求參數中未傳入“unArr”參數時,則SQL語句中條件“user_name in ${unArr,Array,}”不生效。
SELECT name, addr, tel
FROM table_name
WHERE user_id = ${uid,Number,1}
and NotRequired(user_name in ${unArr,Array,});