与复杂类型有关的查询
考试要求: 了解     
知识路径:  > 数据库主流应用技术  > 数据库主流应用技术  > 数据库主流应用技术  > 面向对象数据库  > 对象关系数据库系统


 
       这里要介绍的是处理复杂类型的扩展SQL查询语言。与复杂类型有关的查询可以分为如下几类。
       路径表达式
       在SQL:1999中对引用取内容使用→符号。可以使用下面的查询来找出各个部门负责人的名字和地址:
       
       在上面的查询中,带有→符号的表达式被称为路径表达式。
       以集合体为值的属性
       如果我们想找出所有的码中包含“database”字样的书,如下查询即可:
       
       unnest(keyword-set)在无嵌套关系的SQL中相当于一个select-from-where的子表达式。
       嵌套与解除嵌套
       将一个嵌套关系转换成为1NF的过程称为解除嵌套。关系doc有author-list和keyword-list两个属性,这两者都是嵌套关系,同时关系doc另外还有name和date两个属性,它们都不是嵌套关系。假定想要将该关系转化为单个平面关系,使其不包含嵌套关系或者结构类型作为属性,可以使用以下查询来完成这个任务:
       
       from子句中的变量B被声明以doc为取值范围,变量A被声明以该文档的author-list中的作者为取值范围,同时K被声明以该文档的keyword-list的关键词为取值范围。
       反向过程即将一个1NF关系转化为嵌套关系,称为嵌套。嵌套可以用对SQL分组的一个扩展来完成。在SQL分组的常规使用中,需要对每个组创建一个临时的多重集合关系,然后在这个临时关系上应用一个聚集函数。如果不应用聚集函数而只返回这个多重集合,我们就可以创建一个嵌套关系。假定有一个1NF关系flat-doc,下面的查询在属性keyword上对关系进行了嵌套:
       
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有