主题:ILikefox狐话连篇
我们想象一家书店,里面摆放了好多书架,书架上一层一层许多书。一进书店是个柜台,柜台后工作人员正在等候顾客光临。你进了书店要买一本张洪举的书,现在有两种方式实现目的。
方式1. Locate(或者Seek)的方式。问工作人员,"我要一本张洪举的权威指南"(Locate for 张洪举的权威指南),“哦,稍等一下。”......经过寻找,工作人员已经知道书的位置(即定位记录指针到对应的记录号上)。“有吗?”(?found()),“第3排书架下面的第2层中间”。于是你走到那里,取到了想要的书。
方式2. SQL-Select的方式。对工作人员说,“拿一本张洪举的权威指南给我。”(Select 书 from 书店 where 张洪举的权威指南),“好的,稍等一下。”很快工作人员把书交到你手里。
方式1中工作人员只是指明你要的书的位置(即定位记录指针到对应的记录号上),书还在那个位置,下一步要你去拿。
方式2中工作人员把书直接拿给你(从表中取出数据生成结果集),你不需要了解书具体在哪里(记录号是多少)。
再看复杂一点的,你要所有VFP的书。
方式1. 问工作人员,"我要所有VFP的书"(Locate for VFP的书),“哦,第3排书架就有”(定位到第1条符合条件的记录)。你走到那里,取到了想要的书。接着又问"VFP的书还有什么地方有?"(continue),“第7排书架也有”(定位到第2条符合条件的记录),你走到那里,又取到了想要的书。接着再问"VFP的书还有什么地方有?"(continue)......
方式2. 对工作人员说,“拿所有VFP的书给我。”(Select 书 from 书店 where VFP的书),“好的,稍等一下。”很快工作人员把一大堆书交到你手里。
以上可以看出,尽管目的一样,两种方式的具体实现其实截然不同(上面没有说明SQL-Select具体怎么实现,其实就是一些关系代数和集合运算,比如交、并、补、投影、笛卡尔积等等)。术语“查询”特指通过SQL-Select获取所需的数据集合;而Locate、Seek只是定位记录指针,可以视为“查找”。进一步的,Locate定位后,数据还是原封不动放在原处;而SQL-Select则取出数据形成结果集合,问题是你要把这些取出的数据怎么办?VFP中Select后,默认生成一个叫Query(中文版叫查询)的Cursor,把数据放在那里,并用一个浏览窗口展示出来给你看看。当然你应该使用SQL-Select的into或to子句指明要把取得的数据放到那里。
方式1. Locate(或者Seek)的方式。问工作人员,"我要一本张洪举的权威指南"(Locate for 张洪举的权威指南),“哦,稍等一下。”......经过寻找,工作人员已经知道书的位置(即定位记录指针到对应的记录号上)。“有吗?”(?found()),“第3排书架下面的第2层中间”。于是你走到那里,取到了想要的书。
方式2. SQL-Select的方式。对工作人员说,“拿一本张洪举的权威指南给我。”(Select 书 from 书店 where 张洪举的权威指南),“好的,稍等一下。”很快工作人员把书交到你手里。
方式1中工作人员只是指明你要的书的位置(即定位记录指针到对应的记录号上),书还在那个位置,下一步要你去拿。
方式2中工作人员把书直接拿给你(从表中取出数据生成结果集),你不需要了解书具体在哪里(记录号是多少)。
再看复杂一点的,你要所有VFP的书。
方式1. 问工作人员,"我要所有VFP的书"(Locate for VFP的书),“哦,第3排书架就有”(定位到第1条符合条件的记录)。你走到那里,取到了想要的书。接着又问"VFP的书还有什么地方有?"(continue),“第7排书架也有”(定位到第2条符合条件的记录),你走到那里,又取到了想要的书。接着再问"VFP的书还有什么地方有?"(continue)......
方式2. 对工作人员说,“拿所有VFP的书给我。”(Select 书 from 书店 where VFP的书),“好的,稍等一下。”很快工作人员把一大堆书交到你手里。
以上可以看出,尽管目的一样,两种方式的具体实现其实截然不同(上面没有说明SQL-Select具体怎么实现,其实就是一些关系代数和集合运算,比如交、并、补、投影、笛卡尔积等等)。术语“查询”特指通过SQL-Select获取所需的数据集合;而Locate、Seek只是定位记录指针,可以视为“查找”。进一步的,Locate定位后,数据还是原封不动放在原处;而SQL-Select则取出数据形成结果集合,问题是你要把这些取出的数据怎么办?VFP中Select后,默认生成一个叫Query(中文版叫查询)的Cursor,把数据放在那里,并用一个浏览窗口展示出来给你看看。当然你应该使用SQL-Select的into或to子句指明要把取得的数据放到那里。