数据库实验报告六_存储过程

数据库实验报告六_存储过程
数据库实验报告六_存储过程

HUNAN UNIVERSITY

数据库

实验报告

学生姓名

学生学号

专业班级

指导老师

2017 年5月24日

SELECT COUNT(*)INTO more90 FROM sc

WHERE cno = countcno AND grade >= 90;

/*将结果存入新表sumScore中*/

create table sumScore( scorestage char(10), number smallint);

insert into sumScore values('x<60', less60);

insert into sumScore values('60<=x<70', b60a70);

insert into sumScore values('70<=x<80', b70a80);

insert into sumScore values('80<=x<90', b80a90);

insert into sumScore values('x>=90', more90);

END$$

call sumScore(); /*调用上述存储过程*/

首先创建存储过程,然后再调用存储过程。结果如下:

(上述结果图截自Navicat软件)

可以看到,在stuinfo中新建了一个基本表sumscore,表中内容是数学课程成绩的各分数段的人数。

2、统计任意一门课的平均成绩。

代码如下:

DELIMITER $$

CREATE PROCEDURE `scoreAvg`()

BEGIN

declare curname char(40) default null; /*临时存放课程名*/

declare curcno char(4) default null; /*临时存放课程号*/

declare curavg float; /*临时存放平均成绩*/

declare mycursor cursor for /*定义游标*/

select cno, cname from course;

declare continue handler for not found set curavg=-1;

open mycursor; /*打开游标*/

fetch mycursor into curcno,curname; /*从结果集中取第一条记录到临时变量中*/ repeat /*重复取记录*/

select avg(grade) into curavg from sc where cno = curcno;

insert into scoreAvg values(curcno,curname,curavg); /*将结果存入新表scoreAvg中*/ fetch mycursor into curcno,curname;

until curavg=-1

end repeat;

close mycursor; /*关闭游标*/

END$$

call scoreAvg(); /*调用上述存储过程*/

首先创建存储过程,然后再调用存储过程。结果如下:

可以看到,在stuinfo中新建了一个基本表scoreavg,表中内容是各课程的平均成绩。

3、将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。

代码如下:

DELIMITER $$

CREATE PROCEDURE `changeRank`()/*改变成绩等级*/

BEGIN

declare chgrade char(1) default null; /*临时存放新的成绩等级*/

declare curcno smallint(6); /*临时存放课程号*/

declare curgrade int; /*临时存放成绩*/

declare flag int default 0;

declare mycursor cursor for

select cno,grade from sc; /*定义游标*/

declare continue handler for not found set flag=-1;

/*在sc表中新建一列,用于存放新的成绩等级*/

alter table sc add column(newgrade char(1));

open mycursor; /*打开游标*/

fetch mycursor into curcno,curgrade;

repeat /*当游标打开时进行下列循环处理*/

if curgrade < 60 then

set chgrade = 'E';

elseif curgrade < 70 then

set chgrade = 'D';

elseif curgrade < 80 then

set chgrade = 'C';

elseif curgrade < 90 then

set chgrade = 'B';

else

set chgrade = 'A';

end if;

update sc set newgrade=chgrade where cno=curcno and grade=curgrade;

fetch mycursor into curcno,curgrade;

until flag=-1 /*直到游标指向空记录*/

end repeat;

close mycursor; /*关闭游标*/

select * from sc;

END$$

SET SQL_SAFE_UPDATES=0; /*此步骤是必要的,否则将无法修改sc表*/

call changeRank(); /*调用上述存储过程*/

alter table sc

drop column newgrade;/*在调用该存储过程前,需要先执行此语句,因为在创建存储过程时已经在sc表中添加了这个属性*/

首先创建存储过程,然后再调用存储过程,结果如下:

附录:MySQL源代码

数据库实验报告

课程设计报告题目:数据库实验上机实验报告 专业班级:计算机科学与技术1210班 学号: U9 姓名:候宝峰 指导教师: 报告日期: 2015-06-04 计算机科学与技术学院

目录 一、基本SQL操作(部分选做)............. 错误!未定义书签。 1)数据定义........................... 错误!未定义书签。 2)数据更新........................... 错误!未定义书签。 3)用SQL语句完成下述查询需求:....... 错误!未定义书签。 二、DBMS综合运用(部分选做)............. 错误!未定义书签。 1)学习sqlserver的两种完全备份方式:数据和日志文件的脱机备份、系统的备份功能(选做)。......... 错误!未定义书签。 2)学习系统的身份、权限配置操作....... 错误!未定义书签。 3)了解SQLSERVER的存储过程、触发器、函数实现过程错误!未定义书签。 三、实验总结............................. 错误!未定义书签。 1)实验问题及解决..................... 错误!未定义书签。 2)实验心得........................... 错误!未定义书签。

