数据库实验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表中删除尚无成绩的选课元组。

数据库实验报告:实验五

数据库实验报告:实验五

数据库实验报告:实验五一、实验目的本次数据库实验五的主要目的是深入了解和掌握数据库的高级操作,包括存储过程的创建与使用、视图的定义和应用、以及事务处理的原理和实践。

通过这些实验内容,提高我们对数据库系统的综合运用能力,为解决实际的数据库管理问题打下坚实的基础。

二、实验环境本次实验使用的数据库管理系统是 MySQL 80,开发工具为 Navicat Premium 12。

操作系统为 Windows 10 专业版。

三、实验内容及步骤(一)存储过程的创建与使用1、创建一个名为`get_student_info` 的存储过程,用于根据学生学号查询学生的基本信息(包括学号、姓名、年龄、性别和专业)。

```sqlDELIMITER //CREATE PROCEDURE get_student_info(IN student_id INT)BEGINSELECT FROM students WHERE student_id = student_id;END //DELIMITER ;```2、调用上述存储过程,查询学号为 1001 的学生信息。

```sqlCALL get_student_info(1001);```(二)视图的定义和应用1、创建一个名为`student_grade_view` 的视图,用于显示学生的学号、姓名和平均成绩。

```sqlCREATE VIEW student_grade_view ASSELECT sstudent_id, sname, AVG(ggrade) AS average_gradeFROM students sJOIN grades g ON sstudent_id = gstudent_idGROUP BY sstudent_id, sname;```2、查询上述视图,获取所有学生的平均成绩信息。

```sqlSELECT FROM student_grade_view;```(三)事务处理1、开启一个事务,向学生表中插入一条新的学生记录(学号:1005,姓名:_____,年龄:20,性别:男,专业:计算机科学)。

数据库实验五报告

数据库实验五报告

姓名 李南 刘星 王海 张力 郭天
导师号 T001 T002 T002 T001
图 2 导师与研究生表
(7) 查询研究生与其导师的情况。 SELECT * FROM 研究生 A INNER JOIN 教师 B ON A.导师号= B.教工号 (也可以写成等价的 SQL 语句: SELECT * FROM 研究生 A,导师 B WHERE A.导师号= B.教工号)
(11)根据学生、课程和成绩表,输出“计算机”课程的成绩单,包括姓名和 分数。 SELECT 姓名,分数 FROM 学生 A JOIN 成绩 B ON(A.学号=B.学号) JOIN 课程 C ON(B.课程编号=C.课程编号) WHERE C.课程名称=’计算机’
等价的 SQL 语句: SELECT 姓名,分数 FROM 学生 A,成绩 B,课程 C WHERE A.学号=B.学号 AND B.课程编号= C.课程号 AND C.课程名='计算
8
句。参见执行 SQL 语句的演示。 3、在调试程序过程中,可以用鼠标选择某些要执行的 SQL 语句,再点击执行键,
执行选择的语句。参见执行 SQL 语句的演示。 4、 注意:在各个表中插入数据的顺序,首先在父表中插入数据,然后在子表中
插入数据。另外,由于表的定义中包含完整性约束的定义,所以,当主码重 复,或者外码不是被参照表的有效值时,系统将拒绝插入的数据。 5、保存调试通过的 SQL 程序。
(19)查询所开课程的选修情况,包括没有任何学生选修的课程。 SELECT 学号, 课程名, 分数 FROM 成绩 A RIGHT OUTER JOIN 课程 B ON (A.课程编号=B.课程编号)
(20) 查询研究生与其导师的情况。 SELECT * FROM 研究生 A INNER JOIN 教师 B ON A.导师号= B.教工号 也可以写成等价的 SQL 语句: SELECT * FROM 研究生 A,导师 B WHERE A.导师号= B.教工号

数据库实验5实验报告

数据库实验5实验报告

淮海工学院计算机工程学院实验报告书课程名:《数据库原理及应用》题目:数据库的完整性班级:软件132学号:***********名:***一.目的与要求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。

