词条 | KSQL |
释义 | 概述什么是KSQLKSQL对金蝶产品实现多数据库支持非常重要的基础引擎。所有与金蝶ERP产品支持的数据库通讯的应用程序都通过向数据库服务器发送KSQL语句来实现通讯,与应用程序的用户界面无关。 KSQL是SQL92的子集。它抽取了SQL92的部分语法来满足金蝶ERP产品的最大功能集合,并随着金蝶BOS产品的发展逐渐丰富和完善。 1. 一种金蝶自己定义的SQL方言 2. 需要翻译到具体数据库厂商的SQL方言 3. KSQL具备的特性,能够翻译到我们支持的所有数据库中 4. 类似于MS SQL SERVER的T-SQL KSQL的必要性1. 金蝶BOS平台的多数据库支持策略 2. 大多数开发人员只熟悉一种数据库 3. 大多数不同数据库的方言特性具有共通性,可以抽取为公共的语言特性 4. SQL翻译效率很高 5. KSQL提供临时表管理等功能 KSQL规范KSQL语法规则规范 用于 大写 KSQL 关键字或文法终结符(在具体语法子句中予以解释) 小写 KSQL的语法子句和文法非终结符(在具体语法子句中予以解释) 斜体 KSQL 语法中用户提供的参数。 | (竖线) 分隔括号或大括号内的语法项目。只能选择一个项目。 [ ] (方括号) 可选语法项目。不必键入方括号。 {}(大括号) 必选语法项。不要键入大括号。 [ ,...n ] 表示前面的项可重复 n 次。每一项由逗号分隔。 [ ...n ] 表示前面的项可重复 n 次。每一项由空格分隔。 加粗 数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样键入的文本。 <标签> ::= 语法块的名称。此规则用于对可在语句中的多个位置使用的过长语法或语法单元部分进行分组和标记。适合使用语法块的每个位置由括在尖括号内的标签表示:<标签>。 除非特别申明,否则所有对数据库对象名的KSQL引用可以是格式如下: [database_name.] object_name object_name 引用对象的名称。 当引用某个特定对象时,不必总是为KSQL指定标识该对象的数据库实体名称,也可以直接使用object_name引用某个特定对象,但它要依赖它自己所在的上下文环境。 KSQL数据类型数据类型预览数据类型 长度 Sql server Oracle Db2 CHAR [1,254] CHAR[(n)] CHAR[(n)] CHAR[(n)] VARCHAR [1,4000] VARCHAR[(n)] VARCHAR2(n) VARCHAR(n) NCHAR [1,2000] NCHAR[(n)] NCHAR[(n)] ? NVARCHAR [1,4000] NVARCHAR[(n)] NVARCHAR2(n) BINARY [1,2000] BINARY[(n)] RAW( n ) VARCHAR(n) FOR BIT DATA VARBINARY [1,8000] VARBINARY[(n)] LONG RAW LONG VARCHAR FOR BIT DATA BLOB [1,2G] IMAGE BLOB BLOB(n) CLOB [1,2G] TEXT CLOB CLOB(n) NCLOB [1,1G] NTEXT NCLOB ? INT,INTEGER [-2^31,2~31-1] INT NUMBER(38) INT DECIMAL [-10^31+1,10^31-1] DATETIME DATETIME DATE DATE TIME TIMESTAMP 数据类型分类 KSQL支持的数据类型为CHAR , VARCHAR , NCHAR,NVARCHAR,BINARY,VARBINARY, BLOB ,CLOB , NCLOB, INT, INTEGER,DECIMAL ,DATE,TIME DATETIME 数据类型层次结构 字符和二进制字符串大对象 CHAR VARCHAR CLOB UNICODE字符和字符串大对象 NCHAR NVARCHAR NCLOB 二制数据类型 BINARY VARBINARY 二进制大对象 BLOB 精确数字 INT INTEGER 近似数字 DECIMAL 时间数据类型 日期 DATE 时间 TIME 时间戳DATETIME 数据类型的优先顺序 当两个不同数据类型的表达式用运算符组合后,数据类型的优先顺序规则确定哪种数据类型要向另一种转换。优先顺序低的数据类型向优先顺序高的数据类型转换。如果此转换不是目标数据库所支持的固有转换,则返回错误。当两个操作数表达式有相同的数据类型时,运算的结果就为那种数据类型。 下面是KSQL数据类型的优先顺序: CHAR VARCHAR NCHAR NVARCHAR BINARY VARBINARY BLOB CLOB NCLOB DECIMAL INT BINARY VARBINARY BLOB CLOB NCLOB DECIMAL INT INTEGER DATETIME (最高) 运算符号+(加) +(正) -(减) -(负) *(乘) /(除) =(等于) >(大于) <(小于) >=(大于或等于) <=(小于或等于) <>(不等于) !=(不等于) 注释――(单行注释) //(单行注释) /* */(多行注释) 通配符[ ](通配符 — 需匹配的字符) [^](通配符字符 — 无需匹配的字符) _(通配符 — 匹配一个字符) %(通配符 — 匹配一个或多个字符) 标识符号KSQL规定,数据库名,数据库别名,数据表名,数据表别名,字段名,字段别名,视图名,视图别名,索引名,索引别名, 约束名都属于标识符范围。 常量一、时间常量 语法 格式 含义 {d 'yyyy-mm-dd'} 日期 {t 'hh:mm:ss'} 时间 {ts 'yyyy-mm-dd hh:mm:ss'} 时间戳 注释 时间戳的日期和时间之间只允许出现一个空格分隔符号。 时间中不支持毫秒。
示例 时间戳:{ts‘2002-07-17 10:51:18’} 日期:{d‘2002-07-17’} 时间:{t‘10:51:18’} 二、字符串常量 语法 [ N | n ] ‘ [ ^’ ] ’ 参数 N 指示该字符歘常量为UNICODE字符串。 n 指示该字符歘常量为UNICODE字符串。 注释 包含在’’中的除’以外的任何字符序列。 示例 合法的字符串常量:‘’, ‘ ‘, ‘ ‘, ‘ ^ ‘, ’hello’等。 合法的UNICODE字符串常量:n‘’, N‘ ‘, N‘ ‘, n‘ ^ ‘, N’hello’等。 不合法的字符串常量:’’’,’’’’’等。 不合法的字符串常量:N’’’,n’’’’’等。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。