精华内容
下载资源
问答
  • 实验内容及程序代码 1sch数据表的表结构如表71所示,sch表的数据如表72 表71 sch 表结构 字段名 数据类型 主键 外键 非空 唯一 自增 id INT(10) 就是 否 就是 就是 否 n ame VARCHAR(50) 否 否 就是 否 否 class ...
  • 这是我大三第一学期《数据库基础》这门课的实验报告,总共15个实验,我挑了几个比较重要的放在博客上,方便查看和复习,尤其是最近SSM后端开发,希望对大家,以及将来的我有所帮助! 本文是存储过程,通过书本和...

    这是我大三第一学期《数据库基础》这门课的实验报告,总共15个实验,我挑了几个比较重要的放在博客上,方便查看和复习,尤其是最近SSM后端开发,希望对大家,以及将来的我有所帮助!

    本文是存储过程,通过书本和网上的参考代码和讲解,大致把存储过程理解为一个自定义函数,在多次重复使用某一个功能的时候,可以把这个功能写成一个自定义函数(存储过程),这样使代码可读性增加,逼格也更高......


    实验要求

    在实验5数据库设计的基础上补充设计存储过程,并基于实验5建立的表和实验6插入的数据完成实验;

    1. 按要求设计完成如下功能的存储过程;

            ①查询平均分数在x到y范围内的学生信息。说明:该存储过程有两个参数;要求查询的学生信息包括学号、姓名、院系名称和平均分数。

             ②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩,并返回该学生的平均成绩。

    2. 自行再分别设计一个完成查询和完成操作功能的存储过程(在实验报告中要准确描述功能需求);

    3. 在客户端以存储过程和输入SQL语句的方式分别执行相同的查询或操作,比较使用和不使用存储过程的区别;


    全部总结链接

    SQL基础   (数据库、表、数据的增删改查、视图相关,以及所有实验报告源代码)

    游标 (类似C++ 的 指针)

    存储过程(类似 C++ 的自定义函数)

    触发器 (类似 自定义的陷阱,或者说是监听器,满足某个条件了执行某个方法)

    用户权限及权限管理 (类似Windows的多用户管理)

    并发控制 (了解多个用户同时对数据造成错误的情况 和 解决方法)

    数据恢复(当数据库数据丢失,相应的解决方法)


    实验过程

    第一大题

    1.1查询平均分数在x到y范围内的学生信息

    令x = 80 , y = 88

    代码:

    create procedure aaa         //创建存储过程 名字为aaa
    
    @s smallint, @e smallint     //传入两个参数@s(最低),@e(最高)
    
    As
    
        select 学生.学号,学生.姓名,院系.名称 as 院系名称,avg(选课.成绩) as 平均成绩 from 学生,选课,院系
    
            where 学生.学号 = 选课.学号 and 学生.院系 = 院系.编号   //以上查询每个学生的学号、姓名、院系名称、平均成绩
    
            group by 学生.学号,学生.姓名,院系.名称      //对学号进行分组 
    
            having avg(选课.成绩) between @s and @e;     //筛选平均分条件
    
            go   //暂停作用
    
    
    exec aaa 80,88; //执行
    
    
    drop procedure aaa  // 删除

    注:存储过程可以理解为C++中的自定义函数,先定义,然后通过主函数调用

     

    图 1 查询平均分数在80到88范围内的学生信息


    1.2更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩,并返回该学生的平均成绩。

    代码:

    Create  procedure  new_data    //创建存储过程 名字为new_data
    
    @sno char(8), @cno char(8), @grade smallint  //传入三个参数 学号、课程号、成绩
    
    as
    
        if(@sno is not null and @cno is not null)  //如果学号和课程号不为空
    
        begin
    
            update 选课 set 成绩 = @grade   //更新这个学生这门课的成绩
    
            where 选课.学号 = @sno and 选课.课程编号 = @cno;
    
    
            select 选课.学号,avg(选课.成绩) as 平均成绩
    
            from 选课        //然后在查询这个学生的平均分
    
            where 选课.学号 = @sno
    
            group by 选课.学号;
    
        end
    
        go
    
    exec new_data '2000278','1156',99;  //执行
    
    drop procedure new_data  //删除

     

    注:为了不给后续实验造成干扰,所以我手动插入了这一个数据

     

    图 2   第1.2题更新前 成绩为80分

    然后执行代码,因为这个学生只有这一门课,所以平均分就是99分

     

    图 3  更新成绩 输出平均分

     

    图 4  第1.2题更新后  成绩为99分


    第二大题

    自行再分别设计一个完成查询和完成操作功能的存储过程

    2.1完成查询功能

    功能:输入一个学生的学号,输出其学号、姓名、性别、生源、院系名称和状态

    代码:

    create  procedure  new_find //创建存储过程 名字为new_find
    
    @sno char(8)    //参数
    
    as
    
        if(@sno is not null)    //如果主键不为空
    
        begin
    
            select 学生.学号,学生.姓名,学生.性别,学生.生源,院系.名称,学生.状态
    
            from 学生,院系
    
            where 学生.院系 = 院系.编号 and 学生.学号 = @sno
    
        end
    
    go
    
    exec new_find '2000012'    //执行
    
    drop procedure new_find    //删除

     

    图 5  查询学号为2000012的学生信息


    2.2完成操作功能

    功能:新增一门课程,插入到课程表

    代码:

    create  procedure  new_class   //创建名为new_class的存储过程
    
    @cno char(8), @cname char(20), @ctea char(8), @time smallint, @xz char(10)  //参数
    
    as
    
        if(@cno is not null)   //如果主键不为空
    
        begin
    
            insert 课程 values('1000','不知名的高级课程','100001',2,'专业基础');  //插入
    
        end
    
    go
    
    exec new_class '1000','不知名的高级课程','100001',2,'专业基础'   //执行
    
    drop procedure new_class   //删除

     

    图 6 更新前的课程

     

    图 7 运行截图

     

    图 8 更新后 多了一门插入的课


    第三大题

    注:把2.2题的代码拿来用,发现存储过程的代码就像是C++中的自定义函数,可以接受若干个参数,来实现需要的功能。那种多次执行某一个功能的时候,收益最大。

     

    图 9 存储过程 代码

     

    图 10  普通查询代码

    展开全文
  • 一、实验目的 1.了解存储过程的概念、优点 2.熟练掌握创建存储过程的方法 3.熟练掌握存储过程的调用方法 4.了解触发器的概念、优点 5.掌握触发器的方法和步骤 6.掌握触发器的使用
  • 存储过程及触发器的实验报告

    千次阅读 2019-03-17 21:48:09
    实验目的:进一步了解关于存储过程和触发器的定义及实现 实验名称:存储过程、触发器的定义以及验证 实验内容:完成以下关于存储过程和触发器的定义以及验证。 1.[例7.50] 输入某个同学的学号,统计该同学的平均...

    实验目的:进一步了解关于存储过程和触发器的定义及实现

    实验名称:存储过程、触发器的定义以及验证

    实验内容:完成以下关于存储过程和触发器的定义以及验证。

    1.[例7.50] 输入某个同学的学号,统计该同学的平均分。

    CREATE PROCEDURE proStudentByNo1(sNo char(7))

    BEGIN

            SELECT a.studentNo, studentName, avg(score)

            FROM Student a, Score b

            WHERE a.studentNo=b.studentNo

                  AND a.studentNo=sNo

            GROUP BY a.studentNo, studentName;

    END

    执行该存储过程:call proStudentByNo1('0800001');

    2.输入某个同学的学号,统计该同学的平均分,并返回该同学的姓名和平均分。

    CREATE PROCEDURE proStudentByNo21(@sNo char(7), @sName

    varchar(20) OUTPUT,  @avg numeric(5, 1) OUTPUT )

    AS

    BEGIN      

         SELECT @sName=studentName

         FROM Student   WHERE studentNo=@sNo

         SELECT @avg=avg(score)

         FROM Score   WHERE studentNo=@sNo

         GROUP BY studentNo

    END

    执行存储过程proStudentByNo2 1

    DECLARE  @sNamevarchar(20), @avg numeric(5, 1)

    EXECUTE proStudentByNo21  '0800001',  @sName OUTPUT,  @avg OUTPUT

    SELECT  @sName, @avg

    把以上SQLServer版本的存储过程改为MYSQL版本并运行

    3. 创建触发器,当输入某个同学选课成绩时,如果他是少数民族人,其成绩自动加5分。

    CREATE TRIGGER ScoreIns BEFORE INSERT

    ON Score FOR EACH ROW

    BEGIN

          UPDATE Student SET NEW.score=NEW.score+5

          WHERE Student.studentNo=NEW.studentNo

    and Student.nation<>'汉族';

    END

    实验步骤:

    首先连接名为scoredbd的数据库,然后新建查询,输入SQL语句,运行。

    1. 输入学号为0800001,统计该同学的平均分。SQL语句及运行结果如下:

    执行存储过程:

    2、输入学号为0800001,统计该同学的平均分,并返回该同学的姓名和平均分。

    3. 创建触发器,当输入某个同学选课成绩时,如果他是少数民族人,其成绩自动加5分。

    (1)往Score表插入一条记录,要求studentNo值所对应学生在Student表的民族为’汉族’,查看Score表中刚才插入的记录的score值是否有变化。

    (2)再往Score表插入一条记录,要求studentNo值所对应学生在Student表的民族为’蒙古族’,查看Score表中刚才插入的记录的score值是否有变化。

     

     

    展开全文
  • 操作系统 存储管理实验报告实验报告中要有的全部资料的 ~~~
  • 存储过程实验

    2021-06-02 16:19:52
    实验名称 存储过程实验 实验地点 实验楼423 实验日期 一、实验目的及要求 掌握用户存储过程的创建操作。 掌握用户存储过程的执行操作。 掌握用户存储过程的删除操作。 二、实验环境 Windows10, SQL server2008 三...

    《数据库系统 》 实验报告

    实验名称 存储过程实验 实验地点 实验楼423 实验日期

    一、实验目的及要求

    1. 掌握用户存储过程的创建操作。
    2. 掌握用户存储过程的执行操作。
    3. 掌握用户存储过程的删除操作。

    二、实验环境
    Windows10,
    SQL server2008
    三、实验内容
    对应于“S+学号”数据库
    (1)创建一个无参存储过程StuScoreInfo,查询以下信息:班级,学号,姓名,性别,课程名称,考试成绩。
    在这里插入图片描述

    create procedure StuScoreInfo
    as
    select SC., Student.,Course.*
    from SC,Student,Course
    where SC.Sno=Student.Sno and SC.Con=Course.Cno

    (2)创建一个带参数的存储过程stu_info,该存储过程根据传入的学生编号在Student表中查询此学生的信息。
    在这里插入图片描述

    create procedure stu_info @SNO INT
    as
    select *
    from Student
    Where Sno=@SNO
    (3)创建一个带参数的存储过程StuScoreInfo2,该存储过程根据传入的学生编号和课程名称查询以下信息:班级,学号,姓名,性别,课程名称,考试成绩。
    在这里插入图片描述

    create procedure StuScorelnfo2
    @Sno as char(9),@Cname as char(40)
    as
    select [SC].Sno
    ,[SC].Con
    ,[Sname]
    ,[Cname]
    ,[Grade]
    from SC,Student,Course
    Where SC.Sno=Student.Sno
    and SC.Con=Course.Cno
    and Student.Sno=@Sno
    and Course.Cname=@Cname
    (4)编写存储过程,统计离散数学的成绩分布情况,即按照各分数段统计人数。
    在这里插入图片描述

    create procedure mathgrade
    @Cname varchar(20)=‘离散数学’
    as
    select Grade as ‘离散数学’,
    count (case when Grade > 90 then 1 end ) as ‘90分以上’,
    count (case when Grade > 80 and Grade <=90 then 1 end ) as ‘80~90分以上’,
    count (case when Grade > 70 and Grade <=80 then 1 end ) as ‘70~80分以上’,
    count (case when Grade > 60 and Grade <=70 then 1 end ) as ‘60~70分以上’,
    count (case when Grade <= 60 then 1 end ) as ‘60分以下’
    from SC,Course
    Where SC.Con=Course.Cno and Course.Cname = @Cname
    (5) 编写带参数的存储过程,根据传入的课程名称统计该课程的平均成绩。
    在这里插入图片描述

    create procedure AVGMARK
    @Cname varchar(40)
    as
    SELECT @Cname as ‘科目’,AVG(Grade) as ‘平均成绩’
    from SC,Course
    Where SC.Con=Course.Cno
    and Course.Cname = @Cname

    四、实验总结
    通过本次实验使我更加熟悉了数据库,还掌握了用户存储过程的创建操作、用户存储过程的执行操作、用户存储过程的删除操作的作用和使用方法,使我对数据库的使用更加熟练了。也大大增加了我对数据库的兴趣。

    展开全文
  • --5 创建存储过程,利用out参数实现存储过程的返回值:根据输入的员工编号,返回员工总工资。调用存储过程。 create or replace procedure procedure_5(empno_5 emp.empno%type, sal_5 out emp.sal%type) is begin ...
    --1 创建基于一个emp表的视图emp_view,并完成以下操作。
    create view emp_view
    as
    select * from scott.emp where sal>1000 
    with check option;
    
    --1_1 对创建的视图进行查询
    select * from emp_view;
    --1_1 向视图中添加一条工资小于1000的新员工信息,观察结果。
    insert into emp_view(empno,sal) values(8888,999);
    --结果是不能插入数据,ORA-0142:视图 WITH CHECK OPTION where 子句违规
    
    
    
    --2 创建无参存储过程:实现将员工中工资最低的三个人筛选出来,并把其job字段改为“试用期”。调用存储过程。
    create or replace procedure procedure_2
    is
    begin
      update emp e set e.job = '试用期' where e.empno in (
             select ee.empno from (select eee.* from emp eee order by sal) ee where rownum < 4);
       commit;
    end;
    --存储过程调用
    begin
      procedure_2;
    end;
    
    
    
    --3 创建无参存储过程,实现统计各部门的部门编号,员工人数、最高工资、最低工资,并输出(使用游标)。调用存储过程。
    create or replace procedure procedure_3
    is
      cursor cursor_3 is select e1.deptno, count(*), max(e1.sal), min(e1.sal) from emp e1 group by e1.deptno;
      deptno_3 emp.deptno%type;
      counts_3 number(4);
      max_sal_3 number(8);
      min_sal_3 number(8);
    begin
      open cursor_3;
      loop
        fetch cursor_3 into deptno_3,counts_3,max_sal_3,min_sal_3;
        exit when cursor_3%notfound;
        dbms_output.put_line('部门编号:'||deptno_3||' 部门人数:'||counts_3||' 部门最高工资:'||max_sal_3||' 部门最低工资:'||min_sal_3);
      end loop;
      close cursor_3;
    end;
    --存储过程调用
    begin
      procedure_3;
    end;
    
    
    
    --4 创建含有输入参数存储过程:向dept表添加新记录,查询是否编号已存在。
    create or replace procedure procedure_4(deptno_4 dept.deptno%type, dname_4 dept.dname%type, loc_4 dept.loc%type)
    is
      deptno_tmp dept.deptno%type;
    begin
      select deptno into deptno_tmp from dept where deptno = deptno_4;
      raise_application_error(-20001, '编号已存在!');
      exception
        when no_data_found then
          insert into dept(deptno, dname, loc) values(deptno_4, dname_4, loc_4);
          commit;
    end;
    --存储过程调用
    begin
      procedure_4(40, 'STUDENT', 'NEW YORK');
    end;
    
    
    
    --5 创建存储过程,利用out参数实现存储过程的返回值:根据输入的员工编号,返回员工总工资。调用存储过程。
    create or replace procedure procedure_5(empno_5 emp.empno%type, sal_5 out emp.sal%type)
    is
    begin
      select sal into sal_5 from emp where empno = empno_5;
      exception
        when no_data_found then
          raise_application_error(-20002, '查无此人!');
    end;
    --存储过程调用
    declare
      sal_tmp emp.sal%type;
    begin
      procedure_5(7902, sal_tmp);
      dbms_output.put_line('员工的工资为:'||sal_tmp);
      dbms_output.put_line('18102108李玉田');
    end;
    
    展开全文
  • 数据库实验报告 创建数据库 对数据库进行查询 T-SQL的创建 存储过程
  • 操作系统存储管理实验报告

    千次阅读 2020-01-20 09:47:42
    华中农业大学 学生实验报告 课程名称 计算机操作系统 实验名称 存储管理实验 实验类型 验证 设计 综合 创新 【实验目的】 实验目的: 通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的...
  • 数据库实验--存储过程实验

    千次阅读 2019-11-11 21:15:05
    1.掌握用户存储过程的创建操作。 2.掌握用户存储过程的执行操作。 3.掌握用户存储过程的删除操作。 二、实验环境 硬件平台:PC; 软件平台:Windows 10 / SQLSERVER 2008 R2; 三、实验内容 1.创建带输入参数的存储...
  •  了解触发器和存储过程的概念和作用,掌握创建和使用触发器、存储过程的方法,为后继学习和开发程序作准备。 二、实验属性  1、了解触发器、存储过程的作用。  2、了解并掌握触发器、存储过程的创建及...
  • 存储过程 第一部分:样例库的应用 1) 2) 3) 。。。。。。 第二部分:所选课题数据库的应用 1) 2) 3) 。。。。。。 参考文章
  • 实验6:存储过程实验

    2017-12-18 11:40:22
    实验是基于数据库系统概论(第五版)习题解析与实验指导(王珊、萨师煊)的,全部用软件SQL server2016编写,可运行。
  • 2019版数据库实验报告4—触发器和存储过程部分题的做法 前情提要,我写这个博客不是为了让同样要做这个报告的人照抄,而且这里的答案也不一定正确,如果有大佬发现错误,请千万帮忙在评论区更正,万分感谢!!!!!...
  • PAGE PAGE 1 欢迎下载 四实验内容及程序代码 1.sch数据表的表结构如表7.1所示sch表的数据如表7.2 表7.1 sch 表结构 字段名 数据类型 主键 外键 非空 唯一 自增 id INT(10) 是 否 是 是 否 name VARCHAR(50) 否 否 是...
  • #include #include #define NULL 0 #define getjcb(type) (type*)malloc(sizeof(type)) #define getsub(type) (type*)malloc(sizeof(type)) int num,num2; //要调度的作业数和要回收的区域数 int m=0;...
  • 数据库实验报告

    2016-01-03 10:49:01
    完善、正确的数据库实验报告。包括表的创建,检索、增删改语句的运用以及触发器、存储过程的使用
  • 8.存储过程实验 8.1存储过程定义 存储过程是一组为了完成特定功能的 SQL 语句集合。使用存储过程的目的是将常用或复杂的工作预先用 SQL 语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库...
  • 存储过程与触发器的创建实验 报告、个人总结 内附详细的实验步骤,包含SQL源码及操作截图 更加详细的介绍请查看liushendb的博客《数据库实验——存储过程与触发器的创建实验by SixInNight》
  • 计算机组成原理实验报告-寄存器实验 计算机硬件实验室实验报告 课程名称: 姓名 章道飞 学 号 30 班 级 0920542 成 绩 设备名称及软件环境 计算机、Proteus仿真软件、模型机仿真软件 实验名 称 寄存器实验 实验日期 ...
  • 广工的数据库原理实验报告(胡欣如版本)+源代码 包括四个实验: 数据库及基本表的建立; 查询数据库; 创建和使用视图、索引、存储过程; 数据库设计;
  • oracle实验报告

    2017-12-22 13:36:20
    中南大学oracle大型数据库的实验报告,包含五个实验内容。
  • 华中科技大学计算机组成原理实验报告(完整)+代码参考 ---自己写的 1.理解存储系统进行位扩展、字扩展的基本原理 2.能利用相关原理解决实验中汉字字库的存储扩展问题 3.并能够使用正确的字库数据填充。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,963
精华内容 14,385
关键字:

存储过程实验报告