数据查询检索操作是从数据库节点的特定数据表中按照一定的规则与条件,返回信息数据的操作过程,是数据库管理系统人机交互中最基本、最普通的业务操作。数据查询检索操作包括单表查询检索与多表连接查询检索,查询检索语句中包含检索字段、特定数据表等相关元素。
SQL操作语句是用户对数据库管理系统发出的操作命令,关系数据库管理系统接收到SQL操作命令后,将分析SQL语句的类型,找出对应的数据表,统计出对应的检索字段的数据,然后返回到客户端,响应相关的数据请求。
3.1.1 数据库操作语句
在关系数据库环境下,SQL语句从编写到最终的执行响应需要经过若干的处理环节,执行步骤及流转过程如图3-1所示,具体分析如下。
1)关系数据库用户通过客户端工具编写标准的SQL语句,并在客户端工具通过编译器语法检查。
2)把语法检查合格的SQL语句通过网络传输的方式发送到数据库服务器上,待下一步处理。
3)数据库服务器对接收到的SQL语句进行语言编译,得到数据库应用系统能够识别的操作命令。
4)数据库服务器对通过SQL语言编译的操作命令进行语义分析,得出数据库操作类型,如数据检索或数据变更操作(插入、更新、删除)。
5)数据库服务器调用命令执行器,准备对通过分析行为的SQL数据库命令调用执行。
6)根据关系数据库命令类型分别执行对应的关系数据集的数据汇总以及对存储介质中关系数据表上业务数据进行变更操作。
7)对关系数据集的汇总结果或关系表中数据变更的操作结果以实时响应的方式传输到客户端,响应客户请求,最终完成整个SQL命令语句的流转过程。
图3-1 SQL语句执行步骤及流转过程
SQL语句的读操作关键字是“SELECT”,表示该语句执行一个查询检索操作,其在SQL语句的前半部分声明,SQL语句的后半部分以关键字“FROM”声明要检索的数据表,以及通过其他关键字声明查询检索的相关数据条件。
3.1.2 查询检索语法
SQL语句基本语法:
关键字“SELECT”后面为所需要检索的表字段,可以根据实际情况设定,每个字段之间用英文状态下的逗号隔开。关键字“FROM”后面为检索的关系数据表,SQL语句的最后可以设置各类检索条件,此部分为可选项,如不定义检索条件则表示检索整个数据表的所有业务数据。
以下SQL语句表示从USER数据表中检索出USER_ID、USER_NAME、USER_AGE三个字段,USER表中可能不止以上3个字段,没有列出的字段则不检索。
在数据检索操作过程中,为了提升返回数据视图的可读性,可以使用关键字“AS”给每个检索的字段添加别名,同时为了简化数据表的复杂度,也可以给关系数据表添加别名,添加别名后可直接使用别名来指代相应的字段或数据表。
以下SQL语句表示从USER数据表中检索出USER_ID、USER_NAME、USER_AGE三个字段,并通过关键字“AS”为对应的字段设定别名:ID、NAME、AGE,同时USER表也设定了别名U。
如果需要对关系数据表的所有字段进行相关检索,可以在SQL语句中将全部字段依次列出,也可以通过通配符的形式来实现。在查询检索的SQL语句中,可以使用星号“*”作为通配符,直接跟在关键字“SELECT”后面,代表数据表中的所有字段。
以下SQL语句以“*”来通配关系表的所有字段,表示从USER数据表中检索出数据表的全部字段。
查询检索(SELECT)是关系数据库各类型动作事务中最普遍的数据库操作,也是关系数据库最基本、最重要的功能。关系数据库系统对数据信息的管理是以查询检索为基石,缺少这一职能,关系数据库系统将失去信息管理的基本价值。
某地区有若干的百货超市,每个百货超市有固定的营业地址,每个百货超市有固定的员工数,每个百货超市有固定的负责人,上半年(1月—6月)每个百货超市均有相应零售销售额度,请按相关要求检索出业务销售数据。
1)百货超市数据表中有销售ID、百货超市名称、百货超市地址、百货超市员工数、门店经理、月度销售额、销售月份字段,相关结构如表3-1所示。
表3-1 百货超市(SUPERMARKET)表字段结构
2)通过如下的SQL脚本在数据库环境中创建数据表结构,以及为数据表进行业务数据初始化。在SQL初始化脚本中,类型为字符(CHAR)、字符串(VARCHAR)、文本(TEXT)的所有值都必须用英文状态下的单引号引起来。
3)百货超市表创建完成后如图3-2所示,从图中可以看到表中包含4家百货超市:百佳、万佳、人人乐、新一佳,包含1月—6月各百货超市的月度销售额,还包含各家门店的职工人数等业务数据。
图3-2 百货超市表
检索出各百货超市各个月份的销售额度。在数据表中只需要检索出:销售标识(SALE_ID)、百货超市名称(SHOP_NAME)、月度销售额(SALE_MONTH_MONEY)、销售月份(SALE_MONTH)4个字段即可满足相关的业务需求。
SQL语句1:
执行以上SQL语句后的数据检索结果如图3-3所示。
SQL语句2:
以上SQL语句为每个检索字段及关系数据表添加了相应的别名,执行后的数据检索结果如图3-4所示,可以看到所检索出来的业务数据是一样的,但数据视图的表头是不相同的,存在别名时将以别名替代原有的字段名称。
图3-3 百货超市月销售额度-直接检索
图3-4 百货超市月销售额度-带别名检索