三.实验步骤1USE factoryGO--判断是否存在depno索引;若存在,则删除之IF EXISTS(SELECT name FROM sysindexes WHERE name='depno')DROP INDEX worker.depnoGO--创建depno索引CREATE INDEX depno ON worker(部门号)GOEXEC sp_helpindex workerGO2USE factoryGO--判断是否存在no_date索引;若存在,则删除之IF EXISTS(SELECT name FROM sysindexes WHERE name='no_date')DROP INDEX salary.no_dateGO--创建no_date索引CREATE UNIQUE CLUSTERED INDEX no_date ON salary(职工号,日期)GOEXEC sp_helpindex salaryGO3USE factoryGO--如果视图viewl存在,则删除IF EXISTS(SELECT * FROM sysobjects WHERE name = 'view1' AND type='V') DROP VIEW view1GO--创建视图viewlCREATE VIEW view1AS SELECT TOP 15 worker.职工号,worker.姓名,depart.部门名,salary.工资 AS '2004年月工资'FROM worker,depart,salaryWHERE worker.部门号=depart.部门号 AND worker.职工号=salary.职工号 AND YEAR(salary.日期)=2004 AND MONTH(salary.日期)=2ORDER BY worker.部门号GOSELECT * FROM view1GO4USE factoryGO--如果视图view2存在,则删除IF EXISTS(SELECT * FROM sysobjects WHERE name = 'view2' AND type='V') DROP VIEW view2GO--创建视图view2CREATE VIEW view2AS SELECT worker.职工号,worker.姓名,AVG(salary.工资) AS '平均工资' FROM worker,salaryWHERE worker.职工号=salary.职工号GROUP BY worker.职工号,worker.姓名GOSELECT * FROM view2GO5USE factoryGO--如果视图view3存在,则删除IF EXISTS(SELECT * FROM sysobjects WHERE name = 'view3' AND type='V') DROP VIEW view3GO--创建视图view3CREATE VIEW view3AS SELECT depart.部门名,AVG(salary.工资) AS '平均工资'FROM worker,depart,salaryWHERE worker.部门号=depart.部门号 AND worker.职工号=salary.职工号 GROUP BY depart.部门名GOSELECT * FROM view3GO6USE factoryGOEXEC sp_helptext 'view3'GO7USE factoryGOALTER TABLE workerADD CONSTRAINT default_sex DEFAULT '男' FOR 性别GO8USE factoryGOALTER TABLE salaryADD CONSTRAINT check_salary CHECK(工资>0 AND 工资<9999)GO9USE factoryGOALTER TABLE departADD CONSTRAINT unique_depart1 UNIQUE NONCLUSTERED(部门号)GOEXEC sp_helpindex depart --显示depart表上的索引GO10USE factoryGOALTER TABLE workerADD CONSTRAINT FK_worker_noFOREIGN KEY(部门号)REFERENCES depart(部门号)GO11USE factoryGOCREATE RULE sex AS @性别='男' OR @性别='女'GOEXEC sp_bindrule 'sex','worker.性别'GO12USE factoryGOALTER TABLE workerDROP CONSTRAINT default_sexGO13USE factoryGOALTER TABLE salaryDROP CONSTRAINT check_salaryGO14USE factoryGOALTER TABLE departDROP CONSTRAINT unique_departGO15USE factoryGOALTER TABLE workerDROP CONSTRAINT FK_worker_noGO16USE factoryGOEXEC sp_unbindrule 'worker.性别'GODROP RULE sexGO四.测试数据与实验结果第1题图第2题图第3题图第4题图第5题图第6题图第9题图五.结果分析与实验体会定义聚集索引键时使用的列越少越好,这一点很重要。

《数据库技术及应用》实验报告5

《数据库技术及应用》实验报告5

