数据库实验5实验报告教材

合集下载

数据库原理与应用实验五报告

数据库原理与应用实验五报告

数据库系统概论实验报告(五)姓名:田垒班级学号: 2010080405226学院:信息学院专业:计算机科学与技术2010年12月12日实验五、用户自定义函数一、实验目的学习、掌握用户自定义函数的建立和使用二、实验平台操作系统:Windows 2000或者Windows XP。

数据库管理系统:Microsoft SQL Server 2000 或Microsoft SQL Server 2005。

三、实验内容1、创建自定义函数创建一个用户自定义函数,并测试、查看函数返回值。

USE NorthwindGOCREATE FUNCTION fn_TaxRate(@ProdID INT)RETURNS numeric(5,4)ASBEGINRETURN(SELECTCASE CategoryIDWHEN 1 THEN 1.10WHEN 2 THEN 1WHEN 3 THEN 1.10WHEN 4 THEN 1.05WHEN 5 THEN 1WHEN 6 THEN 1.05WHEN 7 THEN 1WHEN 8 THEN 1.05ENDFROM ProductsWHERE ProductID = @ProdID)ENDGOSELECT ProductName, UnitPrice,Northwind.dbo.fn_TaxRate(ProductID) AS TaxRate,UnitPrice * Northwind.dbo.fn_TaxRate(ProductID) AS PriceWithTax FROM Products结果:注意:函数可以在Select子句后面调用。

2、返回值为多值的自定义函数创建函数返回多列多值。

USE NorthwindGOCREATE FUNCTION fn_LargeFreight(@FreightAmt money)RETURNS TABLEASRETURN( SELECT S.ShipperID, panyName,O.OrderID, O.ShippedDate, O.FreightFROM Shippers AS S JOIN Orders AS OON S.ShipperID = O.ShipViaWHERE O.Freight > @FreightAmt)SELECT * FROM fn_LargeFreight(600)结果:3、返回值为多值的自定义函数本实验创建的函数也是返回多列多值,注意与上面实验的差别。

存储过程和触发器(数据库实验5)

存储过程和触发器(数据库实验5)

数据库基础与实践实验报告实验五存储过程和触发器班级:惠普测试142学号:**********姓名:***日期:2016-11-141 实验目的:1)掌握SQL进行存储过程创建和调用的方法;2)掌握SQL进行触发器定义的方法,理解触发器的工作原理;3)掌握触发器禁用和重新启用的方法。

2 实验平台:操作系统:Windows xp。

实验环境:SQL Server 2000以上版本。

3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。

1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。

存储过程定义代码:CREATE PROCEDURE JSXX_PROCASSELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND o=o存储过程执行语句与执行结果截图:EXECUTE JSXX_PROC2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。

存储过程定义代码:CREATE PROCEDURE XM_PROC @sname VARCHAR(100)ASBEGINIF EXISTS(SELECT NULL FROM S WHERE sn=@sname)SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE o=o AND SC.sno=S.sno ANDS.sn=@snameELSEPRINT'无该姓名的同学。

'END运行截图:3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业),统计并显示该专业各年龄段男、女生人数。

如果没有该专业,则显示“无此专业”。

存储过程定义代码:CREATE PROCEDURE XBNL_PROC@departName VARCHAR(30)='计算机',@begin INT,@end INTASDECLARE @numOfBoys INTDECLARE @numOfGirls INTDECLARE @d# VARCHAR(3)DECLARE @result VARCHAR(50)BEGINSELECT @d# = dno FROM D WHERE dn=@departNameIF @d# IS NOT NULLBEGINSELECT @numOfBoys =COUNT(sno)FROM S WHERE age BETWEEN @begin AND @end AND dno=@d# AND sex='男'SELECT@numOfGirls =COUNT(sno)FROM S WHERE age BETWEEN@begin AND@end AND dno=@d# AND sex='女'SET @result = @departName+'专业年龄在'+CAST(@begin AS VARCHAR(3))+'-'+CAST(@end AS VARCHAR(3))+'之间的男生有'+CAST(@numOfBoys AS VARCHAR(3))+'人,'+'女生有'+CAST(@numOfGirls AS VARCHAR(3))+'人'ENDELSESET @result='无此专业。

数据库实验五报告

数据库实验五报告

《数据库原理与应用》实验报告实验名称:存储过程与触发器班级:学号:姓名:一、实验目的(1)掌握Oracle数据库编程语言PL/SQL的基础知识。

(2)掌握游标、存储过程和触发器的创建,使用方法。

(3)了解使用高级语言连接数据库的技术、基本方法,了解ODBC、ADO和JDBC 的技术。

二、实验过程在实验一、实验二创建的表中用PL/SQL语言完成以下内容:1.创建存储过程,根据调用时提供的学生姓名查询该学生所修课程的课程信息,在过程体中将课程号、课程名和成绩输出到输出窗口,在SQL窗口中给出过程调用语句块。

语句:create or replace procedure p1(v_sname in s.sname%type) isa o%type;b ame%type;cursor c1 isselect o,amefrom course,scwhere o=o and sno=(select snofrom studentwhere sname=v_sname);beginopen c1;loopfetch c1 into a,b;exit when c1%notfound;dbms_output.put_line(a||' '||b);end loop;close c1;end;beginp1('张北辰');end;执行结果:2.(1)删除SPJ关系中所有数据。

语句:delete from spj;执行结果:(2)在插入和修改SPJ表中QTY属性列的值时用触发器实现约束:如果是北京的供应商,供应任何零件的数量不能少于300,如果少于则自动改为300。

语句:create or replace trigger tr1before insert or update on spjfor each rowdeclarev_citys.city%type;beginselect cityinto v_cityfrom swhere sno=:new.sno;if(v_city='北京' and :new.qty<300)then :new.qty:=300;end if;end tr1;执行结果:(3)在SPJ表中录入值进行验证。

数据库实验报告 (5)

数据库实验报告 (5)

实验一创建数据库及关系表一、实验目的1. 掌握SQL Server数据库管理系统的使用,能够中该环境中进行日常数据库操作;2. 掌握在SQL Server中使用图形化工具创建数据库的方法;3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;4.掌握修改表结构的语句。

二、实验要求1.了解SQL Server数据库的组成,会使用图形化工具创建数据库。

2.编写建立表及主、外码约束的T-SQL语句,并执行这些语句,在数据库中建立符合要求的关系表。

3.编写修改表结构的语句。

三、实验内容和步骤1.创建符合如下条件的数据库:数据库的名字为:Students数据文件的逻辑文件名为:Students_dat,存放在D:\Test录下(若D:盘中无此子目录,可先建立此目录,然后再创建数据库。

);文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。

日志文件的逻辑文件名字为:Students_log,也存放在D:\Test目录下;日志文件的初始大小为:2MB;日志文件的增长方式为自动增长,每次增加10%。

2.在已建立的Students数据库中,写出创建满足下述条件的四张表的SQL 语句,并查看执行结果。

Teacher表结构Sno char(7)primary key,Sname nchar(10)not null,Ssex nchar(2),Sage tinyint,Sdept nvarchar(20),Spec char(10))create table course(Cno char(10),Cname nvarchar(20)not null,Credit int,Semester tinyint,Primary key(Cno))create table sc(Sno char(7)not null,Cno char(10)not null,Grade tinyint,primary key(Sno,Cno),foreign key(Sno )references Student(Sno), foreign key(Cno )references Course(Cno), )create table teacher(Tno char(8)not null,Tname char(10)not null,Dept nvarchar(20),Salary numeric(6,2),Birthery smalldatetime)执行结果:2.写出实现如下操作的SQL语句,并查看执行结果:(1)在SC表中添加一个新的修课类别列:列名为:XKLB,类型为char(4)。

数据库实验报告五

数据库实验报告五

数据库实验报告五一、实验目的本次数据库实验的目的在于深入了解和掌握数据库的相关操作和应用,通过实际操作提高对数据库原理的理解和运用能力,培养解决实际问题的思维和方法。

二、实验环境本次实验使用的数据库管理系统为_____,操作系统为_____,实验所使用的计算机配置为_____。

三、实验内容1、数据库的创建使用相应的命令和工具创建了一个名为_____的数据库,并设置了合适的字符集和校对规则,以满足数据存储和处理的需求。

2、表的设计与创建在创建的数据库中,设计并创建了多个表,包括_____表、_____表和_____表等。

在表的设计过程中,仔细考虑了字段的数据类型、长度、是否允许为空等属性,以确保数据的完整性和准确性。

例如,在_____表中,设置了_____字段为整数类型,用于存储_____信息;_____字段为字符串类型,长度为_____,用于存储_____信息。

同时,为了保证数据的一致性,设置了主键和外键约束。

3、数据的插入通过编写 SQL 语句,向创建的表中插入了大量的测试数据。

在数据插入过程中,注意了数据的合法性和有效性,避免了插入错误或不完整的数据。

4、数据的查询使用各种查询语句对插入的数据进行查询操作,包括简单查询、条件查询、连接查询、分组查询和排序查询等。

通过这些查询操作,熟练掌握了 SQL 语言中查询语句的语法和用法,能够根据不同的需求准确地获取所需的数据。

例如,使用简单查询语句获取了_____表中所有的记录;使用条件查询语句获取了满足特定条件(如_____)的记录;使用连接查询语句将多个表中的相关数据进行关联查询,获取了更全面的信息。

5、数据的更新与删除对表中的数据进行了更新和删除操作,以模拟实际应用中的数据修改和清理需求。

在更新和删除数据时,特别注意了操作的条件和范围,避免了误操作导致数据的丢失或错误。

四、实验中遇到的问题及解决方法1、数据类型不匹配问题在插入数据时,由于对某些字段的数据类型理解不准确,导致出现数据类型不匹配的错误。

数据库实验报告五

数据库实验报告五
execute pro_stu‘1000’,@stuavg output//输出参数必须是变量
select @stuavg //看结果
(3)在pubs数据库中建立一个存储过程,用于检索数据库中某一价位的图书信息。参数有两个,用于指定图书价格的上下限。如果找到满足条件的图书,则返回0,否则返回1。执行结果如图五所示:
实验地点:软件实验室一时间:2015年12月10日
1、实验目的:
掌握用户存储过程的创建,了解一些常用的系统存储过程,以及调用和删除过程,并熟悉使用存储过程来进行数据库应用程序的设计。
二、实验内容:
(1)基于学生—课程数据库创建一存储过程,用于检索数据库中某个专业学生的人数,带有一个输入参数,用于指定专业。执行结果如图二所示:
as select @stu_avg = avg(grade) //将平均值给了变量
from student,sc where student. sno = sc. sno andstudent.sno=@stu_sno
1.存储过程的执行
declare @stuavg float //用于存放输出变量内容的
(2)基于学生-课程数据库创建一存储过程,该过程带有一个输入参数,一个输出参数。其中输入参数用于指定学生的学号,输出参数用于返回学生的平均成绩。执行结果如图四所示:
create procedure pro_stu @stu_sno char(6),@stu_avg float output //这个带output的是输出参数
return 0
else
return 1
(4)存储过程的执行
(5)存储过程的删除。执行结果如图七所示:
3、实验数据(或者实验结果):

数据库实验报告5

数据库实验报告5

数据库技术与应用实验报告五姓名:专业:学号:熟练掌握并简述视图的创建和使用方法等。

创建视图的方法有:(1)打开要创建视图的数据库,之后选择“文件”“新建”命令。

或单击“常用”工具栏上的“新建”按钮,打开“新建”对话框,选择“视图”并单击“新建文件”打开视图设计器建立视图;(2)在项目管理器的“数据”选项卡中将要建立视图的数据库分支展开,并选择“本地视图”或“远程视图”,然后单击“新建”按钮打开视图设计器打开视图设计器建立视图;(3)在命令窗口输入CREA T VIEW 命令打开视图设计器建立视图。

一、实验内容及实验步骤实验一:创建视图实验创建学生选课成绩单视图。

第1步:任务分析要求通过该视图可以了解每个学僧的选课情况及所选课程的成绩情况,并通过该视图可以对学生成绩进行修改,修改将反映到创建该视图的基本表中。

第2步:操作步骤(1)打开“教学管理”数据库。

(2)单击常用工具栏上的“新建”按钮,在弹出的“新建”对话框中选择“视图”,并单击“新建文件”打开视图设计器,同时打开“添加表或视图”对话框。

(3)在“添加表或视图”对话框中选定用于创建视图的学生表、成绩表、课程表,将其添加到视图设计器中(过程同创建查询时相同),之后选择“关闭”按钮,进入“视图设计器”窗口(如事先未建立表与表之间的关联,系统提示建立,方法同创建查询时相同)。

(4)在“字段”选项卡的“可用字段”列表框中,选择要在视图中出现的字段:“学生表.学号”、“学生表.姓名”、“学生表.性别”、“学生表.班号”、“学生表.专业名”、“成绩表.课程号”、“成绩表.成绩”、“课程表.课程名”,并将其添加到“选定字段”列表框。

(5)在“排序依据”选项卡中的选定字段列表框,选择“学生表.学号”、“成绩表.成绩”两个字段作为排序依据,将其添加到“排序条件”列表框。

在排序时先按学号由低到高进行排序,学号相同时,再按照成绩由低到高进行排序。

(6)在“更新条件”条件选项卡中间位置的字段名列表框中,选择可在视图中进行修改的字段,铅笔图案所在列画上√所对应的字段可以被修改,没有√的不能够修改,之后选择“发送SQL更新”,如下图。

数据库实验五报告

数据库实验五报告

实验五数据库的建立和维护实验一、实验目的使学生熟练掌握使用SQL、Transact-SQL和SQL Server企业管理器向数据库中定义的表和视图输入数据、修改数据和删除数据的操作。

