DA SQL语法手册.docx
- 文档编号:30668620
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:32
- 大小:25.85KB
DA SQL语法手册.docx
《DA SQL语法手册.docx》由会员分享,可在线阅读,更多相关《DA SQL语法手册.docx(32页珍藏版)》请在冰豆网上搜索。
DASQL语法手册
D&ASQL语法手册
v1.02009-7-23
1概述
本手册意于方便D&ASQL脚本的编写工作,为了解和查找语法提供便利。
目前本手册包含了查询和ORM脚本所涉及的所有语法。
将整体语法分为6个大类,大类中又分为各小类,每个小类都有详细的语法描述和每种情况的示例。
2基本语句
这里主要介绍最基本的语法,包括参数声明、值引用的表示以及字面值的表示。
下面逐一介绍。
2.1名称表示
Ø语法描述
名称所指的是非关键字、非操作符、非字面值和非参数类型的各种名称,包括表名称、表别名、表字段名、函数名、参数名、选择列别名、表关系名、表级次名、查询名、ORM名等。
对于名称由如下要求和表示:
1),名称要求是英文字母、阿拉伯数字和下划线的连续组合,并且首字符必须是英文字母。
这里的英文字母包括大写和小写。
2),所有的名称区分大小写(关键字不区分大小写)。
3),除了参数名称,所有的名称可以用双引号引起来表示,例如:
”NAME”,在这种情况下,双引号内可以是任何非双引号字符。
该方式通常用在名称与关键字冲突或名称中有特殊字符的情况下。
在名称中,用两个连续的双引号来表示一个双引号字符(目前代码生成尚不支持这一点)。
Ø示例
first_name
""
"a””a"
2.2参数声明
Ø语法描述
参数类型
说明
boolean
布尔值类型
bytes
字节序列类型
byte
字节类型
date
日期类型
double
双精度浮点类型
enum
枚举类型
float
单精度浮点类型
guid
统一标识符类型
int
普通整数类型
long
长整数类型
short
短整数类型
string
字符串类型
参数声明的基本语法是:
@参数名称参数类型
这里要求参数名称紧跟‘@’符号,所有允许的参数类型如右图所示。
注意,这里的参数名称和参数类型均区分大小写。
参数声明之后可以跟随参数的限定:
notnull
default字面值
所有限定可以随意组合,字面值的语法参见2.4节,字面值的类型应与参数类型匹配(具体条件是:
字面值可以直接或隐式转换为参数类型的值)
Ø示例
@para1boolean
@para2guidnotnull
@para3stringdefault'YES'
@para4intnotnulldefault0
2.3值引用表示
Ø语法描述
基本值引用有两种:
一种是表字段引用,另一种是参数引用。
值引用是最简单的值表达式之一。
表字段引用的句型如下:
表别名‘.’字段名称
要求表别名存在,并且字段名称对应字段存在与该表别名对于的存储表中
参数引用的句型如下:
@参数名称
这里与参数声明一样,要求参数名称紧跟’@’符号。
Ø示例
tb_stu.name
“tb_stu”.”avg”
@para4
2.4字面值表示
Ø语法描述
字面值是在脚本源码中直接表示特定类型常量的值表达式。
以下逐一介绍所有支持的字面值表达式:
1),整数字面值:
用一串阿拉伯数字表示一个整数值,整数值前加一负号(‘-’,不要求紧随)则表示为负值整数。
2),浮点字面值:
在一串阿拉伯数字中穿插有唯一个小数点(‘.’)则该数为浮点字面值;也可以是在一串阿拉伯数字后加E或e并紧接一个整数;还可以是前面两种情况的结合。
浮点字面值前加一负号(‘-’,不要求紧随)则表示为负值浮点数。
3),字符串:
用单引号(’’’)引起的一个由非单引号字符组成的序列。
其中,用两个连续的单引号表示一个单引号字符。
4),日期字面值:
“data”关键字后跟随一个字符串,字符串应符合”年-月-日小时:
分钟:
秒”的格式。
5),标识符字面值:
“guid”关键字后跟随一个字符串,该字符串必须由十六进制数组成,长度为32。
6,字节序列字面值:
“bytes”关键字后跟随一个字符串,该字符串必须由十六进制数组成,长度不限。
Ø示例
1223
-23.44
23e5
4.4e-3
'helloworld'
'it''syou'
date'2008-10-1314:
25:
56'
guid'010B03D40F6070809101112A314151E'
bytes'00C102A3'
2.5注释
Ø语法描述
用两个连续的短横杆号(‘--’)来将之后的整行作为注释。
这里只支持单行注释。
Ø示例
--这是注释
-23.44–-负浮点数
3值表达式语句
在前面的基本语句中,列出了最简单的值表达式。
这里将详细介绍各种较为复杂的值表达式语法。
在所有的值表达式中,括号具有最高的优先级,而后是其他非运算符表达式,其次是乘除法,加减法的优先级最低。
3.1运算符值表达式
基本数值类型
byte
date
double
float
int
long
short
Ø语法描述
运算符有:
加法(’+’)、减法(’-’)、乘法(’*’)、除法(’/’)以及括号(’(’,’)’)。
加减乘除法是二元运算符,其句型如下:
数值表达式运算符数值表达式
前后必须是数值类型的值表达式,基本数值类型如右图所示,支持的类型是所有的基本数值类型以及这些类型所派生的非数组类型。
括号运算符的句型如下:
‘(‘值表达式‘)’
其中,对值表达式的数值类型不限,返回值即为其中表达式的值。
Ø示例
4+3
65–44*34–2.3
(65–44)*(34–2.3)
3.2集合函数
Ø语法描述
集合函数是一种特殊的函数,由多行记录得到一个单一记录,这一点使得其在许多情况下不能与普通值表达式并列(参考标准SQL关于集函数的语法)。
集合函数有count(计数)、avg(平均值)、sum(求和)、max(取最大值)和min(取最小值)。
count函数的所有句型如下:
count‘(‘*‘)’
count‘(‘[ALL|DISTINCT]值表达式‘)’
句型中的方括号(’[’,’]’)表示其中内容可选,或号’|’表示左右内容为或的关系。
“count(*)”表示取所有记录的个数。
“count(ALL值表达式)”表示计算所有指定表达式的记录个数,ALL可省略。
“count(DISTINCT值表达式)”表示计算所有指定表达式不重复的记录个数。
avg和sum函数的句型如下:
函数名‘(‘[ALL|DISTINCT]数值表达式‘)’
max和min函数的句型如下:
函数名‘(‘数值表达式‘)’
avg和sum句型中的ALL和DISTINCT的语法和含义同count。
不同的是,这四个函数要求值表达式是数值表达式(参见“3.1运算符值表达式”中关于数值表达式的描述)。
Ø示例
count(*)
count(distincte.BIRTH)
avg(alle.BIRTH)
max(e.BIRTH)
min(e.BIRTH)
3.3级次函数
Ø语法描述
级次函数是与表级次密切相关的一系列特殊函数。
用于取得或者运算些与级次相关的值。
目前大概分为两类,一是级次深度函数,一是父级次标识符函数。
级次深度函数用于取得当前记录的指定表级次的深度。
其句型如下:
h_lv‘(‘表别名‘.’表级次名‘)’
父级次标识符函数用于取得当前记录的指定表级次上父记录的标识符(guid)。
其句型如下:
h_aid‘(‘表别名‘.’表级次名‘)’
h_aid‘(‘表别名‘.’表级次名rel整数表达式‘)’
h_aid‘(‘表别名‘.’表级次名abo整数表达式‘)’
第一个句型取得的值是直接上级的标识符,第二个句型取得的值是相对深度为指定数值的上级的标识符,而第三个句型取得的值是绝对深度为指导数值的上级的标识符。
Ø示例
h_lv(t.hier)--取得级次层次数
h_aid(t.hier)--取得直接上级的标识符
h_aid(t.hierrel@rlv)--取得相对层次数上级的标识符
h_aid(t.hierabo@alv)--取得绝对层次数上级的标识符
3.4普通函数
Ø语法描述
普通函数是具有大量而语法一致的函数,这些函数都以值表达式为参数,同样也返回值。
这些函数的主要作用是运算和转换,它们的句型如下:
函数名‘(‘参数列表‘)’
参数列表的句型如下:
[值表达式[{‘,’值表达式}]]
大括号表示其内容可重复1或多次。
如句型所示,参数列表可以为空,也可以具有多个值表达式作为函数的参数,每个值表达式用逗号分隔。
每个函数的参数列表会有所不同,同一函数名也会有不同参数列表。
以下列出目前支持的所有函数,并予以说明:
✧日期函数
●getdate--获取系统当前日期时间
参数列表:
无
参数类型:
无
参数说明:
无
返回值类型:
date
●yearof--获取日期表达式年数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●quarterof--返回日期表达式在年中的季度数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●monthof--返回日期表达式在年中的月数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●weekof--返回日期表达式的在年中的周数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●dayof--返回日期表达式的在年中的周数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●dayofyear--返回日期表达式的在年中的天数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●dayofweek--返回日期表达式的在周中的天数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●hourof--返回日期表达式的小时数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●minuteof--返回日期表达式的分数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●secondof--返回日期表达式的秒数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●millisecondof--返回日期表达式的毫秒数
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
int
●addyear--日期表达式增加以年为单位的时间间隔
参数列表:
dateinterval
参数类型:
dateint
参数说明:
日期表达式时间间隔数
返回值类型:
date
●addquarter--日期表达式增加以季度为单位的时间间隔
参数列表:
dateinterval
参数类型:
dateint
参数说明:
日期表达式时间间隔数
返回值类型:
date
●addmonth--日期表达式增加以月为单位的时间间隔
参数列表:
dateinterval
参数类型:
dateint
参数说明:
日期表达式时间间隔数
返回值类型:
date
●addweek--日期表达式增加以周为单位的时间间隔
参数列表:
dateinterval
参数类型:
dateint
参数说明:
日期表达式时间间隔数
返回值类型:
date
●addday--日期表达式增加以天为单位的时间间隔
参数列表:
dateinterval
参数类型:
dateint
参数说明:
日期表达式时间间隔数
返回值类型:
date
●addhour--日期表达式增加以小时为单位的时间间隔
参数列表:
dateinterval
参数类型:
dateint
参数说明:
日期表达式时间间隔数
返回值类型:
date
●addminute--日期表达式增加以分为单位的时间间隔
参数列表:
dateinterval
参数类型:
dateint
参数说明:
日期表达式时间间隔数
返回值类型:
date
●addsecond--日期表达式增加以秒为单位的时间间隔
参数列表:
dateinterval
参数类型:
dateint
参数说明:
日期表达式时间间隔数
返回值类型:
date
●yeardiff--计算两个日期的间隔年数
参数列表:
startDateendDate
参数类型:
datedate
参数说明:
开始日期结束日期
返回值类型:
int
●quarterdiff--计算两个日期的间隔季度数
参数列表:
startDateendDate
参数类型:
datedate
参数说明:
开始日期结束日期
返回值类型:
int
●monthdiff--计算两个日期的间隔月数
参数列表:
startDateendDate
参数类型:
datedate
参数说明:
开始日期结束日期
返回值类型:
int
●weekdiff--计算两个日期的间隔周数
参数列表:
startDateendDate
参数类型:
datedate
参数说明:
开始日期结束日期
返回值类型:
int
●daydiff--计算两个日期的间隔天数
参数列表:
startDateendDate
参数类型:
datedate
参数说明:
开始日期结束日期
返回值类型:
int
●hourdiff--计算两个日期的间隔小时数
参数列表:
startDateendDate
参数类型:
datedate
参数说明:
开始日期结束日期
返回值类型:
int
●minutediff--计算两个日期的间隔分数
参数列表:
startDateendDate
参数类型:
datedate
参数说明:
开始日期结束日期
返回值类型:
int
●seconddiff--计算两个日期的间隔秒数
参数列表:
startDateendDate
参数类型:
datedate
参数说明:
开始日期结束日期
返回值类型:
int
●isleapyear--日期是否闰年
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
boolean
●isleapmonth--日期是否闰月
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
boolean
●isleapday--日期是否闰日
参数列表:
date
参数类型:
date
参数说明:
日期表达式
返回值类型:
boolean
✧数学函数
●sin--返回角度(以弧度为单位)的正弦值
参数列表:
randians
参数类型:
double
参数说明:
弧度
返回值类型:
double
●cos--返回角度(以弧度为单位)的余弦值
参数列表:
randians
参数类型:
double
参数说明:
弧度
返回值类型:
double
●tan--返回角度(以弧度为单位)的正切值
参数列表:
randians
参数类型:
double
参数说明:
弧度
返回值类型:
double
●asin--返回角度(以弧度为单位)的反正弦值
参数列表:
randians
参数类型:
double
参数说明:
弧度
返回值类型:
double
●acos--返回角度(以弧度为单位)的反余弦值
参数列表:
randians
参数类型:
double
参数说明:
弧度
返回值类型:
double
●atan--返回角度(以弧度为单位)的反正切值
参数列表:
randians
参数类型:
double
参数说明:
弧度
返回值类型:
double
●exp--返回指定值的指数值
参数列表:
power
参数类型:
double
参数说明:
指数
返回值类型:
double
●power--返回指定值的指定幂的值
参数列表:
basepower
参数类型:
doubledouble
参数说明:
底数指数
返回值类型:
double
●ln--返回指定值以e为底的对数值,即自然对数
参数列表:
number
参数类型:
double
参数说明:
数值
返回值类型:
double
●sqrt--返回指定值的平方根
参数列表:
number
参数类型:
double
参数说明:
数值
返回值类型:
double
●ceil--返回大于或等于指定值的最小整数
参数列表:
number
参数类型:
double
参数说明:
数值
返回值类型:
long
●floor--返回小于或等于指定值的最大整数
参数列表:
number
参数类型:
double
参数说明:
数值
返回值类型:
long
●round--返回最接近表达式的整数
参数列表:
number
参数类型:
double
参数说明:
数值
返回值类型:
long
●sign--返回参数的符号函数值
参数列表:
number
参数类型:
double
参数说明:
数值
返回值类型:
int
●abs--返回参数的绝对值
参数列表:
number
参数类型:
double
参数说明:
数值
返回值类型:
double
✧字符串函数
●chr--将ASCII代码转换为字符
参数列表:
ascii
参数类型:
int
参数说明:
ascii代码
返回值类型:
string
●nchr--返回具有指定的整数代码的Unicode字符
参数列表:
national
参数类型:
int
参数说明:
unicode代码
返回值类型:
string
●ascii--返回字符表达式中最左侧的字符的ASCII代码值
参数列表:
str
参数类型:
string
参数说明:
字符串
返回值类型:
int
●len--返回指定字符串表达式的字符数
参数列表:
str
参数类型:
string
参数说明:
字符串
返回值类型:
int
●indexof--返回字符串中指定表达式的开始位置
参数列表:
strsearch
参数类型:
stringstring
参数说明:
字符串要索引的字符串
返回值类型:
int
●indexof--返回字符串中指定表达式的开始位置
参数列表:
strsearchposition
参数类型:
stringstringint
参数说明:
字符串匹配串起始位置
返回值类型:
int
●lower--返回指定字符串表达式的字符数
参数列表:
str
参数类型:
string
参数说明:
字符串
返回值类型:
string
●upper--返回指定字符串表达式的字符数
参数列表:
str
参数类型:
string
参数说明:
字符串
返回值类型:
string
●ltrim--删除字符表达式的前导空格
参数列表:
str
参数类型:
string
参数说明:
字符串
返回值类型:
string
●rtrim--删除字符表达式的尾随空格
参数列表:
str
参数类型:
string
参数说明:
字符串
返回值类型:
string
●trim--删除字符表达式的前后的空格
参数列表:
str
参数类型:
string
参数说明:
字符串
返回值类型:
string
●substr--返回字符串表达式的子串
参数列表:
strposition
参数类型:
stringint
参数说明:
字符串起始位置
返回值类型:
string
●substr--返回字符串表达式的子串
参数列表:
strpositionlength
参数类型:
stringintint
参数说明:
字符串起始位置截取长度
返回值类型:
string
●replace--删除字符表达式的前后的空格
参数列表:
strsearchreplace
参数类型:
stringstringstring
参数说明:
字符串匹配串替换串
返回值类型:
string
Ø示例
yeardiff(e.CAREER,getdate())
addyear(e.BIRTH,10)
yearof(e.BIRTH)
addyear(@c,1)
addday(@c,23)
chr(30)
nchr(30)
ascii('s')
len(e.FIRSTNAME)
indexof(e.CODE,'code')
indexof(e.CODE,'code',50)--从50开始查找
lower(e.CODE)
upper(e.CODE)
rtrim(e.FIRSTNAME)
ltrim(e.FIRSTNAME)
substr(e.FIRSTNAME,2)
substr(e.FIRSTNAME,2,2)
replace(e.FIRSTNAME,e.LASTNAME,'sdf')
3.5其他值表达式
Ø语法描述
●case语句
case语句的语法和作用类似与java的switch语句,其句型如下:
case值表达式{when值表达式then(值表达式|null)}[else(值表达式|null)]end
括号用于限定或号(’|’)的作用范围,方括号表示其中内容可以有也可以没有,大括号表示其中内容重复出现1次到多次。
●coalesce语句
coalesce语句用于选择参数列表中的第一个有效值(即,非null),其句型如下:
coalesce’(’值表达式[{‘,’值表达式}]‘)’
其语法和普通函数十分相似,不同的是,其参数至少需要一个,而且参数个数不定,参数类型不限,返回值类型不定。
Ø示例
casee.CODEwhen@codethen'res01'else'default'end
coalesce(e.BIRTH,e.CAREER,@date)
4谓词表达式语句
谓词表达式用作于进行条件判断,通常由表引用、值表达式等组成。
在谓词表达式语句中,括号具有最高优先级,其次是各种值表达式,再者是各种非操作符谓词表达式,接着是非运算(not)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DA SQL语法手册 SQL 语法 手册