一、基本SQL操作(部分选做) 1)数据定义 参照下面的内容建立自己实验所需的关系数据 创建三个关系: 商品表【商品名称、商品类型】 GOODS【GNAME char(20),GTYPE char(10)】 主关键字为(商品名称)。商品类型为(电器、文具、服装。。。) 商场【商场名称,所在地区】 PLAZA【PNAME char(20),PAREA char(20)】 主关键字为商场名称。所在地区为(洪山、汉口、汉阳、武昌。。。) 销售价格表【商品名称、商场名称、当前销售价格、目前举办活动类型】 SALE【GNAME char(20),PNAME char(20),PRICE FLOAT,ATYPE char(10)】主关键字为(商品名称、商场名称)。举办活动类型为(送券、打折),也可为空值,表示当前未举办任何活动。表中记录如(‘哈森皮靴’,‘亚贸广场’,200,‘打折’),同一商场针对不同的商品可能采取不同的促销活动。 create table goods(gname char(20) primary key,gtype char(10)); create table plaza(pname char(20) primary key,parea char(20)); create table sale (gname char(20), pname char(20), price FLOAT, atype char(10)check (atype in('送券','打折','')), primary key(gname,pname), foreign key(gname)references goods(gname), foreign key(pname)references plaza(pname)); 图1 goods表 图2 plaza表 图3 sale表 2)数据更新 (1)向上述表格中用sql语句完成增、删、个、改的操作;

数据库实验报告六_存储过程

HUNAN UNIVERSITY 数据库 实验报告 学生姓名 学生学号 专业班级 指导老师 2017 年5月24日

SELECT COUNT(*)INTO more90 FROM sc WHERE cno = countcno AND grade >= 90; /*将结果存入新表sumScore中*/ create table sumScore( scorestage char(10), number smallint); insert into sumScore values('x<60', less60); insert into sumScore values('60<=x<70', b60a70); insert into sumScore values('70<=x<80', b70a80); insert into sumScore values('80<=x<90', b80a90); insert into sumScore values('x>=90', more90); END$$ call sumScore(); /*调用上述存储过程*/ 首先创建存储过程,然后再调用存储过程。结果如下: (上述结果图截自Navicat软件) 可以看到,在stuinfo中新建了一个基本表sumscore,表中内容是数学课程成绩的各分数段的人数。 2、统计任意一门课的平均成绩。 代码如下: DELIMITER $$ CREATE PROCEDURE `scoreAvg`() BEGIN declare curname char(40) default null; /*临时存放课程名*/ declare curcno char(4) default null; /*临时存放课程号*/ declare curavg float; /*临时存放平均成绩*/ declare mycursor cursor for /*定义游标*/ select cno, cname from course;

数据库实验报告

数据库实验报告

武汉理工大学 学 生 实 验 报 告 书 实验课程名称 数据库系统概论 开 课 学 院 计算机科学与技术学院 指导老师姓名 学 生 姓 名 学生专业班级 学生学号 实验课成绩

2013 — 2014 学年第二学期实验课程名称:数据库系统概论 实验项目名称SQL SEVER 2000的系 统工具及用户管理 实验 成绩 实验者专业班 级 组别 同组者实验 日期 2014年4 月24日

第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000工具创建数据库、表、索引和修改表结构及向数据库输入数据、修改数据和删除数据的操作方法和步骤,掌握定义数据约束条件的操作。 二、实验基本原理与设计(包括实验方案设计,实 验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 实验内容和步骤: (1)熟悉SQL SEVER 2000的界面和操作。 (2)创建数据库和查看数据库属性。 (3)创建表、确定表的主码和约束条件。 (4)查看和修改表的结构。 (5)向数据库输入数据,观察违反列级约束时出现的情况。 (6)修改数据。 (7)删除数据,观察违反表级约束时出现的情况。 三、主要仪器设备及耗材 Windows XP SQL SERVER 2000

第二部分:实验调试与结果分析(可加页) 一、调试过程(包括调试方法描述、实验数据记录, 实验现象记录,实验过程发现的问题等) 没有错误 错误:未能建立与WORKEPLACE\XUMENGXING的链接SQL Server 不存在或访问被拒绝 原因:未启动数据库服务 二、实验结果及分析(包括结果描述、实验现象分 析、影响因素讨论、综合分析和结论等) 实验结果部分截图:

sql数据库试验九:T-SQL语言存储过程及数据库的安全性

实验九:T-SQL语言、存储过程及数据库的安全性 一、实验目的 1.掌握数据变量的使用; 2.掌握各种控制语句及系统函数的使用; 3.掌握存储过程的实现; 4.掌握混合模式下数据库用户帐号的建立与取消方法; 5.掌握数据库用户权限的设置方法; 6.掌握在企业管理器中进行备份、恢复操作的步骤; 二、实验学时 2学时 三、实验要求 1.了解T-SQL支持的各种基本数据类型及变量的使用; 2.了解T-SQL各种运算符、控制语句及函数的功能及使用方法; 3.掌握存储过程的编写和运行方法 4.熟悉数据库完全备份及恢复的方法; 5.了解SQL Server 2008系统安全; 6.熟悉数据库用户、服务器角色及数据库角色的用法 7.完成实验报告。 四、实验内容 以student数据库为基础数据,完成以下内容 1.变量及函数的使用: 1)创建局部变量@xh(学号)并赋值,然后输出数据表student中所有等于该值的学生的学号、姓名、性别、所属院系及年龄等信息; 2)将学号为200515008的学生的姓名赋值给变量@name; 3)计算学生信息表student中学生最高年龄和最低年龄之差,并将结果付给@cz;4)定义一函数,按系别统计当前所有学生的平均年龄,并调用该函数。 5)定义一函数,通过姓名查询某学生的学号、性别、年龄、系别、选修课程名及成绩。 2.编写并执行存储过程 ,查询以下信息:班级、学号、姓名、pr_StuScore创建一个无参存储过程(1).性别、课程名称、考试成绩。 (2)创建一个带参数的存储过程stu_info,该存储过程根据传入的学生编号在student表中查询此学生的选修课程及成绩信息。 (3)创建一个带参数的存储过程StuScoreInfo2,该存储过程根据传入的学生编号和课程名称查询以下信息:班级、学号、姓名、性别、课程名称、考试成绩。