二、实验环境与实验准备工作实验环境:Microsoft Windows 2000操作系统,SQL Server 2000数据库管理系统标准版或企业版。

实验准备工作:在开始本实验之前,请回顾教科书的相关内容(如视图的定义与使用,数据访问授权与权限的回收)。

三、实验内容基于实验一建立的“学生课程数据库”(S_T),使用SQL Server 2000企业管理器和在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句的两种方法,实现对S_T中Student、Course和SC三个表的数据插入、修改和删除。

1、使用SQL Server 2000企业管理器对三个表进行数据更新在“学生课程数据库”(S_T)中,点击“表”结点对应的表,然后点击鼠标右键中的“打开表”→“返回所有行”,将显示对应表中的所有数据,将对应的表打开后,在表中输入或修改某些数据,并删除一些过时的数据。

2、使用SQL Server 2000中的查询分析器的Transact-SQL语句输入区输入Transact-SQL语句对三个表进行数据更新。

虚拟输入的数据除教材中数据外增加如下三个表所示数据:Student表学号姓名性别年龄所在系95010 张宇男21 MA95011 戴娆女20 CS95012 吴哲男19 IS95013 周昭女18 IS95014 程星男20 CSCourse表课程号课程名先行课学分8 C语言 5 29 计算机网络 3SC表学号课程号成绩95010 4 8895011 995012 8 4595013 2 7895014 8 30INSERT INTO Student V ALUES('95010','张宇',21,'男','MA');INSERT INTO Student V ALUES('95011','戴娆',20,'女','CS'); INSERT INTO Student V ALUES('95012','吴哲',19,'男','IS'); INSERT INTO Student V ALUES('95013','周昭',18,'女','IS'); INSERT INTO Student V ALUES('95014','程星',20,'男','CS'); INSERT INTO Course V ALUES('8','C语言', '5',2); INSERT INTO Course V ALUES('9','计算机网络',null ,3); INSERT INTO SC V ALUES('95010','4',88);INSERT INTO SC V ALUES('95011','9',null);INSERT INTO SC V ALUES('95012','8',45);INSERT INTO SC V ALUES('95013','2',78);INSERT INTO SC V ALUES('95014','8',30);(1) 在SC表中删除尚无成绩的选课元组。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据库原理与设计》实验报告
12.查询所有借了编号为B02的图书的读者编号(Rno)和读者姓名(Rname)。

13.查询比编号为B01的图书的价格低的图书的编号(Bno)、书名(Btitle)和价格(Bprice)。

14.查询至少借阅了读者R01借阅的全部书籍的读者编号(Rno)和读者姓名(Rname)。

15.查询数据库类图书和价格低于50元的图书的信息。

三、实验过程或算法(源程序)
针对数据库Library实现下列查询语句:
1.查询全体读者的姓名(Rname)、出生年份。

2.查询所有年龄在18~20岁(包括18岁和20岁)之间的读者姓名(Rname)及年龄(Rage)。

3.查询学历为研究生、本科的读者的编号(Rno)、姓名(Rname)和性别(Rsex)。

4.查询所有姓林的且全名为2个汉字的读者的姓名(Rname)、性别(Rsex)和年龄(Rage)。

5.查询尚未归还的借书纪录。

6.查询读者总人数。

7.计算学历为研究生的读者的平均年龄。

8.查询所有的借阅记录,按照读者编号(Rno)升序排列,读者编号相同的,按照借阅时间(BorrowDate)降序排列。

9.查询借书次数大于一次的读者编号。

10.查询读者的借书情况,要求列出读者姓名,图书标题,借书日期。

11.查询所有读者的基本情况和借书情况,没有借书的读者也输出基本信息。

12.查询所有借了编号为B02的图书的读者编号(Rno)和读者姓名(Rname)。

13.查询比编号为B01的图书的价格低的图书的编号(Bno)、书名(Btitle)和价格(Bprice)。

14.查询至少借阅了读者R01借阅的全部书籍的读者编号(Rno)和读者姓名(Rname)。

15.查询数据库类图书和价格低于50元的图书的信息。

四、实验结果及分析和(或)源程序调试过程
简单查询
use Library
select distinct Rname,Rage from Reader2
条件查询
use Library
select distinct Rname,Rage from Reader2
where Rage >= 18 and Rage <= 20
use Library
select distinct Rno,Rname,Rsex from Reader2 where Reducation = '研究生' or Reducation = '本科' 模糊查询
use Library
select distinct Rname,Rsex,Rage from Reader2 where Rname like '林_'。

相关文档
最新文档