GBase 8s SQL 指南:教程———4从复杂类型选择数据

4从复杂类型选择数据

本章描述如何查询复杂数据类型。复杂数据类型是使用SQL类型构造函数从其他数据类 型的组合构建的。SQL语句可以访问复杂数据类型中的个别组件。复杂数据类型是行类型 或集合类型。

ROW类型具有组合一个或多个相关数据字段的实例。这两种ROW类型是己命名和未命 名。

集合类型具有这样的实例:在其中,每种集合值包含具有相同数据类型的一组元素,这些 数据类型可以是任何基本或复杂数据类型。集合可以由LISTSETMULTISET数据 类型组成。

重要:对于复杂数据类型没有跨数据库的支持。只能在本地数据库中对它们进行操作。

有关数据库服务器支持的数据类型的更完整描述,请参阅《GBase 8s SQL参考指南》中的 数据类型一章。

有关如何创建使用复杂类型的信息,请参阅GBase 8s SQL参考指南》和GBase 8s SQL 指南:语法》。

4.1选择行类型数据

本节描述如何查询定义为行类型的数据。ROW类型是一个复杂类型,包含一个或多个相 关数据字段。

两种ROW类型如下:

已命名ROW类型

己命名的ROW类型可以定义表、列、其它行类型列的字段、程序变量、语句变量以 及例程返回值。

未命名ROW类型

未命名ROW类型可以定义列、其它行类型列的字段、程序变量、语句局部变量、例 程返回值和常量。

本节中使用的示例使用己命名ROW类型zip_taddress_temployee_t,这些ROW类 型定义employee表。下图显示创建ROW类型和表的SQL语法。

:创建ROW类型和表的SQL语法

CREATE ROW TYPE zip_t

(

z_code CHAR(5), z_suffix CHAR(4)

CREATE ROW TYPE address_t

(

street VARCHAR(20),

city VARCHAR(20),

state CHAR(2),

zip zip_t

)

CREATE ROW TYPE employee

(

name VARCHAR(30),

address address_t, salary INTEGER

)

CREATE TABLE employee OF TYPE employee_t

已命名的ROW 类型zip_taddress_temployee_t充当类型表employee的字段和列的模 板。类型表是在已命名ROW类型上定义的表。充当employee表的模板的employee_t类 型将address_t类型用作address字段的数据类型。address_t类型使用zip_t类型作为zip字 段的数据类型。

下图显示了创建student表的SQL语法。student表的s_address列定义为未命名的ROW 类型。(s_address列被定义为已命名的ROW类型。)

:创建student表的SQL语法

CREATE TABLE student

(

s_name VARCHAR(30),

s_address ROW(street VARCHAR (20), city VARCHAR(20), state CHAR(2), zip VARCHAR(9)),

grade_point_avg DECIMAL(3,2)

)

4.1.1选择类型表的列

对类型表的查询与对任何其他表的查询没有区别。例如:下列查询使用星号*来指定返 回employee表所有列的SELECT语句。

图:查询

SELECT * FROM employee

employee表上的SELECT语句返回所有列的所有行。

图:查询结果

name

Paul, J.

address

salary

ROW(1O2 Ruby, Belmont, CA, 49932, 1000)

78000

name

Davis, J.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值