数据库实验5实验报告

淮海工学院计算机工程学院实验报告书 课程名:《数据库原理及应用》 题目:数据库的完整性 班级:软件132 学号:2013122907 姓名:莹莹

一.目的与要求 1.掌握索引创建和删除的方法; 2.掌握创建视图和使用视图的方法; 3.掌握完整性约束的定义方法,包括primary key、foreign key等。 二.实验容 1.基于前面建立的factory数据库,使用T-SQL语句在worker表的“部门号”列上创建一个非聚集索引,若该索引已经存在,则删除后重建。 2.在salary表的“职工号”和“日期”列创建聚集索引,并且强制唯一性。 3.建立视图view1,查询所有职工的职工号、、部门名和2004年2月工资,并按部门名顺序排列。 4.建立视图view2,查询所有职工的职工号、和平均工资; 5.建立视图view3,查询各部门名和该部门的所有职工平均工资; 6.显示视图view3的定义; 7.实施worker表的“性别”列默认值为“男”的约束; 8.实施salary表的“工资”列值限定在0~9999的约束; 9.实施depart表的“部门号”列值唯一的非聚集索引的约束; 10.为worker表建立外键“部门号”,参考表depart的“部门号”列。 11.建立一个规则sex:性别=’男’ OR 性别=’女’,将其绑定到“性别”上; 12.删除上面第7、8、9和10建立的约束; 13.解除第11题所建立的绑定并删除规则sex。 三.实验步骤 1 USE factory GO --判断是否存在depno索引;若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='depno') DROP INDEX worker.depno GO --创建depno索引 CREATE INDEX depno ON worker(部门号) GO EXEC sp_helpindex worker GO 2 USE factory GO --判断是否存在no_date索引;若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='no_date') DROP INDEX salary.no_date GO --创建no_date索引

数据库实验报告(一)

滨江学院 题目数据库实验报告(一) 学生姓名 学号 系部电子工程系 专业通信工程 指导教师林美华 二O一三年十二月十八日

实验一数据库的定义实验 本实验需要2学时。 一、实验目的 要求学生熟练掌握和使用SQL、SQL Server企业管理器创建数据库、表、索引和修改表结构,并学会使用SQL Server 查询分析器接收语句和进行结果分析。 二、实验内容 1 创建数据库和查看数据库属性。 2 创建表、确定表的主码和约束条件。为主码建索引。 3 查看和修改表结构。 4 熟悉SQL Server企业管理器和查询分析器工具的使用方法。 三、实验步骤 1 基本操作实验 (1) 使用企业管理器按教材中的内容建立图书读者数据库。 (2)在企业管理器中查看图书读者数据库的属性,并进行修改,使之符合要求。 (3)通过企业管理器,在建好的图书借阅数据库中建立图书、读者和借阅3个表,其结构为; 图书(书号,类别,,作者,书名,定价,作者). 读者(编号,,单位,性别,). 借阅(书号,读者编号,借阅日期) 要求为属性选择合适的数据类型,定义每个表的主码.是否允许空值和默认值等列级数据约束。 (4)在企业管理器中建立图书、读者和借阅3个表的表级约束.每个表的主码约束.借阅表与图书表间、借阅表与读者表之间的外码约束,要求按语义先确定外码约束表达式.再通过操作予以实现.实现借阅表的书号和读者编号的惟一性约束:实现读者性别只能是“男”或“女”的Check(检查)约束。 2 提高操作实验 (一) 将教材中用SQL描述的建立学生--课程操作.在SQL Server企业管理器中实现。库中表结构为: 学生(学号,,年龄,性别,所在系). 课程(课程号,课程名,先行课). 选课(学号,课程号,成绩) 要求: 1)建库、建表和建立表间联系。, 2)选择合适的数据类型。 3)定义必要的索引、列级约束和表级约束. 四、实验方法 l创建数据库 (1)使用企业管理器创建数据库的步骤 1)从“开始”菜单中选择;“程序”“Microsoft SQL2000”“企业管理器”.

实验6 数据库实验——存储过程和触发器

实验6 存储过程与触发器 一、实验目的 1、加深与巩固对存储过程与触发器概念的理解。 2、掌握触发器的简单应用。 3、掌握存储过程的简单应用。 二、实验内容 一)存储过程: 1、创建一存储过程,求l+2+3+…+n,并打印结果。 CREATE PROCEDURE addresult AS DECLARE @n int=10,/*最后一个数*/ @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+、、、+n的结果就是:' PRINT @result RETURN(@result) END GO 2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。EXEC addresult

3、修改上述存储过程为addresult1,使得@n为输入参数,其具体值由用户调用此存储过程时指定。 CREATE PROCEDURE addresult1 @n int=10 /*最后一个数*/ AS DECLARE @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+、、、+n的结果就是:' PRINT @result RETURN(@result) END GO 4、调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。 EXEC addresult1 100 5.修改上述存储过程为addresult2,将@n参数设定默认值为10,并改设@sum为输出参数,让主程序能够接收计算结果。

数据库实验报告完整

华北电力大学 实验报告 | | 实验名称数据库实验 课程名称数据库 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:2015/7/9

《数据库原理课程设计》课程设计 任务书 一、目的与要求 1.本实验是为计算机各专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力 而设置的实践环节。通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。 为后继课程和毕业设计打下良好基础。 2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。 3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界 面设计和软件调试等各方面的能力。是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。 二、主要内容 针对一个具有实际应用场景的中小型系统(见题目附录)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。大致分为如下步骤: 1. 理解系统的数据库需求,分析实体及实体间联系,画出E-R图: 1)分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。 2)设计实体之间的联系,包括联系类型和联系的属性。最后画出完整的E-R图。 2.根据设计好的E-R图及关系数据库理论知识设计数据库模式: 1)把E-R图转换为逻辑模式; 2)规范化设计。使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。 3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。 4)用SQL语言完成数据库内模式的设计。 3.数据库权限的设计: 1)根据系统分析,完成授权操作; 2)了解学习收回权限的操作。 4.完成用户界面的设计,对重要数据进行加密。

数据库实验报告五

数据库原理及应用实验报告(五) 实验题目:过程 专业:数字媒体技术 班级:1306班 姓名:***************

运城学院实验报告 专业:数字媒体技术系(班):计算机科学与技术系1306班姓名:************* 课程名称:数据库原理及应用 实验项目:过程实验类型:验证型指导老师:***** 实验地点:软件实验室一时间:2015年12月10日 一、实验目的: 掌握用户存储过程的创建,了解一些常用的系统存储过程,以及调用和删除过程,并熟悉使用存储过程来进行数据库应用程序的设计。 二、实验内容: (1)基于学生—课程数据库创建一存储过程,用于检索数据库中某个专业学生的人数,带有一个输入参数,用于指定专业。执行结果如图二所示: create procedure pro_s @stu_sdept varchar(5) //这是带参数的过程,参数不用()括 As select count(*) as 人数from student where sdept = @ stu_sdept 1、存储过程的执行 execute pro_s 实参//实参可以是变量,也可以是常量 (2)基于学生-课程数据库创建一存储过程,该过程带有一个输入参数,一个输出参数。其中输入参数用于指定学生的学号,输出参数用于返回学生的平均成绩。执行结果如图四所示: create procedure pro_stu @stu_sno char(6),@stu_avg float output //这个带output的是输出参数as select @stu_avg = avg(grade) //将平均值给了变量 from student,sc where student. sno = sc. sno and student.sno=@stu_sno 1.存储过程的执行 declare @stuavg float //用于存放输出变量内容的 execute pro_stu ‘1000’,@stuavg output// 输出参数必须是变量 select @stuavg //看结果 (3)在pubs数据库中建立一个存储过程,用于检索数据库中某一价位的图书信息。参数有两个,用

数据库实验报告5

1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5分) exec sp_rename v_spj, v_spj_三建; 2.针对SPJ数据库,创建并执行如下的存储过程:(共计35分) (1)创建一个带参数的存储过程—jsearch。该存储过程的作用是:当任意输入一个工 程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME) 以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。(10 分) create proc jsearch @jno char(2) as select sname, pname, jname from s,p,j,spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and spj.jno=@jno; 执行: exec jsearch 'J1'

