MySQL开发者SQL权威指南-附录
时间:2025-07-07
时间:2025-07-07
MySQL开发者SQL权威指南的附录文档
附录A SQL语法
A.1 简介
在这个附录中,我们介绍用来定义语句的范式方法,给出了本书中讨论的SQL语句的定义,并且列出了保留字。这个附录中的定义可能和前面章节中的内容有所不同。出现这种情况的主要原因是,在那些章节中,我们一步一步地讲解了语句和概念,为了避免涉及过多的细节,有时候使用了定义的简单版本。本附录则包含完整的定义。
A.2 BNF范式
在这个附录以及整本书中,我们都使用了一种形式化表示方法来描述所有SQL语句和常用元素的语法。这种表示由巴科斯范式(Backus Naur Form,BNF)衍生而来,BNF的命名就是为了纪念John Backus和Peter Naur Form。我们使用的元符号的意义基于SQL标准中的元符号之上。
BNF采用了一种具有替换规则和生成规则的语言,该语言由一系列的符号组成。每个生成规则定义了一个符号。一个符号可能是一条SQL语句、一个表名或者一个冒号。终结符(terminalsymbol)是一种特殊类型的符号。除了终结符以外的所有其他的符号,都根据一条生成规则中的其他符号来定义。终结符的例子是单词CLOSE和分号。
我们可以把一个生成规则和一个元素的定义进行比较,其中,该元素的定义用到了其他地方定义的元素。在这个例子中,一个元素就等于一个符号。
如下的元符号并没有构成SQL语言的一部分,但是也属于范式技术:
< >::=|[ ]...{ };"
现在,我们来说明这些符号的含义。
< >符号
尖括号(<>)表示非终结符。对于每一个非终结符都存在一个生成规则。我们用小写字母来表示非终结符的名字。非终结符的两个例子就是<select statement> 和<table reference>。
::=符号
::=符号用在一个生成规则中,把一个定义的非终结符(位于::=符号的左边)和它的定义(位于::=符号的右边)分隔开来。::=符号应该读作“定义为”。参见下面的CLOSE CURSOR语句的生成规则:
<close cursor statement> ::= CLOSE <cursor name>
上一篇:农光互补项目简介与发展前景