AS
CURSOR c_emp IS
SELECT * FROM emp WHERE
sal<return_avgsal(p_deptno);
BEGIN
FOR v_emp IN c_emp LOOP
DBMS_OUTPUT.PUT_LINE(v_emp.empno||'
'||v_emp.ename);
END LOOP;
DBMS_OUTPUT.PUT_LINE(:new.empno||' '|| :new.ename);
ELSIF UPDATING THEN DBMS_OUTPUT.PUT_LINE(:old.sal||' '||:new.sal);
ELSE DBMS_OUTPUT.PUT_LINE(:old.empno||' '|| :old.ename);
SELECT max(sal) INTO v_maxsal FROM emp WHERE deptno=p_deptno;
RETURN v_maxsal; EXCEPTION
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('The deptno is invalid!'); END return_maxsal; CREATE OR REPLACE FUNCTION return_sumsal (p_deptno in emp.deptno%TYPE,p_deptname out dept.dname%type) RETURN emp.sal%TYPE AS v_sumsal emp.sal%TYPE; BEGIN SELECT sum(sal) INTO v_sumsal FROM emp WHERE deptno=p_deptno; select dname into p_deptname from dept where deptno=p_deptno; RETURN v_sumsal; EXCEPTION WHEN NO_DATA_FOUND THEN

数据库实验五实验报告

数据库实验五实验报告
数据库原理
实验报告
学号:
姓名:尚亚鸽
专业:计算机科学与技术
实验五 存储过程创建与应用
一、实验目的
使学生理解存储过程的概念,掌握创建存储过程的使用、执行存储过程和查看、修改、删除存储过程的方法。
二、实验内容
(1)利用企业管理器创建存储过程student_grade,要求实现如下功能:查询“学生-课程”数据库中每个学生各门功课的成绩,其中包括每个学生的sno,sname,cname,grade。
结果为:
(3)修改存储过程proc_exp,要求实现如下功能:输入学生学号,根据该学生所选课程的平均成绩显示提示信息,即如果平均成绩在60分以上,显示“此学生综合成绩合格,成绩为XX分”,否则显示“此学生总和成绩不合格,成绩为XX分”。
修改存储过程:
执行存储过程:
结果:
(4)创建名为proc_add的存储过程,要求实现如下功能:向sc表中添加学生成绩记录。调用proc_add,向sc表中添加学生成绩记录。
在student数据库下找到“可编程性”下的“存储过程”,单击右键,在弹出的快捷菜单上选择“新建存储过程”。
修改创建存储过程命令的模板。
执行
可看到新建立的存储过程,如下:
结果:
(2)利用查询分析器创建名为proc_exp的存储过程,要求实现如下功能:从sc表中查询某一学生考试平均成绩。
T-SQL语句为:
(2)利用查询分析器创建名为proc_exp的存储过程,要求实现如下功能:从sc表中查询某一学生考试平均成绩。
(3)修改存储过程proc_exp,要求实现如下功能:输入学生学号,根据该学生所选课程的平均成绩显示提示信息,即如果平均成绩在60分以上,显示“此学生综合成绩合格,成绩为XX分”,否则显示“此学生总和成绩不合格,成绩为XX分”。

数据库实验五实验报告

数据库实验五实验报告

数据库实验五实验报告一、实验目的本实验旨在通过学习数据库的索引和优化,掌握数据库索引的使用和优化方法,进一步提升数据库的查询性能。

二、实验要求1.理解数据库索引的概念及作用。

2.熟悉索引的创建、删除和修改操作。

3.了解索引的类型及适用场景,并能选取合适的索引类型。

4.能通过观察执行计划和使用适当的策略对查询进行优化。

三、实验步骤1.索引的创建和删除首先,在已创建的数据库中选择适合创建索引的表。

通过如下语句创建一个测试表:CREATE TABLE test_table(id INT PRIMARY KEY,name VARCHAR(50),age INT);然后,可以在表的字段上创建索引,通过如下语句创建一个索引:CREATE INDEX idx_name ON test_table(name);索引创建完成后,可以通过如下语句删除索引:DROP INDEX idx_name ON test_table;2.索引的修改可以使用ALTER TABLE语句对已创建的索引进行修改。

例如,修改索引的名称:ALTER INDEX idx_name RENAME TO new_idx_name;或者修改索引的定义:ALTER INDEX idx_name RENAME COLUMN new_column_name;3.选择合适的索引类型在创建索引时,需要选择合适的索引类型。

常见的索引类型包括B树索引、哈希索引和全文索引。

- B树索引:适用于等值查询、范围查询和排序场景。

- 哈希索引:适用于等值查询,不支持范围查询和排序。

- 全文索引:适用于全文搜索场景。

4.查询优化在进行数据库查询时,可以通过观察执行计划来判断查询是否有优化空间。

执行计划是数据库在执行查询时生成的查询执行步骤和顺序图,可以根据执行计划优化查询。

另外,还可以通过以下策略对查询进行优化:- 使用合适的索引类型- 避免使用LIKE操作符- 避免使用SELECT *查询所有字段- 避免多表连接查询- 使用JOIN代替子查询- 避免使用不必要的DISTINCT操作符- 分页查询时,使用LIMIT关键字限制结果数量四、实验结果与分析通过实验,我们成功创建了一个测试表,并在该表的字段上创建了索引。

实验五-数据库的查询-实验报告

实验五-数据库的查询-实验报告

实验五-数据库的查询-实验报告(总13页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除实验5 数据库的查询(二)一.实验名称:数据库的查询(二)二.目的和要求:(1)掌握连接查询的表示方法。

(2)掌握子查询的表示方法。

三.实验准备(1)了解连接查询的表示方法。

(2)了解子查询的表示方法。

四。

实验时间:2011年4月14日五。

实验设备和实验环境:(1) PC机。

(2) SQL Server 2000。

六.实验内容:1.连接查询的使用(1)查询选修2号课程且成绩为90分以上的学生学号、姓名、系别及成绩。

在查询分析器的编辑窗口输人如下的语句并执行:SELECT Student.sno,sname,Sdept,gradeFROM Student ,ScWHEREE Student.sno =Sc.snoAnd o=’2’ and Sc.Grade>90思考与练习:查询成绩在80~90分之间的学生学号、姓名、课程名及成绩。

在查询分析器的编辑窗口输人如下的语句并执行:select student.sno,sname,ame,sc.gradefrom student,sc,coursewhere student.sno=sc.snoand o=oand sc.grade between 80 and 90;(2)查找每一门课程的间接先行课程(即先行课的先行课)。

在查询分析器的编辑窗口输入如下语句并执行:SELECT o, Second.CpnoFROM Course First , Course Second.WHEREE First.Cpno = o思考与练习:查询没有选修课程及其成绩的学生详情。

2.子查询的使用(1)查找学习成绩不及格的学生的情况。

在查询分析器的编辑窗口输人如下语句并执行:SELECT*FROM StudentWHERE Sno In(SELECT SnoFROM ScWHERE Grade<60)思考与练习:用子查询的方法查找所有成绩在90分以上的学生的情况。

  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 '林_'。

相关文档
最新文档