查询使用

2024-05-01

查询使用(精选六篇)

查询使用 篇1

XML文档数据模型可以看做是一个有序的标签树,其中树的节点代表文档的元素或属性,树的边代表元素间父子关系。XML上的查询通常也可以描述成树的形式。近几年来,一些基于栈连接的XML查询处理算法[1,2,3,4,5,6]相继被发表,其中TwigStack[1]算法在查询中仅包含祖孙关系时中间结果全部可以转化为最终结果,因此被认为处理该类查询是最优的。但是当查询包含父子关系时,中间结果不能保证可以转化为最终结果,查询效率下降。多篇文献[3,4,5,6]提出了改进的TwigStack算法,但没有最终解决该问题。

通过细致的观察不难发现基于栈连接的算法普遍存在这样的问题:所有标签出现在查询中的节点至少被加载到内存一次,输入这样大量的节点集以及相应的入栈、出栈操作带来了不必要的输入代价以及查询处理代价。

根据XML节点的路径信息对节点集进行分类,提出了区间路径标记法及分枝点连接算法,通过路径匹配过程预先排除无关节点集来优化查询处理过程。实验表面,分枝点连接算法在多个数据集上查询效率与延展性都优于TJFast和Twig2Stack。

1 区间路径标记法

采用的XML数据模型为一个有唯一根结点的有序的标签树,其中每个XML节点e标记为T[o](T是e的标签,o是自然数,是依文档深度优先顺序遍历得到的下标值)。本文算法支持包含父子轴(/),祖孙轴(//),通配符(*)以及分枝查询([])的XPath查询表达式。图1显示了一个XML文档的树形结构和一个XML查询表达式Q=//B[.//E]//D的树形结构,查询的结果是d4。

以下本文中大写字符表示标签,小写字母表示节点。

1.1 根路径

XML文档树被记做T(N,E),其中N是节点集,E是边的集合。

定义1.1 一个节点n的根路径记做RP(n),如果n是根结点,RP(n)=null,否则,令mn的父节点,Tag(n)为n的标签,RP(n)=RP(m)/Tag(n)。一个节点n是一个根路径rp的匹配,当且仅当RP(n)=rp

定义1.2 给定XML文档树T(N, E)和根路径rp,关于rp的区间路径是T(N, E)的一个子树ST(SN, SE),其中节点集SN={n| n∈N, RP(n)=rp or Descendant(n)∈SN},边集SE={e| e∈E, e=Edge(m, n), m∈SN, n∈SN}。

一个深度为k的RegionPath聚合点是一个区间路径中深度为k的所有节点的集合。记为RegionPathNode[k]。

RegionPath聚合点的数据结构可以描述为一个元组<T, O, P>,其中T为该聚合节点集的标签(位于区间路径中同一深度的节点的标签相同);O是该聚合节点集的下标集;P是该聚合节点集的父聚合节点集的下标集。

区间路径标记是一个由根路径聚合点按深度排列的序列。

例1图1 Sample.xml中b1,b2的根路径均为/A/B,RegionPathNode[2]≤B, {[1,2]}, {1}>表示深度为2的RegionPath聚合点{b1,b2},他们的父节点为a1。

鉴于子节点下标集O中存在连续的整数序列,将序列整合为区间标记得到区间路径标记。实验数据表明使用基于区间的RegionPath标记法可以大大缩小RegionPath标记法的空间,对于365M的DBLP文档,不使用区间标记法的空间占用是28M,使用区间标记法后是5M。

2 查询处理过程

XML查询往往是以树状结构来表示的,在本文中,一个XML查询会被拆分为主枝和分枝,主枝与分枝、分枝与分枝之间靠分枝点连接。

定义2.1 查询Q中每一条从根结点到叶节点的路径称为Q的一个分枝。其中包含返回节点的那个分枝称为主枝。主枝与分枝、分枝与分枝的分叉点称为分枝点。

例2 以查询Q=//B[.//E]//D为例(图1),由于D是返回节点,所以分枝//B//D为主枝,另一个分枝为//B//E,其中B为连接主枝与分枝的分枝点。

2.1 查询处理系统框架

首先,创建XML文档的RegionPath标记并把根路径信息部分以哈希表的形式加载到内存等待查询的输入。

其次,当查询被输入后它将被解析成主枝、分枝与分枝点。我们依据分枝点来建立查询计划。最后,我们根据查询计划定义的执行顺序选定一个分枝点及与该分枝点相关的分枝做连接RegionPath后,返回查询的处理结果。全部过程如图2所示。

从图2可以看出,节点数据是在最后一步才被从磁盘加载到内存,其余部分都是利用内存中已加载的根路径信息部分完成,查询处理的输入代价被大大降低。

2.2 路径匹配

给定查询Q的一个分枝//B//D,判断根路径根路径rp=/A/B/C/D是否匹配Q可以利用类似KMP算法在线性时间完成。

如图3所示,首先Q按//断开为两个查询子串//B、//D,然后用rp匹配第一个查询子串//B,匹配成功,返回剩余子串/C/D匹配第二个查询子串//D,匹配成功并剩余空串,表明rp匹配Q成功。

本文限于篇幅略去算法描述。路径匹配算法的优势:(1)内存中完成,无须加载节点,算法的时间复杂性与文档深度成线性,可忽略;(2)支持查询通配符*;(3)排除无关路径,大大降低查询处理过程的输入代价。

2.3 分枝点连接算法

针对图1的文档和查询Q=//B[.//E]//D,通过路径匹配过程,得到/A/B/C/D匹配//B//D,/A/B/C/E匹配//B//E。其中分枝点为B,然后加载两个路径的B节点集分别是{b1,b2}和{b2},取交集可得同时满足两条路径的B节点集为{b2},然后在路径/A/B/C/D中找出交集{b2}的C子节点集{c3}(c4节点在路径/A/B/C/E中),继续选择{c3}的D子节点集得到最终结果{d4}。本文略去算法描述。

区间路径节点集的按节点下标有序存储,这样分枝点连接算法以及子节点选择算法的时间复杂性都是线性的有序连接,为O(N1+N2),其中N1、N2为参与算法的聚合点中下标集区间数。令N为文档的节点总数,则算法的最坏时间复杂性为O(N)。

3 实验

使用的实验环境是一台拥有AMD 羿龙II X4 925、4GB DDR3 1333内存、640G SATA硬盘的PC机。操作系统为Windows7,查询系统使用JDK1.6实现。从TJFast[6]得到了该算法的源码并自己动手实现了Twig2Stack[2]算法。

使用两个数据集XMark[7]和DBLP[8],其中XMark为生成的数据集并可以根据需要决定生成文档的大小。DBLP为真实的数据集并根据时间有不同大小的版本。本文实验中XMark数据集分别采用1.0、1.5的生成系数产生了大约为100M、150M的数据集。DBLP则是04年、07年的202M、365M数据集。

表1说明RegionPath标记法无论对产生的数据集XMark还是对真实数据集DBLP都有非常好的效果。由于文档的根路径数(RegionPath数)相对于节点数比较小,所以文档的聚合度都很高。RegionPath标记法的文件大小相对于源文档也比较小而且随文档体积变化时增长幅度较慢。

为每个数据集使用了3个查询,包括:一个仅包含祖孙轴的查询,两个逐渐复杂的查询。

由于基于栈连接的算法可以最优的处理仅包含//的查询,因此第一个查询是可以被TJFast与Twig2Stack最优处理的。

图4给出了三种算法(BPJoin为分枝点连接算法,Twig2为Twig2Stack算法,TJFast)使用表2中表达式在各数据集上的执行时间和输入代价。其中对于分枝点连接算法,执行时间包括了RegionPath信息部分预加载时间和查询运行时间。三种算法的执行时间以毫秒为单位取对数显示。

对于XMark数据集,本文算法对表2中3个查询的执行效率都优于Twig2Stack和TJFast。因为预加载的信息部分只有32k大小仅占用了31毫秒的加载时间却为查询处理减少了40%的输入代价。

对于DBLP数据集,本文的算法的优势就显得更大了,因为DBLP的数据结构属于不太深但宽度很大的结构,利用本文所说的基于区间的RegionPath标记法可以把大量的节点集压缩成简单的一个区间来表示,DBLP的信息部分仅为4k,加载时间为0。相比之下基于栈连接算法需要对这样的节点进行进栈出栈操作大大降低了效率。

从实验结果还进一步发现:随着查询表达式的复杂性增加(查询中节点数增加,分枝增多,更多的父子轴),本文算法的优势在进一步的扩大。原因是基于栈连接的算法因为查询中的标签多了,需要加载的节点数量变得很大,进栈出栈的次数也大大增加,所以查询表现不如查询表达式不太复杂的情况。而本文算法则不太受查询表达式复杂性影响,复杂的查询表达式可能造成较长的查询分枝,而查询分枝越长对路径匹配算法越有利。

最后来比较各算法在不同大小的同一数据集上的延展性。从图4中横向对比可以看出本文算法的延展性要明显好于TJFast与Twig2Stack。这是因为当文档保持结构不变而只是体积增大时,文档中的RegionPath数基本保持不变,新增加的节点往往能够合并到已有的RegionPath中的区间中去,其中DBLP数据集尤为明显,130M的DBLP数据的RegionPath标记法占用2.48M空间,而365M的DBLP也仅占用5.44M空间。相比之下Twig2Stack使用的区间标记法对于130M的DBLP数据标记法占用38M空间,而对于365M的DBLP则占用100M空间。因此,算法的执行效率随文档增大下降明显。

4 结束语

本文提出了一种新的文档标记法,即区间路径标记法,该标记法可以把同结构的节点合并为一个区间路径,并利用节点间解析下标的连续性而集成为区间表示。基于根路径标记法,本文提出了路径匹配算法以及分枝点连接算法来高效的处理XPath查询,并提出了能减少输入代价的查询计划生成规则。与基于栈连接的算法相比本文的算法有较少的磁盘访问代价和可以预排除一定量的无关节点(路径匹配算法与共享路径匹配过程都会预排除一部分节点),查询处理过程连接操作基于聚合的区间而不是单独的节点。实验结果也说明本文的算法在不同的数据集上都优于基于栈连接的查询处理算法并具有更好的延展性。

摘要:近年来,在XML查询处理方法中发表了一些基于节点流栈连接的高效的分枝连接算法。然而,这些算法普遍存在这样的问题:由于它们必须扫描查询中出现的每一个元素对应的节点流,当XML节点数量很大时,查询处理的输入代价很大,效率变得低下。为了解决这个问题,提出了一个新型的标记法记为区间路径,不同于节点流的区间标记法,区间路径可以把具有相同路径的节点集索引到一个集合中。继而提出了分枝点连接算法用于XML查询处理。同基于节点流栈的分枝连接算法相比,该算法有以下优势:节点集的祖先信息直接位于区间路径中;只有和查询结果相关的节点集会被扫描到,大大降低了输入代价;支持查询通配符;对于类型为根路径的查询,只需一次输入操作代价完成查询处理。实验结果表面该算法在输入代价,执行时间和延展性方面都优于基于节点流的分枝连接算法。

关键词:XML,XQuery,区间路径,分枝点连接

参考文献

[1]Nicolas Bruno,Nick Koudas,Divesh Srivastava.Holistic twig joins:opti-mal xml pattern matching[C]//Proc.of SIGMOD,2002:310-321.

[2]Songting Chen,HuaGang Li,Jun’ichi Tatemura,et al.Twig2Stack:Bottom-up processing of generalized tree pattern queries over xml doc-uments[C]//Proc.of VLDB,2006:283-294.

[3] Ting Chen, Jiaheng Lu, and Tok Wang Ling. On boosting holism in xml twig pattern matching[C]//Proc. of SIGMOD, 2005:455-466.

[4] Haifeng Jiang, Wei Wang, Hongjun Lu, et al. Holistic twig joins on indexed xml documents[C]//Proc. of VLDB, 2003:273-284.

[5] Jiaheng Lu, Ting Chen, Tok Wang Ling. Efficient processing of xml twig patterns with parent child edges: a look-ahead approach[C]// Proceedings of CIKM, 2004:533-542.

[6]Jiaheng Lu,Tok Wang Ling,Chee Yong Chan,et al.From regionencoding to extended dewey:On efficient processing of xml twig pat-tern matching[C]//Proc.of VLDB,2003:193-204.

[7] Xmark: The xml-benchmark project[EB/OL].http://monpetdb.cwi.nl/xml.

查询使用 篇2

Internet就像一个浩瀚的知识海洋,里面蕴藏着取之不尽的信息宝藏。如何挖掘开采它,获得人们需要的东西,目前还存在着两方面的问题:首先,人们手头的查询工具太多,有WWW(World Wide Web)、Gopher、FTP以及不计其数的专题新闻组、消息表等等;其次,Internet网上的资源没有确定的分类,人们要查找的是一堆毫无组织、地址不唯一的信息。同时,那些热心的程序员、厂商、经纪人还在源源不断地往Internet上填充着他们的东西。这无形中给检索工作带来了很大难度,没有一定的方法,在Internet上查询信息犹如大海捞针。哪种情况

下该用什么样的工具帮你简便快捷地找到你想要的信息,看了本文以后,或许会对你有所帮助。

目录帮助

假如你要查找人们普遍感兴趣的题目,如内战或者热线财经一类的消息并找到其网络地址,通常这类目录会很大,而且有按专题组织的地址表。这种情况下,我们一般喜欢用Yahoo(地址:www.yahoo.com/)查找,它列出了8万个网络地址(包括Web页、Gophers、FTP地址以及Usenet新闻组),顶层又按艺术、计算机、卫生、保健等分成14类子题目。用鼠标点一下就可以选定子题目表,反复地查找子表,直到你找到需要的信息为止。

除了Yahoo一类人们普遍感兴趣的目录外,专题目录则覆盖了从古文物到青年工人等各方面的信息。找到这些专用目录的最佳途径是可以去密执根大学(地址:www.lib.mich. edu/chhome.html)查找那里的Clearinghouse,那里有面向专题的Internet资源指南。

查询引擎

当人们意欲查询Web提供的信息时,目录项是非常有用的,用户的问题越专有,待查的目录项就越少。为了取得问题的答案,人们必须使用查询引擎。查询引擎实际上是一些Web页,你可以在其中输入你想要查找的文本串。按一下按钮,等一会儿,引擎就会识别出与输入的关键字匹配的`Web地址表。在最近的Web查询扫描中,我们查到60个这样的页,其中只有10页是我们觉得有用的工具,其余的用处不大,或者只有计算机科学专业的研究生对之感兴趣。

每一个查询引擎代表一个数据库,里面含有Web页的URL(Universal Resource Locator或经专门格式化后的Internet地址)地址以及其他网络资源。大多数查询引擎数据库是由Crawler程序、漫游Web的软件程序通过页与页的连接顺次查找新的地址搜集而来的。这里,Crawler又被称为机器人或蜘蛛。当蜘蛛找到新的页时,就把新页增加到数据库中。

这些数据库存有成千上万个Web页,在引擎头的位置每天都在增加新的页。其中,多数人感兴趣的引擎如Lycos和Excite覆盖面最广,其中每个数据库有150万个索引Web页,其次是Open Text Index,据称也有130万个Web页。

每个数据库引擎的大小对查找是否成功起着很大的作用,例如,我们想用字符串recipewheat Beer(酿啤酒秘诀)查询每一个引擎,其结果是:最大的Lycos数据库引擎提供给我们437个匹配页(hit),InfoSeek和Open Text Index数据库则每次提供200个页,用其他数据库则少于100页,有几种情况下,甚至查不到一个Web页。通常的情形是,数据库越小,查到的Web页就越少。

大多数数据库引擎严格限制其只能检索Web本身,InfoSeek和Excite则比其他引擎更进一步,它们增加了Usenet新闻组索引。InfoSeek还允许用户查询就近的一组非Internet数据库的信息。

索引中的信息

Web的蜘蛛程序比URL采集信息做得要多一些,它们还搜集有关每一页的信息,一旦你提交一个查询,查询引擎的backend软件就建立起一个你所需信息的索引。从一个引擎到另外一个引擎,其索引技术是各不相同的,你不要因此感到奇怪。

在每个引擎中,都有一个页的索引URL地址和题目。多数引擎还有每一段的索引标题,其他的引擎则只是记录了频繁提到的词或者文本的头几行。在Open Text Index数据库引擎中,页的每一个单词都有索引,甚至包括and一类别的引擎忽略的词也有。结果可想而知,它理所当然成了唯一能在查找过程中返回是或

查询使用 篇3

关键词:SELECT语句查询连接

在关系数据库管理系统中,SQL查询语句——SELECT的使用是非常重要的一部分内容,是任何SQL语言中使用频率最高的语句,它是SQL语言的灵魂。SELECT语句可以使数据库服务器根据客户的要求搜索所需要的信息,并按规定的格式返回给客户。使用T—SQL的SELECT语句,不仅可以查询普通数据库中的表格和视图信息,还可以查询SQL Server的系统信息。在Transact-SQL中绝大多数的语句都是由SELECT构成的。

然而笔者在近几年对关系数据库管理软件(如Access、SQL Server、Oracle等)的教学中,发现对于这部分的内容学生掌握得并不是很好。为此,笔者根据多年的教学经验,将SQL查询语句的一些使用技巧列出来,供学生参考和同行借鉴。

由于SELECT语句的完整语句比较复杂,故在这里只列举出它的主要子句。SELECE语句的主要子句格式如下:

SELECT [ALL|DISTINCT][TOP n] select_list

[INTO new_table]

[FROM table_condition]

[WHERE search_condition]

[GROUP BY group_by_expression]

[HAVING search_condition]

[ORDER BY order_by_expression [ASC|DESC]]

[COMPUTE expression]

下面笔者就结合简单查询、联合查询和连接查询三方面通过举例的形式来谈谈有关Transact-SQL语句的用法。(注:以下所有例子的数据表来自示例数据库“图书管理系统”或“northwind”,在进行查询前,先用USE关键字将相关数据库打开。)

1 简单查询

Transact-SQL的簡单查询包括选择列表、FROM子句和WHERE子句三部分内容。由此说明要查询的列、所查询的表或视图以及检索条件等。

例如,从数据库“图书管理系统”的“图书明细表”中查询定价大于50的“图书编号”、“图书名称”、“出版日期”和“定价”字段的信息。

SELECT图书编号,图书名称,出版日期,定价

FROM 图书明细表

WHERE 定价>50

1.1 选择列表

简单查询中的选择列表(select_list)指出要查询的字段列,可以由一组字段名列表、星号、表达式或变量(包括局部变量和全局变量)等构成。

1.1.1 查询表中所有的字段列

星号(*)在选择列表中有特殊含义,它代表列表中的所有行。

例如,从数据库“图书管理系统”中查询“出版社信息表”的所有行。

SELECT *

FROM 出版社信息表

1.1.2 查询表中指定的列

可以从表中检索指定的列,只需将这些列放在选择列表中。

例如,从数据库“图书管理系统”的“作者表”中查询列为“作者姓名”、“性别”和“电话”的作者信息。

SELECT作者姓名,性别,电话

FROM作者表

1.1.3 改变列名

在选择列表中,通过使用AS关键字创建更具可读性的别名来取代默认的列名。

定义格式为:列标题AS列名或列名列标题

注意:如果指定的列名不是标准的标识符格式,应使用引号定界符。

例如,从数据库“图书管理系统”的“图书明细表”中,查询列“图书名称”和“定价”为八折后的“新价格”的图书信息。

SELECT图书名称,定价*0.8 AS新价格

FROM图书明细表

1.1.4 消除重复行

如果希望一个列表没有重复值,则可以使用DISTINCT子句来消除结果集中的重复行。

例如,从数据库“northwind”的“suppliers”表中检索所有的行,但每个国家只显示一次。

SELECT DISTINCT country

FROM suppliers

1.1.5 使用TOPn列出前n个记录

用TOPn[PERCENT]关键字列出结果集中前n个记录。其中TOPn表示返回结果集中前n行记录,而TOP n PERCENT中的n表示一百分数,指定返回的记录数等于总记录数的百分之几。

例如,从数据库“northwind”的“order details”表中查询出前5条记录,只显示orderid、productid、quantity三列内容。

SELECT TOP 5 orderid,roductid,quantity

FROM [order details]

1.2 FROM子句

1.2.1 FROM子句指定从中查询行和列所属的源表或视图。可以指定多个,最多达256个,其间用“,”分隔。当FROM子句同时指定多个表或视图时,如果在选择列表中有相同的列,则应使用对象名限定这些列所属的表或视图。

例如,在数据库“northwind”的“orders”和“customers”两个表中均有customerid(顾客id)列,在查询两个表中的顾客id时应使用下面语句格式来限定。

SELECT DISTINCT customerid,companyname,orderdate,

FROM orders,customers

WHERE orders. customerid = customers. customerid

1.2.2 在FROM子句中可以为表或视图指定别名。格式:<表名> as <别名>或<表名> <别名>

例如,上面例中的查询语句也可表示为如下形式:SELECT DISTINCT customerid,companyname,orderdate,

FROM orders a,customers b

WHERE a.customerid = b. customerid

1.3 WHERE子句

1.3.1 使用WHERE子句,可以根据给定的搜索条件检索特定的行。

例如,下面的查询将从数据库“northwind”中的“employees”表中检索所有居住在美国的职员的姓和居住的城市。

SELECT lastname,city

FROM employees

WHERE country=USA

1.3.2 在WHERE子句中可包括以下一些运算符:①比较运算符(用于比较大小):>(大于)、>=(大于或等于)、=(等于)、<(小于)、<=(小于或等于)、<>(不等于)。②范围运算符(检索在指定取值范围内的行):BETWEEN…AND…和NOT BETWEEN…AND…。例:unitprice BETWEEN 10 AND 30等价于unitprice>=10 AND unitprice<=30。③列表运算符(检索与指定值列表相匹配的行):IN (项1,项2,……)和NOT IN (项1,项2,……)。例:country IN ('Germany','China')。④字符串比较符(通过字符串比较来选择符合条件的行):LIKE和NOT LIKE,适用于char、nchar、varchar、nvarchar、binary、varbinary、datetime或smalldatetime等数据类型的查询,以及在特定条件下对text、ntext和image数据类型进行的查询。

采用以下四种通配符来形成字符串搜索条件:a百分号%:包含零个或更多字符的任意字符串。b下划线_:匹配任何单个字符。c方括号[]:指定的范围或集合内的任何单个字符。d[^]:不在指定的范围或集合内的任何单个字符。

例如,用LIKE ‘N%来表示以N开头的任意字符串;

用LIKE ‘N[xy]%表示以N开头,第二个字符是x或y的字符串;

用LIKE ‘N[^xy]%表示以N开头,第二个字符不是x或y的字符串;

用LIKE ‘N_M%表示以N开头,第三个字符是M,第二个为任意一个字符的字符串。

⑤空值判断符(检索那些指定列中遗漏信息的行):IS NULL和NOT IS NULL。

例如,从数据库“northwind”的“suppliers”表中检索fax列为空的公司列表。

SELECT companyname,fax

FROM suppliers

WHERE fax IS NULL

⑥逻辑运算符(用于组合多个条件,简化查询处理):NOT、AND和OR,优先级从左到右依次降低。

1.4 ORDER BY子句

用ORDER BY子句对结果集中的行进行升序(ASC)或降序(DESC)排列。

格式:ORDER BY {order_by_expression [ASC|DESC]} [,…n]

注意:不可以在ORDER BY子句中使用ntext、text或image类型的列。

例如,下面从数据库“northwind”的 “products”表中检索每个产品的产品标识、产品名、类别和单价。先将结果集按照类别进行升序排列,对于同一类别,再按照单价进行降序排列。

SELECT productid,productname,categoryid,unitprice

FROM products

ORDER BY categoryid,unitprice DESC

2 联合查询

使用UNION子句的查询称为联合查询。它可以将两个或更多个SELECT语句的返回结果组合到一个单个结果集中,该结果集包含了联合查询中所有查询结果集中的全部行数据。

联合查询的语法格式如下:

select_statement

UNION [ALL] select_statement

[UNION [ALL] select_statement][…n]

其中,select_statement为待联合的SELECT查询语句。ALL选项表示将所有行都合并到结果集中,若缺省,则被联合查询结果集合中的重复行将只保留一行。

注意:①在用UNION子句查询时,查询结果的列标题为第一个查询语句的列标题。因此,必须在第一个SELECT语句中指定列标题;②SQL Server要求所引用的表必须具有相似的数据类型、相同的列数,且每个查询中的选择列表也必须具有相同的列顺序;③如果希望结果集中的行按一定顺序排列,则必须在最后一个有UNION操作符的语句中包含ORDER BY子句,以指定排序方式。

例如:从数据库“经销商”的“顾客信息表”中,查询姓王的顾客的姓名和家庭住址,并为其增加一个类型列TYPE,列的内容为“顾客”;从“销售人员表”中,查询姓王的销售人员的姓名和家庭住址,并增加一个列,列的内容为“营业员”;然后,将两个查询结果合并在一起。

SELECT姓名,家庭住址,顾客AS TYPE

FROM顾客信息表

WHERE姓名LIKE‘王%

UNION

SELECT姓名,家庭住址,营业员

FROM销售人员表

WHERE姓名LIKE ‘王%

3 连接查询

连接操作可以同时查询两个或多个表中的数据,所生成的结果集将多个表中的行和列合并在一起。

连接可以在SELECT 语句的FROM子句或WHERE子句中建立,建议在FROM子句中指定连接,这样有助于将指定的连接条件与WHERE子句中的搜索条件区分开来。

SQL-92标准所定义的FROM子句的连接语法格式为:

FROM table_source1 join_type table_source 2

[ON (join_condition)]

其中,table_source1和table_source 2指定要查询的表;join_type 指定所执行的连接类型,可分为三类:内连接(Inner Join)、外连接(Outer Join)、交叉连接(Cross Join);join_condition指定连接条件。

3.1 内连接

内连接通过比较两个表共同拥有的列的值,把两个表连接起来。SQL Server将只返回满足连接条件的行。它是SQL Server默认的连接方式。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。

3.1.1 等值连接即在连接条件中使用“=”运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括重复列。

例如,列出数据库“图书管理系统”的“作者表”和“出版社信息表”中位于同一城市的作者和出版社信息。

SELECT *

FROM 作者表AS a INNER JOIN 出版社信息表AS b

ON a.籍贯=b.出版社所在城市

3.1.2 不等连接即在连接条件中使用除等于运算符外的其它比较运算符来比较被连接的列的列值。

3.1.3 自然连接即在连接条件中使用等于运算符比较被连接列的列值,但它使用选择列表指出查询。

例:列出数据库“图书管理系统”的“作者表”和“出版社信息表”中位于同一城市的作者和出版社,并删除重复列“籍贯”。

SELECT a.*,b.出版社编号,b.出版社名称,b.出版社电话

FROM 作者表AS a INNER JOIN 出版社信息表AS b

ON a.籍贯=b.出版社所在城市

3.2 外连接

若要创建一个查询,以返回一个或多个表中的所有行(无论在另外的表中是否含有相匹配的行),则需要使用外连接。外连接有三种类型:左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和完全外连接(FULL OUTER JOIN或FULL JOIN)。

例如,在数据库“图书管理系统”中,以在同一个城市的出版社和作者为条件,对“出版社信息表”和“作者表”进行左外连接查询。

SELECT a.姓名,a.性别,a.籍贯as 所在城市,b.出版社名称

FROM 作者表as a LEFTJOIN 出版社信息表as b

ON a. 籍贯=b. 出版社所在城市

ORDER BY 姓名

在查询结果窗口中,显示左表中指定列的所有行和对应连接列的所有行,在左表中没有找到相匹配的右表的对应位置填上NULL。

例如,在数据库“图书管理系统”中,以在同一个城市的出版社和作者为条件,对“出版社信息表”和“作者表”进行完全外连接查询。

SELECT a.姓名,a.性别,a.籍贯as 所在城市,b.出版社名称

FROM 作者表as a FULLJOIN 出版社信息表as b

ON a.籍贯=b.出版社所在城市

ORDER BY 姓名

在查询结果窗口中显示相连接的两个表的所有记录,在没有找到相匹配的位置上填上NULL。

3.3 交叉连接

交叉连接(CROSS JOIN)不带WHERE子句,返回的是被连接的两个表所有数据行的笛卡尔积,即返回到结果集中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

例如,下面将显示数据库“northwind”中“shippers”和“suppliers”表交叉连接后的结果集,以列出供应商运输其产品的所有可能方式。

SELECT suppliers.companyname,shippers.companyname

FROM suppliers CROSS JOIN shippers

3.4 自连接

在连接查询时,當table_source1和table_source 2是同一个表时,即对同一个表进行连接操作,则称此连接为自连接。

例如,使用自连接在数据库“图书管理系统”的“作者表”中查找籍贯是“河北石家庄”的作者。

SELECT a.姓名,a.性别,b. 姓名,b.性别

FROM 作者表as a INNER JOIN作者表as b

ON a.籍贯=b.籍贯

WHERE a.籍贯=河北石家庄

ORDER BY 姓名

结构化查询语言命令的使用方法 篇4

(1) 结构化查询语言 (Structured Query Language) 。SQL被作为关系型数据库管理系统的标准语言。目前绝大多数流行的关系型数据库管理系统, 如Oracle, Sybase, Microsoft SQL Server, Access Visual Foxpro等都采用或适应了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展, 但是包括Select, Insert, Update, Delete, Create, 以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。 (2) 应用:可单独使用, 也可以嵌入到其它软件中使用。 (3) 使用方式及命令:命令方式 (交互方式) 和程序方式 (代码窗口方式) 主要掌握几个命令:create table、select…from…where…、insert into、delete、update…set…

SQL数据定义功能

①基本数据类型:数值型、字符串型、时间型、二进制型。②创建数据表:Create table<表名> (列定义[表约束], 列定义[表约束]…) 。例如:create table学生 (学号C (8) NOT NULL UNIQUE, 姓名C (8) NOT NULL, 出生日期D CHECK (出生日期<={^01/01/90}and出生日期>={^01/01/90}) , 入学成绩N (6, 2) , 性别c (2) ‘女’) ③修改表结构:Alter Table<表名>[add新列定义数据类型列约束][alter|modi列名数据类型]。④删除数据表:DROP TABLE表名DROP TABLE学生

数据查询功能

①基本格式:select字段[as别名][all/distinct]from若干张表where条件表达式select:选择from:操作表where:条件&&注意:distinct (简写为DIST) 表示去掉重复记录。

例题: (表不需要先打开) 例:查询学生全部信息。select*from学生, 用“*”表示数据表的全部列名。 (2) 其它参数:between..and。例如;select姓名from学生where性别=‘男’and入校总分between 560 and 580 Order by

查询输出功能

into table<表名>或者是into cursor<临时表别名>

select*from学生where性别=“男”into table abc产生新表abc.dbf。

插入记录

Insert..Into..。格式:insert into<表名> (列名…) values (值..)

例 (插入一条) :insert into学生 (学号, 姓名, 性别, 出生年月, 入校总分, 三好生) ;

values (“S02011111”, “艾符四”, “男”, {^1982/09/08}, 567, .t.)

删除记录

Delete格式:delete from<表名>[where<条件>]

注意:删除是逻辑删除, 即是说加了删除标记而已。

例:update学生set入校总分=577 where学号in (select学号from学生where入校总分<560)

参考文献

[1]王珊, 陈红.数据库系统原理教程.清华大学出版社.

北医三院网上检验结果查询使用流程 篇5

2010年7月27日,北医三院检验结果网上查询系统正式开通,医者可通过网络直接查寻自己的检验结果。这也是本市大型综合医院中,首家开通网络检验报告查询系统。该系统的开通切实方便了群众看病就医,为患者提供了便捷的服务,在一定程度上缓解了病人“看病难”的问题。

网上查询检验报告时,需登录北医三院的门户网站,然后按北医三院的就医卡号注册,并确定是否接受手机短信通知。注册后,即可查阅近期在医院所做过的检验结果报告。如果患者选择了手机短信通知,在检验报告发出后,系统会自动发送手机短信,提示用户可以登录网站查询自己的检验结果。

据介绍,检验报告网上查询系统启用后,患者可以在家凭就医卡直接登陆,上网查询检测报告,而且可以自己在家打印报告。对患者而言,网上查询系统的开放,可在第一时间获取自己的检测报告,节省了时间。对医院而言,减少了报告打印站点和空间,在一定程度上缓解了门诊拥挤的状况。

查询使用 篇6

Google Mashup Editor是一个在线编辑器,它允许开发者直接在浏览器里创建、测试及调试各种MASHUP及简单的网络应用程序;它使得许多第三方能够方便地在其上按照个人的兴趣或者某个应用的方便开发出完整的、高度移植的新应用。本文所介绍的NBA赛事查询即为了便于众多的NBA球迷而做的一个开发尝试;希望通过本查询平台,球迷们能够及时了解芝加哥公牛队的赛事新闻、比赛分数等。因为,大多数网民可能会热切希望得到所喜欢球队的相关新闻但却又不想通过不同的网站去搜索。而且在查询有关的赛事时,通常是选择一两个网站,然后在其中浏览信息,这样得到的信息并不准确。因此,本文介绍Google Mashup编辑器和使用它开发NBA赛事查询平台以飨狂热的NBA球迷。

一、Google Mashup Editor编辑器的介绍。

当我们上一些搜索网站搜索地址时,网站常常不仅提供文字描述,同时还会弹出彩色的GOOGLE地图,显示位置及行车路线等,同时还计算相应的距离等等信息。这些便利均得益于MASHUP技术,它是一种糅合WEB数据的新的网络应用,通过整合几个数据源的信息数据从而产生一种截然不同的全新应用。

MASHAUP可以实现不同复杂程度的应用,一些技术领先的公司提供了不少省时省力的MASHAUP编辑器,以便于开发所需的MSAHUP应用,比如:Yahoo!Pipes, Microsoft Popfly, Google Mashup Editor, 和其它如IBM的Orchestr8 AlchemyPoint、QEDWiki, Dapper, Openkapow, JackBe Presto Wires等等。如下图1所示的是Google Mashup Editor。

Google Mashup Editor编辑器要求操作者具有相对高的技术要求,它是基于字符输入的。具有下列功能:

(1)通过加类XML标签,编程人员可以使用任何HTML及CSS语句,从而方便地定制所需的MASHUP的用户界面。它还提供了JavaScript API接口,它在数据调用时能够直接访问DOM并能方便进行CRUD操作。不过,此功能对于网页代码编写新手而言有一定难度。

(2) Google Mashup Editor集合了GOOGLE MAPS的信息数据。另外,为了能完整地显示地图,编辑器的API接口还能直接访问地理信息引擎,它能分析GEORSS数据并自动在地图上显示位置信息。

(3) Google Mashup Editor提供了一组模块以供编程人员与不同数据源进行读、写、显示等交互。另外,除了支持所有的RSS及ATOM格式的网页数据调用。

Google Mashup Editor还提供了两个内置的数据调用功能语句。一个是${app},它专用于GME应用示例。开始此调用语句的内容是空白的,编程人员写入数据后,此MASHUP应用的所有用户可以从中读取。编程人员还能在${app}下创建子目录已存储不同的信息,如${app}/foo,用于调用字符串。另一个是${user},它是专用于MASHUP应用的用户,每个用户只能进行各自的调用,而不能调用其它用户的数据。与Yahoo!Pipes不同,Google Mashup Editor应用使用XPath的小子集,搜索及请求语句能够给XML文档附件标签及属性,由于其能使用户进行更多的应用,甚至于超过了标准的模块应用范围,从而使Google Mashup Editor得到更广泛的使用。不过,由于Google Mashup Editor应用的所有数据均以GData形式存储,所以,编程人员必须保证所写入的数据应是Atom格式,这样,欲存储的信息就会有所限制。

(4) Google Mashup Editor提供了一个带JavaScript API接口的事件处理机制,这个机制允许不同模块间进行交互。比如,当用户点击地图上的某个地点时,其它模块中,与之相关的信息也相应地确认,如新闻列表也列出该地点的相关新闻。再比如,当用户在日历上选择了某个日期,那么地图上也将更新为与该日期相关的信息。

(5) Google Mashup Editor还包括其它一些基本功能,如插入示例代码、标签注释。这个功能在编写应用的初期非常有用,使得能在代码问题处进行注释,还能在测试样例是了解运行流程。

(6)随时可以在Google Mashup Editor服务器上发布自己的MASHUP应用,也能随时对其进行修改然后重新发布。

二、Google Mashup Editor应用平台的开发:NBA赛事查询

1.本应用平台的重点描述

这个应用平台的开发目的,就是通过NBA.com, nba.espnstar.com.cn及www.Sport.Yahoo.com等网站整合新闻、比分、球队的比赛日程等信息为一个新的综合网站平台,同时还整合像新闻、比赛日程、比赛地点等字符类数据及图片、视频类数据,这样用户只要进入一个网站即可了解所喜爱的球队在本年度赛季的相关信息。传统的赛事日程安排显示方式常常如图2中的表格所示,它列有几个栏目,包含日期/时间、对阵的球队等用户所想了解的信息。但对于用户来说,其互动性就显得不足,用户无法让这些信息按照他们所希望的方式显示。所以,本平台的主要特点之一就是将简单的赛事日程表转化为图形化方式显示,这种方式将日程信息和互动的地图、日历信息相结合,使得用户能够在浏览过程中动态的了解相关球队的信息。

2. MASHUP开发应用平台的架构

图3显示了此应用平台的架构,它包括五个模块:日历、地图、新闻目录、视频目录、赛程目录。赛程目录中的每一项都存储了用户所选球队的赛程信息、参赛球员、对阵球队、比赛地点、比赛时间等等信息并在地图上显示。在上文中曾描述过,Google Mashup Editor具有事件处理机制,该机制使开发人员指示某个模块如何对在其它模块中发生的事件进行反应。图3中,不同的彩色箭头描述模块间如何互动。如:在地图选择一个地点,即能看到在该地进行的比赛的日程安排,同时在左侧的日历上突显该场比赛的准确日期。或者,在日历上选择一个日期,如2009年12月9日芝加哥公牛VS新泽西篮网的这场比赛,地图上随即在洛杉矶的Staples Cente处显示赛程信息,同时,新闻模块及视频模块也将根据赛程模块中选择的信息相应更新显示。这样,当用户选择了某支球队,如芝加哥公牛,新闻模块即显示从nbatom.com, www.espnstar.com.tw, 及sports.yahoo.com收集到的相关新闻提要,同时,视频模块将从YouTube上收集赛事视频并播放其中的视频,使用户在同一个网站上就可观看这场的比赛情况了。

3.数据处理

从那三个网站获取RSS及Atom格式的各队的新闻和比分信息,这样只要将每个数据源指定给各目录模块中的对应项。如,要显示从NBA.com中得到的有关芝加哥公牛队的新闻提要,可以运行下列指令:

目录模块是用来显示所收集的数据的。上列指令块中,id是目录的唯一标识,data指明数据来源,template提供一种通过添加HTML标识将输入的数据转换成HTML格式的方式。通过template,用户可以定制输入数据在浏览器上显示的布局和方式。Pagesize确定在目录模块上的显示数据的数量。Selection属性设为"false", 则在目录中禁止某项选择。

除了目录模块,还采用项目模块(<gm:item/>)进行赛程相关信息的的输入并将其保存在赛程目录模块中,以便后续显示时使用。

Google Mashup Editor中包含许多标签用于数据的写入和显示,如:<gm:text/>标签显示与XPath注释绑定的数据单元的文字说明,<gm:image/>标签显示如队标这类图形信息,<gm:video>用于显示从YouTube处获取的视频信息,<gm:link/>标签用于创立一个与数据源的链接。

由于Google Mashup Editor并不支持屏幕抓取,对网页数据而言,即不支持像赛程安排信息这类RSS格式的数据的输入,因此,只能通过${app},采用手工方式输入此类信息。通过这种方式,可以为每支球队在${app}下所创建的各自子目录中保存相关信息。

三、总结及后续规划

采用Google Mashup Editor开发应用并不复杂。如今互联网中的教育资源是海量的,但是这些资源分散、无序,因而,很难充分挖掘其功能。使用Google Mashup Editor编辑器根据我们的具体需求,对网络上零散的共享资源进行整合开发,即进行二次加工,可以重新构建适合的学习单元。所以今后将继续探索这个混搭的应用,特别是将它应用于教育领域,探索开发一些教育资源整合的应用平台。

摘要:此文主要介绍Google Mashup Editor编辑器的特点, 及采用Google Mashup Editor编辑器开发NBA寒事查询应用平台, 使球迷们可以在该平台了解各自所喜爱的球队在各个赛季赛事的相关信息。

关键词:Google Mashup Editor,编辑器,NBA 赛事,查询

参考文献

[1]Google Mashup Editor.http://editor.googlemashups.com/

[2]Yahoo!Pipes Editor.http://pipes.yahoo.com/pipes/docs?doc=editor

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【查询使用】相关文章:

住房公积金查询查询09-07

申请(行贿查询) 招标行贿受贿查询函申请05-29

福建省养老保险查询个人账户查询05-03

查询04-28

移动查询06-07

网络查询06-11

语义查询06-20

医保查询06-25

查询设计06-26

征信查询个人05-26

上一篇:运动感觉下一篇:电视剧音乐评析