选择显示字体大小

visual foxpro 9中新的数据处理方式

visual foxpro 9.0与以前的版本相比,在数据引擎上做了很大的改进。从增强的sql语言到支持新的数据类型和索引都作了增强,本文阐述了这个最新版本作为一个成熟开发平台的魅力。

  数据引擎的改变主要体现在以下5个方面:

  · 增强的sql语言:取消了很多硬编码的限制,增强了子查询和关联查询的支持,支持更复杂的表达式,以及增强了对union的支持。

  · 性能方面:加入了一个全新的索引方式,增加了过滤型索引的性能,提高了了top n ,min()/max()以及like这些查询子句的性能。

  · 命令和函数:对数据操作的更具灵活性,增强对sql中showplan的支持,增加icase()来代替iif()函数。

  · 新的数据类型:支持varchar、varbinary和blob等新的数据类型,并提供相应的类型转换函数:cast()。增强了现有函数对数据类型的控制和转换能力

  · 远程数据:增强了事务控制的能力,游标机制使得代码逻辑更加清晰,并且对cursoradapter作了加强,使开发者只需数行代码就可以方便地访问远程视图

  由于提供了与sql server强有力的互操作性,visual foxpro 9对客户端/服务器模式做了很大的改进。通过支持新的数据类型,并取消了sql语言的诸多限制,同一套代码可同时运行在本地数据引擎和sql server这两种不同的数据源上。

  以上是大致的描述,下面让我们深入剖析这些新增功能。

  sql子查询的增强

  如果要用一句话来表示sql子查询的增强程度,那就是:“太多了”!sql语句中再没有了元素数量的硬编码限制。一个简单的select语句能包括更多的表、连接、子查询、嵌套子查询和联结。

  sql语句中的in子句中再也没有数量限制。在以前的版本中in实际被映射到了一个名字inlist()函数中,但现在这种依赖取消了。这个改变使得in子句能使用更多的参数来生成非常复杂的sql语句。与原来版本不同,只要找到相应记录,visual foxpro 9会自动停止计算in子句中的表达式,这将带来性能的提高。

  完全无限制?

  in参数表的元素也不是完全无限的,它的最大数量等于函数sys(3055)的返回值,而这个函数的返回值与实际可用内存有关,因此如果你的可用内存越大,那么in子句支持的元素就越多。无硬编码的限制并不等于完全无限制。像可用内存以及表达式的复杂性都能决定是否能运行一个非常长而且复杂的语句,你要花很大的功夫才能找出它们在你的机器上的真实极限。

  增强的子查询功能

  子查询在sql语言中是一个很有用的功能。它一般处于where子句中的右边,充当一个选择器的作用。在visual foxpro 9中,子查询还可以处于select的参数列表中(称为投影)以及from子句中(称为派生表)。

  当你使用投影时,如果子查询没有返回任何记录,那将返加一个空值(null)。投影还允许互相关联,以后我们会讲到这点。
以下使用投影的sql语句的一个例子:

select ;
c.customerid, ;
c.companyname, ;
(select ytd_sales from sales_02 where ;
c.customerid = sales_02.customerid) as y02,;
(select ytd_sales from sales_03 where ;
c.customerid = sales_03.customerid) as y03,;
(select ytd_sales from sales_04 where ;
c.customerid = sales_04.customerid) as y04 ;
from customers c

  这个select语句返回最后三个会计年度的客户id和公司名称。

  使用投影的限制是子查询只能查询一个字段,并且子查询返回的记录数不能大于1。

  投影的另一个有价值的使用方法是它可以成为表达式的一部分,如下所示:

select ;
c.customerid, ;
c.companyname, ;
sum(d.quantity*d.unitprice) as custtotal ,;
(sum(d.quantity*d.unitprice) / ;
(select sum((quantity*unitprice)-discount) ;
from orderdetails d2) ;
)*100 as pcttotal ;
from customers c ;
inner join orders o ;
on c.customerid = o.customerid ;
inner join orderdetails d ;
on o.orderid = d.orderid ;
group by c.customerid, c.companyname, o.orderid ;
order by pcttotal desc

  这个select语句返回客户id、公司名称、销售额以及销售额占总销售额的百分比。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons