网站大量收购独家精品文档,联系QQ:2885784924

扩展SQL语法说明书.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
扩展SQL语法说明书

 DOCPROPERTY COMPANY 深圳市道讯科技开发有限公司  DOCPROPERTY PROJECT 扩展SQL语法说明书 版本: DOCPROPERTY Version \* MERGEFORMAT 1.0.0 第  PAGE 6 页 DATE \@ yyyy-M-d 2017-5-2  TITLE \* MERGEFORMAT 扩展SQL语法说明书  DOCPROPERTY Company \* MERGEFORMAT 深圳市道讯科技开发有限公司  DOCPROPERTY DocDate \* MERGEFORMAT 2005/5/1 格式 一律采用大写字母。 SELECT、FROM、WHERE、GROUP BY、ORDER BY等关键字,出现在行首。 字段之间的分隔,采用逗号加空格的方式,例如:SELECT A, B, FROM ...。 语法 严格遵循SQL92标准,不得采用某种数据库特定的语法。 参数 SQL参数和字段名称一致。如果有多个同名字段,则加上下划线和序号加以区分。例如: WHERE PRIV_ID = :PRIV_ID WHERE A.PRIV_ID =:PRIV_ID_1 OR B.PRIV_ID = :PRIV_ID_2。 伪列 伪劣指SQL语句中,由于字段重名,或者为了精确表达字段实际意义,而指定的字段别名。伪列的使用和命名有以下约定: 基础实体表中的字段,和扩展实体表关联后,改用伪列来精确命名。例如: SELECT A.VENDER_ID, B.UNIT_NAME AS VENDER_NAME FROM (VENDER A INNER JOIN SYS_UNIT B ON (A.VENDER_ID = B.UNIT_ID)) 其中,基础实体表是SYS_UNIT,扩展实体表是VENDER,UNIT_NAME改名为VENDER_NAME,和VENDER_ID对应,表达更为精确。由于客户端不必了解数据库中的具体表法方式,因此,上述情况,SQL输出字段时采用伪列也更为合理。 不同实体表的字段冲突时,采用伪列并添加限定信息到伪列名称中。例如: SELECT A.VENDEE_ID, B.TEL_NUM AS VENDEE_TEL_NUM, B.LM_ID, C.TEL_NUM AS LM_TEL_NUM FROM ((ORDER A INNER JOIN VENDEE B ON (A.VENDEE _ID = B.VENDEE _ID)) LEFT OUTER JOIN LM C ON (A.LM_ID = C.LM_ID)) 其中,电话号码出现两次,一个是购买方电话,一个是联系人电话,采用伪列区分。 运算符 字符串相加的运算符采用$+$,不能使用Oracle中的“||”或者Sybase中的“+”。其它运算符参照SQL92标准。 DBMS标记 数据库厂商对SQL92的支持不是非常全面,而且SQL92对部分复杂操作,尤其是查询优化提示的语法也没有详细规定,造成程序中少部分SQL语句无法用每个数据库???支持的方式来表达。因此,扩展语法中引入了DBMS标记,语法为:$@DBMS1;DBMS2…@内容$。 两个$字符之间为特殊DBMS语句。 两个@字符之间标记该语句适用的DBMS列表。DBMS之间用半角“;” 分隔。如果当前DBMSDBMS列表,则后续得内容有效;否则,后续内容被忽略。 内容为特殊的SQL语句,针对DBMS列表中指定的数据库类型。 数据库联接 采用INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN的方式。考虑到某些数据库(如Access)对联接语法要求严格,多个表联接时,连接子句两边要用括号包围,例如: ((A INNER JOIN B ON (A.F1 = B.F1)) INNER JOIN C ON (B.F2 = C.F2)) INNER JOIN D ON (C.F3 = D.F3) 如果使用了嵌套SQL,用于关联的表从子查询获取时,Access和Oracle的要求方式不一样。Access还是如同上述要求,ORACLE则不允许多余的括号。举例如下: Access (((SELECT * FROM X) A INNER JOIN B ON (A.F1 = B.F1)) INNER JOIN C ON (B.F2 = C.F2)) INNER JOIN D ON (C.F3 = D.F3) Oracle (SELECT * FROM X) A INNER JOIN B ON (A.F1 = B.F1) INNER JOIN C ON (B.F2 = C.F2) INNER JO

文档评论(0)

zw4044 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档