• ORACLE 实验二


    实验二:数据操纵

    实验学时:4学时

    实验类型:综合型

    实验要求:必修

    一、实验目的

    1、掌握SQL数据查询语句;

    2、掌握SQL聚集函数的使用。

    3、掌握SQL插入、改动、删除语句的使用。

    二、实验内容

    1.project项目採购数据库,在实验3.2的基础上插入例子数据并完毕下列操作:

    (1)     求向projectJ1提供零件的供应商的编号。

    (2)     求向projectJ1提供零件P1的供应商的编号。

    (3)     求向projectJ1提供红色零件的供应商的编号。

    (4)     求没有使用天津供应商提供的红色零件的project号。

    (5)     求至少使用了供应商S1所提供的所有零件的project号。

    (6)     统计各个供应商供应的零件总数。

    (7)     求至少使用了3种以上零件的project号。

    (8)     把全部红色零件的颜色改为粉红色。

    (9)     将向projectJ1提供零件P1的供应商S1改为S2提供。

    (10) 删除所有红色零件以及对应的供应-使用记录。

    2.产品价格数据库。在实验3.3的基础上插入例子数据并完毕下列操作

    (1)     列出速度至少是150的那些PC机的型号。

    (2)     哪些厂家生产的LAPTOP配置的硬盘不低于1

    (3)     找出由生产厂B所生产的所有产品的型号和价格。

    (4)     找出全部的彩色激光打印机的型号。

    (5)     找出生产执行速度至少是450MCPC的厂商。

    (6)     找出价格最高的打印机。

    (7)     找出每个生产厂商的PC机的最高价格。

    (8)     找出至少生产三种不同型号PC机的厂商。

    (9)     厂商A兼并厂商B。把全部B厂商生产的产品改成由厂商A生产。

    (10) 删除全部不生产打印机的厂商生产的LAPTOP机。

     三、实验原理、方法和手段

    在实验3定义的关系模式的基础上。使用SQL数据操作语句完毕数据的查询和更新操作。在查询和更新时要注意查询的优化策略。

    四、实验组织执行要求

    本实验为综合型实验。採用集中授课形式,学生集中上机操作。详细要求例如以下:

    1、学生在进行实验前必须进行充分的预习,熟悉实验内容;

    2、教师在学生实验过程中予以必要的辅导。学生独立完毕实验。

    五、实验条件

    1、提供一台具有WINDOWS 98/2000/NT/XP操作系统的计算机。

    2Oracle8.0以上设计环境。

    六、实验步骤

       类同实验三。

    七、思考题

        实验比較INExists两种子查询的差别。

    八、实验报告

    1.实验预习

    在实验前每位同学都须要对本次实验进行认真的预习,并写好预习报告。在预习报告中要写出实验目的、要求、简要的实验步骤,形成一个操作提纲。

    2.实验记录

    学生開始实验时。应该将记录本放在近旁,将实验中所做的每一步操作、所得结果及相关条件如实地记录下来。

    3.实验报告

    主要内容包含实验中的查询语句、数据更新语句、执行结果以及对操作过程中出现错误的分析总结。回答思考题,给出实验结论。

    九、其他说明

    学生严格遵守实验室的各项规章制度,配合和服从实验室人员管理。

    经过试验 我们也得到了实验的结果

    注意这个两个SQL实验脚本是基于实验一中的两个数据库的

    代码例如以下,进过验证 实验没有错误 基本的是双NOT EXISTS 具体的解答见我的博客还有一章节

    --2.1---------------------------------------------------------------------------------------
    select SNO FROM SPJ
    WHERE JNO='J1';
    
    select SNO FROM SPJ
    WHERE JNO='J1'AND PNO='P1';
    
    select SPJ.SNO FROM SPJ,P
    WHERE SPJ.JNO='J1'AND SPJ.PNO=P.PNO AND COLOR='红';
    
    SELECT DISTINCT SPJ.JNO FROM SPJ,S,P
    WHERE SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO
          AND S.CITY!='天津' AND P.COLOR!='红';
          
    SELECT DISTINCT JNO
    FROM  J
    WHERE NOT EXISTS
       (
          SELECT * 
          FROM SPJ SPJ1
          WHERE SPJ1.sno='S1' AND NOT EXISTS
          (
            SELECT * 
            FROM SPJ SPJ2
            WHERE SPJ2.pno= SPJ1.pno AND SPJ1.jno= J.jno
          )
       );
          
    SELECT SPJ.SNO,COUNT(*) FROM SPJ
    GROUP BY SPJ.SNO;
    
    
    SELECT SPJ.JNO FROM SPJ
    GROUP BY SPJ.JNO
    HAVING COUNT(*) >=3;
    
    UPDATE  P
    SET COLOR='粉红'
    WHERE COLOR='红';
    
    UPDATE SPJ
    SET SNO='S2'
    WHERE SNO='S1' AND JNO='J1' AND PNO='P1';
    
    DELETE SPJ
    WHERE SPJ.PNO IN 
                (
                  SELECT P.PNO FROM p
                  WHERE P.COLOR='红' 
                );
                
    DELETE  P
    WHERE P.COLOR='红';
    
    --2.2---------------------------------------------------------------------------------
    SELECT MODEL
    FROM PC
    WHERE SPEED >= 150;
    
    SELECT DISTINCT PRODUCT.MAKER FROM PRODUCT,LAPTOP
    WHERE PRODUCT.MODEL=LAPTOP.MODEL AND LAPTOP.HD >= 1.0;
    
    SELECT MAKER,PRODUCT.MODEL,PRICE
    FROM PRODUCT,PC
    WHERE PRODUCT.MAKER='B' AND PRODUCT.model=PC.model
    UNION
    (
    SELECT MAKER,PRODUCT.MODEL,PRICE
    FROM PRODUCT,LAPTOP
    WHERE PRODUCT.MAKER='B' AND PRODUCT.model=LAPTOP.model
    )
    UNION
    (SELECT MAKER,PRODUCT.MODEL,PRICE
    FROM PRODUCT,PRINTER
    WHERE PRODUCT.MAKER='B' AND PRODUCT.model=PRINTER.model
    );
    
    
    SELECT MODEL FROM PRINTER
    WHERE COLOR='TRUE';
    
    SELECT DISTINCT PRODUCT.MAKER
    FROM PRODUCT,PC
    WHERE TYPE='PC' AND PRODUCT.MODEL=PC.MODEL AND SPEED>450;
    
    SELECT  * FROM PRINTER 
    WHERE PRICE >= ALL
    (
      SELECT PRICE  FROM PRINTER
    );
    
    SELECT MODEL,PRICE 
    FROM PRINTER
    WHERE PRICE= 
    (
      SELECT MAX(PRICE) FROM PRINTER
    );
    
    SELECT DISTINCT MAKER,MAX(PRICE)
    FROM PRODUCT ,PC
    WHERE PRODUCT.MODEL=PC.MODEL AND TYPE='PC'
    GROUP BY MAKER;
    
    SELECT DISTINCT MAKER,COUNT(*) FROM PRODUCT
    WHERE TYPE='PC'
    GROUP BY MAKER
    HAVING COUNT(*)>=3;
    
    UPDATE PRODUCT
    SET MAKER='B'
    WHERE MAKER='A';
    
    DELETE PRODUCT P1
    WHERE P1.TYPE='LAPTOP' AND EXISTS 
    (
      SELECT * FROM PRODUCT P2
      WHERE P2.TYPE='Printer'
      AND P1.MODEL=P2.MODEL
    );
    
    ROLLBACK;
    
    

    如有不当之处还请多多不吝赐教...

    本人劳动成果,还请转载署名出处。。。
     

  • 相关阅读:
    vue项目中 添加全局的随机数、随机数数组filter过滤器,并在vue的methods中使用filter过滤器
    配置如何在公网环境访问本地开发环境的微服务nat123一款很好用的公网映射工具
    使用vue开发简单的table表格插件,表头固定,内容区可滚动
    springboot study
    Clickhouse上用Order By保证绝对正确结果但代价是性能
    Java SE学习笔记
    集合与泛型
    Java常用类
    Maven
    protobuf学习详解
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5081560.html
Copyright © 2020-2023  润新知