(2)使用S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执 行该存储过程时,将返回北京供应商的所有信息。(10分) 创建加密存储过程: create proc jmsearch with encryption as select * from s where s.city='北京'; sp_helptext jmsearch; (3)使用系统存储过程sp_helptext查看jsearch, jmsearch的文本信息。(5分) 用系统存储过程sp_helptext查看jsearch: exec sp_help jsearch; exec sp_helptext jsearch;

数据库函数、存储过程实验报告

南京信息工程大学数据库系统实验(实习)报告实验(实习)名称数据库系统实验4 实验(实习)日期2016-6-7 得分指导教师顾韵华 系计软院专业计科年级2014级班次计科 3 班姓名仇彤学号20141308071 一、实验目 1、掌握T-SQL函数及其调用方法。 2、掌握存储过程的定义及执行方法。 3、掌握有参存储过程的定义及执行方法。 4、掌握C#访问数据库的方法。 二、实验内容 1、使用系统函数(DA TEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。(P299"思考与练习") 2、编写T-SQL程序,利用系统转换函数,检索总订购商品数在10~19的客户姓名。 3、定义函数RectArea,计算一个长方形的面积(长、宽作为函数的参数)。 4、在SPDG数据库中定义函数,根据商品编号,查询该商品的名称;(函数名为QryGoods)。 5、在SPDG数据库中定义存储过程GetSPBH,返回所有商品编号,并使用EXEC语句执行存储过程。 6、在SPDG数据库中定义存储过程KH_NJ_Qry,返回江苏南京的客户编号、姓名、及其订购商品的编号、商品名称和数量,并使用EXEC语句执行存储过程。 7、在SPDG数据库中定义存储过程SP_FOOD_Qry,返回食品类商品编号、商品名称及其订购客户编号、姓名、订购数量,并使用EXEC语句执行存储过程。 8、定义存储过程SP_Total,查询指定商品编号的总订购数。并执行该存储过程。 9、定义存储过程SP_TotalCost,查询指定商品编号的总订购金额。并执行该存储过程。 10、定义存储过程SP_Name_Qry,查询指定商品名称的商品信息。并执行该存储过程。 11、定义存储过程SP_Name_Qry1,查询指定商品名称的商品信息;若存在,输出1;否则,输出0。并执行该存储过程。 12、定义存储过程SP_Name_Qry2,查询指定商品名称的商品信息;若存在,用输出参数传出1;否则传出0。 三、实验过程与结果 1、使用系统函数(DATEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。(P299"思考与练习") 设计的SQL语句如下: print datediff(d,getdate(),'2020-1-1') 执行结果:

数据库实验报告

北京邮电大学国际学院 _11-12_学年第_二_学期实验报告 课程名称:数据库技术与应用 项目名称:基本SOL语句的用法 项目完成人: 姓名:武学超学号: 指导教师:____ ____韩祥斌_____________ 日期: 2012 年 3 月 16 日

目录 一、实验目的............................................. 错误!未定义书签。 1. 结合数据库技术与应用教学的基本知识,理解并掌握基本SQL语句的用法。错误! 未定义书签。 二、实验内容............................................. 错误!未定义书签。 1. 回顾基本SQL语句的语法............................... 错误!未定义书签。 2. 回顾MySQL的基本用法................................. 错误!未定义书签。 3. 初始化数据库,将文件中的内容复制并粘贴到MySQL-Front 的SQL编辑器中,然 后点击“运行”........................................... 错误!未定义书签。 4. 了解实验用例的背景,并进行如下SQL语句的训练:....... 错误!未定义书签。 三、实验环境............................................. 错误!未定义书签。 1. 32位Xp系统下 Mysql 程序(命令行).................. 错误!未定义书签。 四、实验结果............................................. 错误!未定义书签。 1. 问题讨论............................................. 错误!未定义书签。 2. 试验心得............................................. 错误!未定义书签。

实验七 存储过程及应用完整版含截图

实验七存储过程及应用 1.实验目的 1、理解存储过程的概念。 2、掌握存储过程的使用方法。 2.实验要求 1.建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值): (1)按要求设计完成如下功能的存储过程。 ①查询平均分数在x到y范围内的学生信息。 说明: 该存储过程有两个参数; 要求查询的学生信息包括学号、姓名、院系名称和平均分数。 ②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩,并返回该学生的平均成绩。 (2)自行再分别设计一个完成查询和完成操作功能的存储过程(在实验报告中要准确描述功能需求)。 (3)在客户端以存储过程和输入SQL语句的方式分别执行相同的查询或操作,比较使用和不使用存储过程的区别。 3、实验过程 (1)①查询平均分数在x到y范围内的学生信息 create procedure cc711@x smallint,@y smallint as select学生.学号,学生.姓名,院系.名称,学生.平均成绩 from学生join院系on学生.院系=院系.编号 where学生.平均成绩between@x and@y EXECUTE cc71160,90

