急求设计SQL语言的语法树

来源:百度知道 编辑:UC知道 时间:2024/04/30 13:15:41
比如SELECT语句可分解为SELECT FIELDS FROM TABLES WHERE CONDITIONS,以后如何继续细分?
以此类推,那么DELETE语句和CREATE语句又该怎么做语法树,求高手指教,谢谢
我想用C++语言编写一个SQL语言的编译器
所以需要语法树

select * from 表名 for xml

以下是详细介绍:

FOR 子句

FOR 子句用于指定 BROWSE 或 XML 选项(BROWSE 和 XML 是不相关的选项)。
语法

[ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }
[ , XMLDATA ]
[ , ELEMENTS ]
[ , BINARY BASE64 ]
}
]
参数

BROWSE

指定当查看 DB-Library 浏览模式游标中的数据时允许更新。如果表包含时间戳列(用 timestamp 数据类型定义的列),表有唯一索引且 FOR BROWSE 选项在 SELECT 语句的最后发送到 SQL Server,则可以在应用程序中浏览该表。

说明 在含有 FOR BROWSE 选项的 SELECT 语句中无法使用 <lock_hint> HOLDLOCK。

FOR BROWSE 选项不能出现在用 UNION 运算符联接的 SELECT 语句中。

XML

指定查询结果将作为 XML 文档返回。必须指定下列 XML 模式之一:RAW、AUTO、EXPLICIT。

RAW

获得查询结果并将结果集内的各行转换为 XML 元素,用一般标识符 <row /> 作为元素标记。

测试:
select top 2 图书编号=BookNo,图书名称=BookName from sys_books as图书信息 FOR XML raw

结果:
<row 图书编号="B001" 图书名称="1"/><row 图书编号="B002" 图书名称="体育报(上海)"/>

AUTO