zoukankan      html  css  js  c++  java
  • 阶段综合

     一.建立数据表

          概要:

              

             

    表和测试数据:

    sqlplus /nolog
    conn c##scott/tiger
    
    
    -- 删除数据表
    DROP TABLE grade;
    DROP TABLE sporter;
    DROP TABLE item;
    PURGE RECYCLEBIN;  
    
    --创建表
    CREATE TABLE sporter(
          sporterid       NUMBER(4),
          name            VARCHAR2(30)      NOT NULL,
          sex             VARCHAR2(10)      NOT NULL,
          department      VARCHAR2(30)      NOT NULL,
          CONSTRAINT      pk_sporterid  PRIMARY KEY(sporterid),
          CONSTRAINT      ck_sex  CHECK(sex IN ('',''))
    );
    
    
    CREATE TABLE item(
        itemid     VARCHAR2(4),
        itemname   VARCHAR2(30)   NOT NULL,
        location   VARCHAR2(30)   NOT NULL,
        CONSTRAINT pk_itemid  PRIMARY KEY(itemid)
    );
    
    
    CREATE TABLE grade(
         sporterid    NUMBER(4),
         itemid       VARCHAR2(4),
         mark         VARCHAR2(1),
         CONSTRAINT fk_sporterid FOREIGN KEY(sporterid) REFERENCES sporter(sporterid) ON DELETE CASCADE,
         CONSTRAINT fk_itemid  FOREIGN  KEY(itemid)  REFERENCES item(itemid) ON DELETE CASCADE,
         CONSTRAINT ck_mark CHECK(mark IN(6,4,2,0))
    );
    
    
    --测试数据
    INSERT INTO sporter(sporterid,name,sex,department ) VALUES(1001,'李明','','计算机系');
    INSERT INTO sporter(sporterid,name,sex,department ) VALUES(1002,'张三','','数学系');
    INSERT INTO sporter(sporterid,name,sex,department ) VALUES(1003,'李四','','计算机系');
    INSERT INTO sporter(sporterid,name,sex,department ) VALUES(1004,'王二','','物理系');
    INSERT INTO sporter(sporterid,name,sex,department ) VALUES(1005,'李娜','','心理系');
    INSERT INTO sporter(sporterid,name,sex,department ) VALUES(1006,'孙丽','','数学系');
    
    
    
    
    INSERT INTO item(itemid,itemname,location) VALUES('x001','男子五千米','一操场');
    INSERT INTO item(itemid,itemname,location) VALUES('x002','男子标枪','一操场');
    INSERT INTO item(itemid,itemname,location) VALUES('x003','男子跳远','二操场');
    INSERT INTO item(itemid,itemname,location) VALUES('x004','女子跳高','二操场');
    INSERT INTO item(itemid,itemname,location) VALUES('x005','女子三千米','三操场');
    
    
    
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1001, 'x001', 6);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1002, 'x001', 4);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1003, 'x001', 2);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1004, 'x001', 0);
    
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1001, 'x003', 4);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1002, 'x003', 6);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1004, 'x003', 2);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1003, 'x003', 0);
    
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1005, 'x004', 6);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1006, 'x004', 4);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1001, 'x004', 2);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1002, 'x004', 0);
    
    
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1003, 'x002', 6);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1005, 'x002', 4);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1006, 'x002', 2);
    INSERT INTO grade(sporterid,itemid,mark) VALUES (1001, 'x002', 0);
    
    
    --事务提交
    COMMIT;
    View Code

    二. 数据操作

    1.求出目前总分最高的系名及其积分。

    SELECT s.department,sum(g.mark)
    FROM sporter s,grade g
    WHERE s.sporterid=g.sporterid
    GROUP BY s.department
    HAVING SUM(g.mark)=(select max(sum(g.mark)) from sporter s,grade g
                        where s.sporterid=g.sporterid group by s.department);
    View Code

                     

    2. 找出在 一操场比赛的各项目名称及其冠军的姓名

    SELECT i.itemname,s.name
    FROM sporter s,item i,grade g,(
        select i.itemid iid,max(g.mark) max from item i,grade g
        where i.itemid=g.itemid and i.location='一操场' group by i.itemid) temp
    WHERE s.sporterid=g.sporterid 
    AND i.itemid=g.itemid 
    AND i.location='一操场'
    AND i.itemid=temp.iid
    AND g.mark=temp.max;
    View Code

                  

     3. 找出参加了张三所参加过的项目的其他同学的姓名

    SELECT name
    FROM sporter
    WHERE sporterid IN(
        select sporterid from grade where itemid 
                    in(select itemid from grade where sporterid=(
                        select sporterid from sporter where name='张三')))
    AND name<>'张三';
    View Code

              

    4. 经查张三因为使用了违禁药品,其成绩都记0分,请在数据库中作出相应修改

    UPDATE grade SET mark=0
    WHERE sporterid=(select sporterid from sporter where name='张三');
    View Code

    5. 经组委会协商,需要删除女子跳高比赛项目

    DELETE FROM item WHERE itemname='女子跳高';
    View Code
  • 相关阅读:
    安装.NET FRAMEWORK 4.5安装进度条回滚之后发生严重错误 代码0x80070643
    C#远程时间同步助手软件设计
    Win7+Ubuntu双系统安装完成后时间不一致相差大概8小时
    php中类的不定参数使用示例
    php读写xml基于DOMDocument方法
    php写的非常简单的文件浏览器
    php封装的sqlite操作类
    phpstudy中apache的默认根目录的配置
    实现基于最近邻内插和双线性内插的图像缩放C++实现
    【STL深入理解】vector
  • 原文地址:https://www.cnblogs.com/zhaochangbo/p/8451303.html
Copyright © 2011-2022 走看看