②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩,并返回该学生的平均成绩 create procedure mcc712@xh nchar(8),@kcbh nchar(8),@cj int as update选课set成绩=@cj where学号=@xh and课程编号=@kcbh declare@pjcj int select@pjcj=AVG(成绩)from选课where学号=@xh return@pjcj declare@avg int execute@avg=mcc7122,5,98 print'更新后平均成绩:'+str(@avg,6)

数据库实验报告

数据库实验报告 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

课程名称:数据库原理与应用 实验内容:数据库安全性管理 作者所在系部:网络工程系 作者所在专业:网络工程 作者所在班级: B13521 作者姓名:李文阳 作者学号: 指导教师姓名:王振夺 北华航天工业学院教务处制 实验四数据库安全性管理 一、实验目的 1、理解数据库的安全性机制; 2、掌握SQL Server 2005的验证模式、登录管理、用户管理、角色 管理以及权限管理; 二、实验内容 (一)附加上次实验所创建的数据库“db_Library”,并回顾该库的数据表信息。 (二)设置SQL Server的安全验证模式,并以两种方式尝试登录。

(三)登录账户管理 1、以管理员身份登录SQL Server,修改sa的密码。 2、使用SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。 3、使用SQL语句来修改上述登录账户的密码。 4、禁用上述登录账户连接SQL Server,并进行验证。 (四)数据库用户管理 1、使用SQL语句添加db_Library数据库用户User2,其登录账户为上题所创建的SQL Server登录账户,使用默认dbo架构,并赋予该用户能够运行Select语句的权限。 (五)权限管理 1、使用SSMS将创建数据表和创建视图的权限授予User2。 2、使用SQL语句将对db_Library数据库中图书信息表的查询、插入、以及对书名和作者列的修改权限授予用户User2。 3、使用SSMS收回User2创建数据表和创建视图的权限。 4、使用SQL语句收回User2修改书名和作者列的权限。 (六)删除上述所建立的数据库用户以及登录账户。 三、实验步骤 主要实现的SQL语句。 使用T-SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。

数据库原理实验报告(5)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验五嵌套子查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)掌握多表查询和子查询的方法。 (2)熟练使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 (3)理解不相关子查询和相关子查询的实现方法和过程。 2.实验要求 (1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下查询操作: a)查询选修了数据结构与算法的学生学号和姓名。 b)查询07294002课程的成绩低于孙云禄的学生学号和成绩。 c)查询和孙云禄同年出生的学生的姓名和出生年份。 d)查询其他系中年龄小于数学与信息技术学院年龄最大者的学生。 e)查询其他系中比数学与信息技术学院学生年龄都小的学生。 f)查询同孙云禄数据库原理与应用课程分数相同的学生的学号和姓名。 g)查询选修了07294002课程的学生姓名。 h)查询没有选07294002课程的学生姓名。 i)查询同时选修了07295006和07295007课程的学生的学号。 j)查询所有未授课的教师的工号、姓名和院系,结果按院系升序排列。 扩展实验: a)查询和10060101选修的全部课程相同的学生的学号、课程号、期末考试 成绩。 b)查询至少选了10060101选修的全部课程的学生的学号。 c)查询年龄比所在院系平均年龄小的学生的学号、姓名、年龄、院系,按 院系和年龄升序排列。 d)查询每门课都在80分以上的学生的学号和姓名。 (2)在SQL Server Management Studio中新建查询,尽可能用多种形式表示实验中的查询语 句,并进行比较。 (3)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 将调试成功的T-SQL语句写在下方(标明题号)。

数据库实验报告

实验一 SQL Server基本使用与数据定义一.实验目的 1.掌握“服务管理器”、“企业管理器”及“查询分析器”基本使用方法;2.熟悉数据库建模及E/R图的画法; 3.掌握SQL Server 中数据库、及数据表的建立与管理方法; 4.掌握数据的导入/导出及数据库备份/还原方法。 二.实验内容 一、SQL Server 基本使用 1.启动SQL SERVER。 2.注册服务器 3.企业管理器属性 4.查询分析器介绍 5.查看数据库及浏览表中记录 二、数据库的建立与管理 1.数据库建模 2.启动、并打开SQL Server 3.使用图形界面创建数据库和表 4.使用查询分析器创建表 5.数据库的备份与还原

