文档

SQL语法指南

更新时间:

统一服务在支持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,});
  • 本页导读 (0)
文档反馈