图 3 1 自主知识产权数据库总体设计框架
3.2 SQL
3.2.1 SQL语言概况
早在20世纪70年代,IBM公司San Jose 研究中心研制了一个关系DBMS原型系统System R。System R在发展关系数据库技术方面做了一系列重要的、创造性的贡献。其中之一,就是发展了一种非过程关系数据库语言,当时称之为SEQUEL(Structured English Query Language)。1981年,在System R的基础上,IBM公司推出商品化的关系DBMS SQL/IBM的DB2、SQL/400、QMF等DBMS产品中,而且也广泛地用于许多非IBM公司的DBMS产品中,例如ORACLE、Unify、Sybase、dBASE Ⅳ、Ingres、Rdb等。SQL之所以取得成功,除了商业上的原因外,语言本身
接近英语自然语言,易学易用,受到用户的欢迎,也是一个很重要的因素(王能斌,2000)。
从1982年开始,美国国家标准协会(ANSI)即着手SQL的标准化工作。SQL已从开始时比较简单的数据库语言,逐步发展成为功能比较齐全、内容比较复杂的数据库语言。随着数据库技术的发展和数据库功能的增强,原有的功能要保持兼容,新的功能要增加,这种发展趋势似乎是不可避免的。目前,各个DBMS厂商都自称采用SQL语言,但完全按ISO标准实现的并不多。IBM公司实际上以其DB2的SQL作为IBM的标准。其他厂商所实现的SQL,由于历史的原因,也有不少差异。但总的倾向是向国际标准靠拢,与DB2 SQL保持兼容。
SQL语言和基于SQL的关系是计算机工业最重要的基础技术之一。在过去的20年里,SQL己经从最初的商业应用发展成为一种计算机产品,其服务市场部分每年达数百亿美元,SQL成为当今标准的计算机数据库语言。现在,支持SQL的数据库产品数以百计,运行于从大型机到PC机再到便携式计算机的整个计算机系统上。
SQL是一种组织、管理和检索计算机数据库存储的数据的工具。SQL是结构化查询语言(Structured Query Language )缩写。正如它的名称所暗示的,SQL是一种计算机语言,可以用它与数据库交互。事实上,SQL使用的是一个特殊类型的数据库,即关系数据库。
3.2.2 SQL的特点
(1)综合统一:非关系模型的数据语言分为模式定义语言和数据操纵语言,其缺点是,当要修改模式时,必须停止现有数据库的运行,转储数据,修改模式编译后再重装数据库。SQL是集数据定义、数据操纵和数据控制功能与一体,语言风格统一,可独立完成数据库生命周期的所有活动(陈平等,2004)。
(2)高度非过程化:非关系数据模型的数据操纵语言是面向过程的,若要完成某项请求时,必须指定存储路径;而SQL语言是高度非过程化语言,当进行数据操作时,只要指出“做什么”,无须指出“怎么做”,存储路径对用户来说是透明的,提高了数据的独立性(陈平等,2004)。
(3)面向集合的操作方式:非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。而SQL语言采用面向集合的操作方式,其操作对象、查找结果可以是元组的集合(陈平等,2004)。
(4)两种使用方式:第一种方式,用户可以在终端键盘上键入SQL命令,对数据库进行操作,故称之为自含式语言;第二种方式,将SQL语言嵌入到高级语言程序中,所以又是嵌入式语言(陈平等,2004)。
(5)语言简洁、易学易用:SQL语言功能极强,完成核心功能只用了9个动词,包括如下4类(陈平等,2004)。
① 数据查询:SELECT。
② 数据定义:CREATE、DROP、ALTER。
③ 数据操纵:INSERT、UPDATE、DELETE。
④ 数据控制:GRANT、REVORK。
3.2.3 SQL数据定义
SQL的数据操纵功能包括SELECT(查询)、INSERT(插入)、DELETE(删除)和UPDATE(修改)。其中数据查询是数据库的核心操作,它的语句格式如下:
SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]
FROM <表名或视图名> [,<表名或视图名>]
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]]
SQL查询中的子句顺序为:SELECT、FROM、WHERE、GROUP BY、HAVING
和ORDER BY。其中SELECT、FROM是必须的,WHERE、GROUP BY、HAVING和ORDER BY是可选的,并且HANING子句只能与GROUP BY搭配起来使用。利用(+)、(-)、(*)、(/)和集函数可以构造表达式,用于在SELECT子句中查询表中未存储但可以导出的结果。(王能斌,2000)
本文的QL语义分析只针对于简单查询:它使用语法制导翻译原理直接进行语义分析,语义检查无误后得到表名和相应的列名,运用逻辑表达式求值对条件进行判断。
3.3 编译程序及语义分析
3.3.1 什么是编译程序
编译程序是现代计算机系统的基本组成部分之一,而且多数计算机系统都含有不止一个高级语言的编译程序,对有些高级语言甚至配置了几个不同性能的编译程序。从功能上看,一个编译程序就是一个语言翻译程序。它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价程序。比如,汇编程序是一个翻译程序,它把汇编语言程序翻译成机器语言程序。如果源语言是像FORTRAN,PASCALA或C那样的高级语言,目标语言是像汇编语言或机器语言那样的低级语言,则这种翻译程序称作编译程序。如果把把编译程序看成一个“黑盒子”,它所执行的转换工作可以用图 3 2来说明(吕映芝等,1998)。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页