实验二 SQL查询 一.实验目的: 1.掌握SQL语言中SELECT语句的多种查询方式。 2.掌握对表建立与删除索引的方法。 3.掌握聚焦函数的使用方法。 4.掌握集合查询方法。 二.实验内容: 1.建立与删除[索引]的方法。 在各表中,分别按代理商编号、客户编号、产品编号及订单编号建立索引。 CREATE INDEX 代理商No ON 代理商(代理商编号) CREATE INDEX 客户No ON 客户(客户编号) CREATEINDEX产品No ON产品(产品编号) CREATEINDEX订单No ON订单(订单编号) 2.单表查询, ①从产品表中查询现有产品的库存量。 SELECT COUNT(*) FROM产品 ②从客户表中查询“王五”的地址及代理商编号。 SELECT地址,代理商编号 FROM客户 WHERE姓名='王五' ③从代理商表中查询代理商“惠普”的提成金额。 SELECT提成金额 FROM代理商 WHERE姓名='惠普' ④从订货项目表中查询编号为“444”的订单所订购的商品编号及数量。 SELECT产品编号,订购数量 FROM订货项目 WHERE订单编号='444' ⑤分别求代理商和客户的总数。 SELECT COUNT(*)代理商数 FROM代理商 SELECT COUNT(*)客户数 FROM客户 ⑥从订货项目表中,查询编号为0033的产品定货总数量。 SELECT COUNT(*)订货总数量 FROM订货项目 WHERE订单编号='0033' 3.多表查询 ①查询编号为300的客户通过的代理商的姓名和地址。 SELECT代理商.姓名,代理商.地址

数据库实验10存储过程

实验10存储过程 一、实验目的 1. 掌握用户存储过程的创建操作。 2. 掌握用户存储过程执行操作。 3. 掌握用户存储过程的删除操作。 二、相关知识 存储过程:SQL Server 提供的一种将一些固定操作集中起来,由SQL Server 数据库服务器来完成的功能。 存储过程是机构编译和优化后存储在数据库服务器中的SQL语句,只需要调试即可使用。存储过程的优点有: 1)让服务器端能够快速执行某些SQL语句。 2)减少了服务器和客户端之间的数据流的。 3)方便实施企业规则。 4)封装后的过程对数据库保护具有一定安全性。 三、实验内容 1. 创建带输入参数的存储过程。 2. 执行所创建的存储过程。 3.删除所有新创建的存储过程。 四、实验步骤 (一) 1. 创建带输入参数的存储过程。 1)启动SQL Server Management Studio,选择要操作的数据库,如“学生选课”数据库,然后打开新建查询窗口。 2)在查询命令窗口中输入创建存储过程的CREATE PROCEDURE 语句,如图14.11.1所示: 这里,我们创建一个带输入参数的存储过程proc_xsqk1,其中的输入参数用于接收课程号,默认值为“001”,然后在“选课表”中查询该课程成绩不及格的学生学号,接着在“学生表”中查找这些学生的基本信息,包括学号、姓名、性别和联系电话信息,最后输出。 图14.11.1在查询窗口中创建存储过程 3)点击快捷工具栏上的快捷铵钮“√”,对输入的CREATE PROCEDURE 语句进行语法分析。 如果有语法错误,则进行修改,直到没有语法错误为止。 4)点击快捷工具拦上的快捷按钮“!”,执行CREATE PROCEDURE 语句。 5)查看生成的存储过程,如图14.11.2。

北邮大三下数据库实验报告5

北京邮电大学 实验报告 课程名称数据库系统原理 实验内容实验5 数据库完整性与安全性实验 班级2013211***姓名 *** 指导老师成绩_________ 2016年05月20日

实验5 数据库完整性与安全性实验 实验目的: 1.通过对完整性规则的定义实现,熟悉了解SQL SERVER中完整性保证的规则和实现方 法,加深对数据完整性的理解。 2.通过对安全性相关内容的定义,熟悉了解SQL SERVER中安全性的内容和实现方法, 加深对数据库安全性的理解 实验内容 完整性实验与要求: 1.分别定义数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束; 定义主键: 方法一:使用Enterprise Manager设置主键(以book表为例) ①光标移到book表的位置,右键->设计 ②在你要选的属性列右键->设置主键,完成。

方法二:使用SQL语句。 ①右键数据库,新建查询 设置外键: 方法一:使用Enterprise Manager设置外键(以student表为例) ①单击student表,鼠标移到“键”文件夹,单击右键,选择“新建外键”。 ②选择“表和列规范”进行设置

③我们想在student表设置class_id属性为外键,按照下图选择,点击确定,保存即可。 方法二:SQL语句 新建查询,输入如图语句。

2.向学生表插入具有相同学号的数据,验证其实体完整性约束; Student表的主键是学号,所以不能插入有相同学号的学生。 3.向学生表中插入一条数据,班级号是学生表的外键,验证参照完整性约束; Class表中没有“2013211302”这个班级,所以无法插入。改变班级号为class表中存在的,则能够进行插入,结果如下: 4.删除教师表中的所有数据,验证参照完整性约束;

数据库原理课程设计报告报告实验创建存储过程与触发器

