首页 > 范文大全 > 正文

用关系数据库标准语言SQL实现数据查询(多表查询)的应用研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇用关系数据库标准语言SQL实现数据查询(多表查询)的应用研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:关系数据库语言的国际标准在1987年被确定,到目前为止,版本由sql―89标准、SQL―92标准升级到SQL―99标准,这些版本全称为SQL3。SQL现在已成为数据库领域中使用最为广泛的一个主流语言。它主要由数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)四个功能组成。其中数据查询是SQL的核心功能,这其中多表查询也是最为复杂的查询,本文正是立足于SQL的多表查询在实际应用中的应用研究

关键词:关系数据库;关系模型;数据查询;多表查询

中图分类号:TP311.52

关系数据库是基于关系模型作为数据的组织方式的,它借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。它是由埃德加・科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。

1 数据查询

所谓数据查询(数据检索)就是从关系数据库的数据表中找出用户所需的数据,只要表(关系)中存在,则可以通过各种各样的方式将它找出来,SQL的查询功能就是实现这一功能的。本文主要研究讨论多表查询。

在实际应用中,由于一个关系数据库根据需求分析后得到很多表,而且表与表之间互相存在一对一,一对多或是多对多的表间关系,这些表中的数据往往互相有较为紧密的复杂联系,在这种情况下,要查找用户所需的数据时就得用多表查询才能实现用户的查询目的和要求,比如在仓库数据库中分别有四张表,仓库表,职工表,订单表和供应商表,这四个表两两存在一对多的表间关系,一个仓库可以有多名职工,一名职工只能属于一个仓库;一名职工可以经手多笔订单,一笔订单只能由一名职工经手;一家供应商可以完成多表订单,一笔订单只能由一家供应商完成,在实际应用中,如果要根据仓库表中的数据作为条件查询检索供应商表中的数据时,必须得用基于多表的连接查询才能完成。

1.1 简单连接查询。简单连接查询的SQL语句格式可总结如下。Select from 注:连接条件是两个表的主外键相等,主表表名.主键=子表表名.外键 如:仓库表.仓库号=职工表.仓库号。

如果from后面跟两张表,则是两个表的简单连接查询,有一个连接条件,如果from后面跟三张表,则有两个连接条件,如果from 后面跟四张表,则有三个连接条件,依此类推。而且查找数据的条件和连接条件必须用and连接,连接条件之间也用and连接。

示例:在仓库管理数据库的四张表中检索出回民所在仓库的仓库信息。对应的SQL语句为:select 仓库表.* from 仓库表,职工表 where 民族=’回’ and 仓库表.仓库号=职工表.仓库号。

从这个简单连接查询实例来看。在基于多表的简单连接查询中,第一先确定最终要查询的数据所在的字段来自于几张表的几个字段,查找数据的条件涉及到几个表的几个字段,其次根据表间关系确定查询涉及到几张表,然后确定连接条件。且where是必选项。

1.2 嵌套查询。嵌套查询的意思是,一个查询语句(select-from-where)块可以嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询或主查询。内层查询也称子查询或从查询。嵌套查询的工作方式是:先处理内查询,由内向外处理,外层查询需要内层查询的结果来支持,但内层查询不需要外层查询的支持。示例:Select城市from仓库表where仓库号in(select仓库号from职工表where工资=4532)。

在这类嵌套查询中,带有IN或ONT IN谓词的嵌套查询在实际应用中用的最多,这里的IN相当于集合运算符∈。本文在阐述嵌套查询中就以带有IN或NOT IN谓词的嵌套查询进行阐述,带有比较运算符的子查询、带有ANY或ALL谓词的子查询、带有EXISTS谓词的子查询就再不做详细阐述了。

1.3 超连接查询。超连接查询分为内连接和外连接,外连接又分为左外连接,右外连接和全外连接。如果表中不匹配的数据不需要出现在查询结果中,则用内连接。如果在查询结果中两个表中不匹配的数据都要出现在查询结果中的话,则用全外连接,其对应表中对应字段用NULL表示。其SQL语句格式为(以基于两张表的超连接为主):Selectfrom on [where 查找数据的条件]。示例(以全外连接为例):select仓库.仓库号,城市,面积,职工号,工资 from 仓库表 full join职工表 on 仓库表.仓库号=职工表.仓库号JOIN连接格式在连接多个表时的书写方法要特别注意,在这种格式中JOIN的顺序和ON的顺序正好是相反的。

2 三种多表查询的特点及规律

在以上研究的三种多表查询中,基于多表的简单连接查询中,要查询的数据所在的字段可以是来自于一张表的字段,也可以是来自于多张表的字段,而查找数据的条件可以来自于一张表的字段,也可以来自于多张表的字段,即使没有查找数据的条件,但连接条件必须得有,在其SQL语句格式中,where是必选项。

在嵌套查询中,通过实际应用可以得出,嵌套查询不管由几个查询语句块组成,它们都是基于单表的简单查询构成的,而且最内层的查询结果就是其外层查询的条件,没有内层查询的结果,就不可能得到外层查询的结果,执行顺序都是由内往外执行的。

在超连接查询中,这种查询往往是在有关系的表中出现了所谓的不匹配数据时,根据用户的不同需要而使用的查询,到底选用哪一种主要取决于查询结果中要不要出现不匹配的数据和出现哪个表中的不匹配数据而定。

如果要查找的数据来自于多张表的多个字段,则可用连接查询和内连接查询,查询结果相同。如果要查找的数据来自于一张表的字段,而条件发生在不同的表中,则可用连接查询,嵌套查询和内连接查询,查询结果相同。

3 结束语

SQL的查询功能,尤其是多表查询有很大的灵活性,在实际应用中要视具体情况来决定用哪一类,这需要在实践中摸索总结,只有这样才能对SQL语句的查询功能运用的得心应手。

参考文献:

[1]萨师煊.王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,2000.

[2]贺桂英.数据库原理及应用―SQL Server 2008[M].北京:中国人民大学出版社,2013.

作者简介:王勇(1978.02-),男,助教,研究方向:数据库。

作者单位:兰州外语职业学院信息技术系,兰州 730101