对象-关系SQL(实验二)

用对象-关系SQL完成如下内容:

1)       创建一个自定义数据类型,代替ClassInfo表中的classTimePlace字段,包含属性有:上课起始时间、上课结束

时间、上课地点。

2)       创建一个ClassInfoTemp表,包含ClassInfo里的所有字段(其中classTimePlace字段的类型用自定义类型代替)

3)       往上面这个表中插入2-5行记录,并根据上课地点查询该表所有记录。

4)       因为一门课一周可能有几次课,我们需要设计一个汇集类型的数据表来存放一门课的所有上课时间地点信息

(包含内容同1),然后创建ClassInfo2表,其中classTimePlace字段的作为一个表类型列,可以包含多条上课时间

地点记录。实验要求:建立这样的ClassInfo2表 。

5)       往上表中插入若干条记录,每一条classinfo记录中有1-2条classTimePlace信息。


参考:

http://hi.baidu.com/420350501/blog/item/59730267ec1d8c6e0c33faa3.html

http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html

http://www.cnblogs.com/jennybackup/archive/2009/12/27/1633674.html



答案:


1 首先创建一个数据类型
create type ClassInfoType as object
(startTime date,
 endTime date, 
 place VarChar2(128))


2 创建表

CREATE TABLE ClassInfoTemp
(
  classID Number(10,0) NOT NULL,
  className Varchar2(32),
  teacherID Char(18) NOT NULL,
  courseID Char(8) NOT NULL,
  classYear Char(6) NULL,
  classTimePlace ClassInfoType NULL
 

);


3插入数据 并查询

insert into ClassInfoTemp values(1,'english','001','001','2011',ClassInfoType (to_date('2011/05/31:11:00:00 上午', 'yyyy/mm/dd:hh:mi:ssam'),to_date('2011/05/31:12:00:00 上午', 'yyyy/mm/dd:hh:mi:ssam'),'building1'));

insert into ClassInfoTemp values(2,'chinese','002','002','2011',ClassInfoType (to_date('2011/05/25:11:00:00 上午', 'yyyy/mm/dd:hh:mi:ssam'),to_date('2011/05/25:12:00:00 上午', 'yyyy/mm/dd:hh:mi:ssam'),'building1'));


//不可以使用*会出错

select c.classID, c.className ,c.classTimePlace.place from ClassInfoTemp c where c.classTimePlace.place = 'building1'


4创建 汇集类型 和表

//create type ClassTimeArray  as array(5) of VarChar2(128);

create type classTimePlace_t as table of ClassInfoType

CREATE TABLE ClassInfo2
(
  classID Number(10,0) NOT NULL,
  className Varchar2(32),
  teacherID Char(18) NOT NULL,
  courseID Char(8) NOT NULL,
  classYear Char(6) NULL,
  classTimePlace classTimePlace_t NULL 
)nested table classTimePlace store as classTimePlace_tab



5插入信息



insert into ClassInfo2 values(1,'english','001','001','2011',classTimePlace_t(
ClassInfoType(to_date('2011/05/25:11:00:00 上午', 'yyyy/mm/dd:hh:mi:ssam'),to_date('2011/05/25:12:00:00 上午','yyyy/mm/dd:hh:mi:ssam'),'building1'),
ClassInfoType(to_date('2012/05/25:11:00:00 上午', 'yyyy/mm/dd:hh:mi:ssam'),to_date('2012/05/25:12:00:00 上午','yyyy/mm/dd:hh:mi:ssam'),'building2')));





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值