存储过程与触发器实验日期和时间: 2016 年 5 月13 日、星 期 五第节 实验室:DJ2-信息管理实验室 班级:学号:姓名: 实验环境: 1.硬件:笔记本电脑 2.软件:SQL Server 2012 实验原理: 存储过程概念:存储过程是事先编好的,存储在数据库中的一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。存储过程可以接受用户的输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言(DDL)和数据操作语言(DML)语句,然后返回输入参数。 触发器概念:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 实验任务: 此作业成绩得分根据你完成的任务的难度和数量评分,完成后在实验室给老师演示验收,课后提交电子版报告。如额外完成自拟题目应当事先将所拟题目提交给老师或在报告中明确标注题意。 假定有学校的图书馆管理信息系统,可以用于日常管理书库和同学们的借还书工作。 以下列出参考的库表情况: 根据管理的业务需求来分析,该管理信息系统的数据库应至少包括如下数据表:(打★号的是必须有的表) 1.★图书现有库存表。作用:记录图书的现有库存情况。至少包括:书号、书名、 作者、简介、类别、价格、出版社、出版日期、现有库存数量、最小库存量、库 存总量、库存位置等。 2.★读者信息表。作用:记录读者信息。至少包括:读者编号、证件类型、证件号 码、姓名、性别、职业(可填写教师、学生、教工、其它……)、所属单位、地址、 联系电话等。 3.★借书记录表。作用:记录借书情况,以及是否归还。至少包括:借阅ID(主键, 可设置为自动编号)、书号、读者编号、借阅数量、借阅日期、是否归还、管理员 编号……等。 4.★还书记录表。作用:记录还书情况。至少包括:还书ID(主键,可设置为自动 编号)、书号、读者编号、归还数量、归还日期、是否超期(超过假设45天为超 期)、超期天数、管理员编号……等。(附:为简化操作,续借可视为归还后再借)。 5.管理员信息表。作用:记录负责管理书库和借书还书工作的管理员信息。至少包 括:管理员编号、职工编号(在职工档案表中的职工编号)、用户名、密码、管理

数据库实验七实验报告

一.实验目的 熟练掌握SQL Server中变量、数据类型和表达式的定义和使用,掌握Transact—SQL中常用系统函数的使用,掌握流程控制语句和结构化程序设计方法,掌握分行处理表中记录机制以及利用游标对数据进行查询、修改和删除的方法。 二.实验准备 1.物理准备:安装了SQL sever的计算机一台,连接服务器;2.实验指导书:《数据库技术与应用》蓝皮书; 3.理论准备:掌握以下基础知识: (1)T ransact—SQL中变量、数据类型和表达式的使用。 (2)T ransact—SQL中常用系统函数的使用。 (3)利用程序控制语句实现结构化程序设计。 (4)利用游标分行处理机制实现数据的定位、查询、修改和删除三.实验题目 (1)定义局部变量@max,@min接收学生表studinfo中的最大出生日期和最小出生日期的查询结果。 实验过程:编写Transact—SQL语句 declare @max char(30),@min char(30) select @max=max(出生日期) , @min=min(出生日期) from student_xuesheng select @max as 最大,@min as 最小 运行结果:

(2)在学生表studinfo中增加一个字段,利用系统函数与出生日期信息计算每个同学的年龄。 实验过程:编写Transact—SQL语句 分析:先增加年龄字段,再将函数运算之后的年龄添加进去 --alter table student_xuesheng --add 年龄 int --GO if exists(select 出生日期 from student_xuesheng where 出生日期 is not null) begin update student_xuesheng set 年龄=year(getdate())-year(出生日期) end 运行结果:

(完整版)数据库实验报告

数据库实验报告姓名学号

目录 一.实验标题:2 二.实验目的:2 三.实验内容:2 四.上机软件:3 五.实验步骤:3 (一)SQL Server 2016简介3(二)创建数据库 4 (三)创建数据库表 7(四)添加数据17 六.分析与讨论: 19

一.实验标题: 创建数据库和数据表 二.实验目的: 1.理解数据库、数据表、约束等相关概念; 2.掌握创建数据库的T-SQL命令; 3.掌握创建和修改数据表的T-SQL命令; 4.掌握创建数据表中约束的T-SQL命令和方法; 5.掌握向数据表中添加数据的T-SQL命令和方法三.实验内容: 1.打开“我的电脑”或“资源管理器”,在磁盘空间以自己的姓名或学号建立文件夹; 2.在SQL Server Management Studio中,使用create database命令建立“学生-选课”数据库,数据库文件存储在步骤1建立的文件夹下,数据库文件名称自由定义; 3.在建立的“学生-选课”数据库中建立学生、课程和选课三张表,其结构及约束条件如表所示,要求为属性选择合适的数据长度; 4.添加具体数据;

四.上机软件: SQL Server 2016 五.实验步骤: (一)SQL Server 2016简介 1.SQL Server 2016的界面 2.启动和退出SQL Server 2016 1)双击图标,即出现SQL Server2016的初始界 2)选择“文件”菜单中的“退出”命令,或单击控制按钮中的“×”即可 注意事项: 1.在退出SQL Server 2016之前,应先将已经打开的数据库进行保存, 2.如果没有执行保存命令,系统会自动出现保存提示框,根据需要选择相应的操作

相关文档
最新文档