• 面向对象数据库设计与应用 04


    一、实验目的

    1. 本实验,要求利用SQL代码实现并掌握记录的OML操作,重点在于面向对象OML句型的进一步学习和深层次的掌握;
    2. 在理解实验难点的基础上,即:面向对象的表查询,记录的更新操作,再深入拓展并巩固SQL代码句型语法的使用规则。在进行复合条件查询和模糊查询的同时,要理解关系型数据库与面向对象数据库的相同之处以及区别,特别是涉及对象字段参照的用法。

           

     

    二、实验内容

    实验背景导入:

    公司已经完成数据表的完整性与数据库对象安全性的设置,接下来就要进行相关测试,但对于测试前需要为系统填充一些初始化的数据记录,所以就要进行记录DML操作。

    ①    更新单条记录。将“劲霸西服”由“推荐”商品转为“热点”商品,需要完成对该商品状态的更改。

    ②      更新多条记录。现将所有商品的折扣调整为0.8,为并将所有的进货日             期调整2010年10月1日。

    ③    删除单条记录。商品号为040002的商品已售完,并且以后也不考虑再进货,需要在商品信息表中清除该商品的信息。

    ④    删除所有记录。删除用户表中的所有信息。

    ⑤    使用复合条件查询。需要了解商品类别为01,并且商品单价在2500元以上,的商品信息,要求以汉字标题显示商品号,商品名称,商品类别和价格。

    ⑥    模糊查询。知道一个商品的商品名称中包含有“520”字样,要求查询该       商品的商品号、商品名称、商品单价和商品折扣。

     

    三、实验平台

    软件:WORD、Oracle

       

    四、实验步骤

    ①更新单条记录。将“劲霸西服”由“推荐”商品转为“热点”商品,更改状态。

    Insert into RD_COMMODITY_TYPES (COMMODITY_TYPE_ID,STATUS,COMMODITY_TYPE) values ('0003','推荐','服装');
    
    Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0003','0.85','劲霸西服',165,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0003'));select GOOD_ID,GOODS,deref(GOOD_TYPE),(select STATUS from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE_ID='0003') from RD_GOODS where GOOD_TYPE=(select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0003');
    
    select GOOD_ID,GOODS,deref(GOOD_TYPE),(select STATUS from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE_ID='0003') from RD_GOODS where GOOD_TYPE=(select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0003');
    
     
    
    update RD_COMMODITY_TYPES set STATUS='热点' where COMMODITY_TYPE_ID='0003';
    
    select GOOD_ID,GOODS,deref(GOOD_TYPE),(select STATUS from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE_ID='0003') from RD_GOODS where GOOD_TYPE=(select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0003');


      

    ②更新多条记录。将所有商品的折扣调整为0.8,将所有的进货日期调整2010年10月1日

    select * from RD_GOODS;
    
    update RD_GOODS set  DISCOUNT='0.80',PURCHASE_DATE='2010-10-01';
    
    select * from RD_GOODS;


      

    ③删除单条记录。商品号为040002的商品已售完,在商品表中清除该商品的信息。

    update RD_GOODS set  GOOD_ID='040002' where GOODS='劲霸西服';
    
    select * from RD_GOODS;
    
     
    
    delete from RD_GOODS where GOOD_ID='040002';
    
    select * from RD_GOODS;


      

    ④删除所有记录。删除用户表中的所有信息。

    select * from RD_MEMBERS;
    
     
    
    delete from RD_MEMBERS;
    
    select * from RD_MEMBERS;


      

    ⑤使用复合条件查询。需要了解商品类别为01,并且商品单价在2500元以上,的商品信息,要求以汉字标题显示商品号,商品名称,商品类别和价格。

    update RD_COMMODITY_TYPES set COMMODITY_TYPE='02';
    
    Insert into RD_COMMODITY_TYPES (COMMODITY_TYPE_ID,STATUS,COMMODITY_TYPE) values ('0004','推荐','01');
    
    Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0004','0.8','直升飞机',165000,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0004'));
    
    Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0005','0.95','520钢铁胶水',165,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0004'));
    
    Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0006','0.45','华人牌手机',23450,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0004'));
    
    select * from RD_GOODS;
    
     
    
    select GOOD_ID "商品号", GOODS "商品名称",(select COMMODITY_TYPE from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE='01') "商品类别", UNIT_PRICE "价格" from RD_GOODS where (select COMMODITY_TYPE from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE='01')='01' and UNIT_PRICE > 2500;


      

    ⑥模糊查询。知道一个商品的商品名称中包含有“520”字样,要求查询该商品的商品号、商品名称、商品单价和商品折扣。

    select * from RD_GOODS;
    
     
    
    select GOOD_ID,GOODS,UNIT_PRICE,DISCOUNT from RD_GOODS where GOODS like'%520%';


      

     

    五、运行结果

    ①更新单条记录

     

    图5-1 单条数据更新前

     

     

    图5-2 单条数据更新后

    ②更新多条记录

     

    图5-3 多条数据更新前

     

    图5-4 多条数据更新后

    ③删除单条记录

     

    图5-5 单条记录删除前

     

    图5-6 单条记录删除后

    ④删除所有记录

     

    图5-7 所有记录删除前

     

    图5-8 所有记录删除后

    ⑤使用复合条件查询

     

    图5-9 复合条件查询前

     

    图5-10 复合条件查询后

    ⑦    模糊查询

     

    图5-11 模糊查询前

     

    图5-12 模糊查询后

     

    六、实验总结

    通过实验,相关总结和经验收获,可分点总结如下:

    1. 在本实验使用复合条件查询的时候,根据以往SqlServer的经验,用[]把中文列名包围住或者采用“as ‘ 别名’”的方式,执行语句仍然报错,而经过在网上找了一些资料,才发现,Oracle的中文列别名要用 "" 双引符号括起来;
    2. 模糊查询操作,简单的方式就是字符匹配操作可以使用通配符 “%” 和 “_”,其中,%:表示任意个字符,包括零个;  

              i.      _:表示一个任意字符。再次复习了SqlServer的相关知识点;

    1. 对于本实验中的部分操作需求,由于没有绝佳的跨实验准备或最吻合的匹配度,所以在进行操作时,都必须事先进行数据准备,这也就是为什么本实验的实验步骤中,明明题目需求可以使用一条SQL来完成,从而列举了多条的原因;
    2. 本实验在操作和实验结果记录的过程中,都采用了对比的方法,以实验前和经过需求处理后进行对比,突出表现操作需求的实验效果;
    3. 经过本实验,利用SQL代码实现并初步掌握了记录的OML操作,对于面向对象OML句型的进一步学习和深层次掌握的实验重点,也有了一定的认识;
    4. 面向对象数据库没有关系型数据库的主、外键,从理论体系上来说,逻辑层面较为简化。但是经过本实验似乎才发现,在SQL操作层面,但凡涉及对象表参照来说,往往要比关系型数据库复杂些许。
  • 相关阅读:
    sql 基础--mysql 5 (4)
    The Best Strategy
    Rectangles
    Good Coins
    深搜模板
    求数的和 必须是个位数
    TC中,音乐,正弦曲线,满天星,成绩柱状图
    1,2,3的交换
    Robot's Task(机器人破解计算机)
    Asphalting Roads(判断什么时候修马路)
  • 原文地址:https://www.cnblogs.com/Raodi/p/12155611.html
Copyright © 2020-2023  润新知