SQL论文数据库中的应用论文
摘要:数据查询是数据库管理系统中不可缺少的部分。该文主要介绍了sql select查询语句在visual foxpro中的应用以及在不同版本存在的问题和解决方法。
关键词:sql;visual foxpro;查询;分组
application of sql queries in visual foxpro database
zhao xiao-xia, lei jin-hui, tian chun-jin
(kunming university of science and technology, kunming 650093, china)
abstract: query processing is the indispensable element of database management system. this paper introduce how the sql select statements be used in visual foxpro as well as the problems and solutions along with this application.
key words: sql; vfp; query; group
sql(structured query language结构化查询语言)是标准的数据库通用语言,它既能用于大型关系型数据库系统,也能用于微机数据库系统。目前,绝大多数流行的关系数据管理系统如oracle,sybase,sql server,visual foxpro等都采用了sql语言。
1 sql的工作原理
sql语言分为三部分:数据定义语言,用于完成数据库对象的建立、删除和修改;数据操纵语言,是完成对数据操作的命令;数据控制语言,是控制用户对数据库的访问权限。visual foxpro中没有权限管理,因此没有数据控制语言命令[1]。
数据查询是数据库的核心操作,其功能是根据用户的需要以一种可读的方式从数据库中提取所需数据。数据库管理系统是一个存放信息的数据库及管理、控制数据库的软件系统,当用户需要检索数据库中的数据时,可以通过 sql语言发出请求,数据库管理系统对请求进行处理,按要求将检索到的数据返给用户。图1为sql的工作原理。
2 visual foxpro中查询的实现
在visual foxpro中实现查询有两种途径:一是用相关命令或查询工具,二是用sql标准查询语
言。
2.1 用visual foxpro中的相关命令或查询工具
在visual foxpro中,可以使用list/display、find、seek、locate、filter等命令查询数据。但这些命令受到一定操作的限制,如必须打开相关的数据表、对表建立索引、速度慢等。
自从visual foxpro中引入sql语言后,用sql数据操纵语言中的select命令进行查询,不仅方便编程,还能提高数据处理速度。
select命令可以在命令窗口直接输入,也可以编写在程序中。但是,使用者一般不可能对每个表的字段信息及相互关系非常清楚,要翻阅相应资料才能写出相应的select语句,另外,较长的select语句不容易编写。为此,visual foxpro提供了可视化设计select命令的查询工具,即查询设计器。查询设计器实际上是select命令的交互式设计操作,它以页面形式提供了完整的select命令格式,使用者不必关心字段信息,只要通过选择所需的内容就可以轻松完成查询。
2.2 sql标准查询语言
select命令格式:
select [all|distinct] 选项 [as 显示列名] from 表名或视图名;
数据库应用在哪些方面[where 条件表达式];
[group by 分组选项 [having筛选条件表达式]];
[order by 排序选项] [ asc|desci ] [2]
该语句中,select指定查询中显示的字段、常量和表达式,from指定查询所用表或视图的名称,where指定查询条件,group by根据某一列和某几列的值将查询结果中的各行进行分组,having指定包含在查询结果中的组必须满足的条件,order by根据某一列和某几列的数据查询结果进行排序。
3 select在visual foxpro中存在的问题及解决方法
在visual foxpro中,使用select语句可以对数据进行分组查询并计算,简单分组得到的查询结果不能令人满意,要想得到精确的查询结果需要设计复杂的分组。下面举例介绍分组查询在
visual foxpro中的问题及解决方法。
3.1 同一select语句在不同visual foxpro版本中的查询执行
有如图2所示的xsda数据表。
分别求各专业男、女生的score总和,select语句如下:
select speciality,sex,sum(score) from xsda group by speciality
该语句在visual foxpro6及visual foxpro7中执行结果如图3所示。
在visual foxpro6及visual foxpro7中能执行该查询语句并得到正确的统计结果,而在visual foxpro8中执行此查询命令会出现“sql:group by clause is missing or invalid”的提示,这是因为visual foxpro8中的select语句采用sql语言标准,即group by后的分组字段必须与select后的输出字段一致或多于其后的字段,如果select后需要出现其它字段,必须使用聚合函数。而visual foxpro6将此做了隐藏处理,即查询输出不受分组字段限制。
为了让visual foxpro8及其以上版本与老版本兼容,在执行sql select查询命令前,可以用函数
sys(3099,70)或者set enginebehavior 70命令将visual foxpro8转换为visual foxpro7,否则就要注意select命令必须符合visual foxpro8的语句规则。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论