数据库实验报告.docx

上传人:b****4 文档编号:11958079 上传时间:2023-04-16 格式:DOCX 页数:47 大小:1.42MB
下载 相关 举报
数据库实验报告.docx_第1页
第1页 / 共47页
数据库实验报告.docx_第2页
第2页 / 共47页
数据库实验报告.docx_第3页
第3页 / 共47页
数据库实验报告.docx_第4页
第4页 / 共47页
数据库实验报告.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

数据库实验报告.docx

《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(47页珍藏版)》请在冰豆网上搜索。

数据库实验报告.docx

数据库实验报告

长沙学院

 

数据库实验报告

题目

数据库实验报告

系(部)

数学与计算机科学系

专业(班级)

软件工程

姓名

学号

指导教师

李妙祥

实验1:

关系数据库模式的设计

一.实验目的

通过本实验使学生掌握根据需求说明设计概念模型的方法;掌握将概念模型转化为关系模型的方法;掌握创建数据库关系图的方法。

二.实验类型设计型

三.实验学时4学时

四.实验原理及知识点

1.概念模型。

2.将概念模型转化为关系模型。

3.创建数据库。

4.创建数据表。

5.创建数据库关系图。

五.实验环境

1.硬件设备要求:

PC及其联网环境;

2.软件设备要求:

Windows操作系统;MSSQLServer数据库管理系统。

六.实验内容及步骤

假设要根据某大学的业务规则设计一个数据库,这个大学的业务规则如下:

1、该大学有多个学院:

文学院、法学院,商学院、艺术学院等。

每一个学院有一个院长,且每一位院长只能主管一个学院。

学院包括学院编号、学院名称、学院地址等信息。

院长包括院长编号、姓名、电话号码和办公室等信息。

2、每一个学院有多个系。

每一个系仅属于一个学院。

系包括系代号、系名称、电话号码和系地址等信息。

3、每一个系聘用多名教师,但每一位教师只属于一个系。

教师包括教工号、姓名、学历、职称、工资、电话号码等信息。

4、一位教师可能讲多门课,每一门课可由多位教师讲授。

课程包括课程号、课程名称、学时数和学分等信息。

5、每一个系有多名学生,且每一名学生只能属于一个系。

学生包括学号、姓名、性别、出生年月、专业、电话号码等信息。

6、每一名学生可选修多门课,且一门课有多名学生选。

实验内容及步骤:

1.根据需求说明设计某大学数据库的概念模型。

2.将概念模型转化为关系模型。

3.创建大学数据库及其相关的数据表。

4.创建大学数据库关系图。

Course表:

Dean表:

Department表:

SC表:

School表:

Student表:

TC表:

Teacher表:

数据库关系图

七.实验总结

通过这次实验我学会了初步设计一个简单的数据库,把实体所具有的属性分析出来,然后根据属性之间的关系,画出ER图最后建一个简单的数据库,感觉收获很多。

实验2:

关系数据库标准语言SQL

一.实验目的

通过本实验使学生掌握SQL语言的数据定义功能、数据查询功能和数据操纵功能。

二.实验类型验证型

三.实验学时4学时

四.实验原理及知识点

1.SQL语言的数据查询功能

2.SQL语言的数据定义功能

3.SQL语言的数据操纵功能

五.实验环境

1.硬件设备要求:

PC及其联网环境;

2.软件设备要求:

Windows操作系统;MSSQLServer数据库管理系统。

六.实验内容及步骤

在STUDENT数据库中,根据要求使用SQL语言完成下列操作,将SQL语句以.sql文件的形式保存在自己的目录下。

1.查询选修了课程的学生的学号。

2.查询学生学号和出生年份。

3.查询计算机系学生的学号、姓名。

4.查询年龄在20岁与22岁之间(包括20和22岁)的学生姓名和年龄。

5.查询学生姓名中含有“波”字的学生情况。

6.查询缺少学习成绩的学生学号和课程号。

7.查询选修C601课程的学生的学号和成绩,并按分数的降序排列。

8.求选修了课程的学生人数。

9.求课程C601的平均成绩。

10.求选修课程超过2门的学生学号。

11.查询参加学习的学生所学的课程号和总分。

12.查询选修高等数学课程且成绩在80分以上的学生的学号、姓名。

13.查询每一课程的间接先行课(即先行课的先行课)。

14.查询年龄低于所有工程系学生的学生姓名、所在系、年龄。

15.找出刘建平老师所开全部课程的课程号、课程名。

16.找出全部课程的任课教师。

17.求学生1203所学课程的总分。

18.找出所有姓张的学生的姓名和籍贯。

19.找出至少一门课程的成绩在90分以上的女学生的姓名。

20.求每一年龄上人数超过2的男生的具体人数,并按年龄从小到大排序。

21.把学生的学号及他的平均成绩定义为一个视图GRADE_VIEW。

22.创建一个从student、course、study表中查出计算机系的学生及其成绩的视图computer_view,要求显示学生的学号sno、姓名name、课程号cno、课程名称cname、成绩grade。

23.在Student表中依据学生姓名创建索引name_index。

24.在Study表中依据sno和cno创建索引main_index。

25.将课程C603的任课老师改为“赵明”。

26.在Student表中插入两个学生记录:

'1201','吴华','女',20,'成都','计算机系'

'1102','张军','男',21,'上海','工程系'

27.删除年龄在21岁以上的学生记录。

--1

SELECTDISTINCT

Sno'学号'

FROMStudent_course;

--2

SELECT

Sno'学号',

2015-Sage'出生年份'

FROMStudent;

--3

SELECT

Sno'学号',

Sname'姓名'

FROMStudent

WHERESdept='CS';

--4

SELECT

Sname'姓名',

Sage'年龄'

FROMStudent

WHERESage>=20andSage<=22;

--5

SELECT*

FROMStudent

WHERESnameLIKE'%波%';

--6

SELECT

Sno'学号',

Cno'课程号'

FROMStudent_course

WHEREGradeisNULL;

--7

SELECT

Sno'学号',

Grade'成绩'

FROMStudent_course

WHERECno='C601'

ORDERBYGradeDESC;

--8

SELECT

COUNT(DISTINCTSno)

FROMStudent_course;

--9

SELECT

AVG(Grade)

FROMStudent_course

WHERECno='C601';

--10

SELECT

Sno'学号'

FROMStudent_course

GROUPBYSno

HAVINGCOUNT(Cno)>2;

--11

SELECT

Cno'课程号',

SUM(Grade)'总分'

FROMStudent_course

GROUPBYCno;

--12

SELECT

Student.Sno,

Student.Sname

FROMStudent,Student_course,Course

WHEREStudent.Sno=Student_course.Sno

andCourse.Cno=Student_course.Cno

andCourse.Cname='高等数学'andStudent_course.Grade>80;

--13

SELECT

FIRST.Cno,

SECOND.Cpno

FROMCourseFIRST,CourseSECOND

WHEREFIRST.Cpno=SECOND.Cno;

--14

SELECT

Sname,

Sdept,

Sage

FROMStudent

WHERESage

--15

SELECT

Cno'课程号',

Cname'课程名'

FROMCourse

WHERECteacher='刘剑平';

--16

SELECTDISTINCT

Cteacher'教师'

FROMCourse

WHERECteacherisnotNULL;

--17

SELECT

SUM(Grade)'总成绩'

FROMStudent_course

GROUPBYSno

HAVINGSno='201215122';

--18

SELECT

Sname'姓名',

Snative'籍贯'

FROMStudent

WHERESnamelike'张%';

--19

SELECT

Sname'姓名'

FROMStudent

WHERESsex='女'andSnoin(

SELECTSno

FROMStudent_course

WHERE90<=Grade);

--20

SELECT

Sage'年龄',

COUNT(*)'男生人数'

FROMStudent

WHERESsex='男'andSagein

(SELECT

Sage

FROMStudent

GROUPBYSage

HAVINGCOUNT(*)>=2)

GROUPBYSage

ORDERBYSage;

--21

CREATEVIEWGRADE_VIEW

AS

SELECT

Sno,

AVG(Grade)Savg

FROMStudent_course

GROUPBYSno;

--22

CREATEVIEWCOMPUTER_VIEW

AS

SELECT

Student.Sno,

Student.Sname,

Course.Cno,

Course.Cname,

Student_course.Grade

FROMStudent,Student_course,Course

WHEREStudent.Sno=Student_course.Sno

andStudent_course.Cno=Course.Cno;

--23

CREATEINDEXNAME_INDEXONStudent(Sname);

 

--24

CREATEINDEXMAIN_INDEXONStudent_course(Sno,Cno);

 

--25

UPDATECourse

SETCteacher='赵明'

WHERECno='C603';

--26

INSERT

INTOStudent

VALUES

('1201','吴华','女',20,'成都','CS'),

('1102','张军','男',21,'上海','EG');

--27

DELETE

FROMStudent

WHERESage>21;

七.实验总结

通过这次实验学会使用SQL查询语句、使用SQL语句插入元组,使用SQL语句删除元组,使用SQL语句创建索引和删除索引,但任然不是很熟练,有很多地方需要查阅书籍才能完成,还是需要多加练习。

实验3:

数据库安全性的设计与实现

一.实验目的

通过本实验使学生加深对数据库安全性的理解,并掌握数据库管理系统中有关用户、角色及操作权限的管理方法。

二.实验类型验证型

三.实验学时2学时

四.实验原理及知识点

1.安全模式的设置

2.服务器登录标识管理

3.数据库用户管理

4.权限管理

五.实验环境

1.硬件设备要求:

PC及其联网环境;

2.软件设备要求:

Windows操作系统;MSSQLServer数据库管理系统。

六.实验内容及步骤

1.使用企业管理器在你的SQLServer中创建一个登录名teacher,且

1)它使用SQLServer认证;

2)能够创建和修改数据库;

3)能访问pubs数据库、student数据库和OrderCenter数据库,并且能够在这些库中分配语句和对象权限;

4)对OrderCenter数据库中的products表具有插入、修改和删除的权限。

2.在查询分析器中使用SQL语句完成下列任务:

1)创建一个登录名student,口令为123,缺省数据库为student;

2)将其加入到student数据库的用户中;

3)将其加入到sysadmin角色中;

4)将其加入到student数据库的db_owner角色中;

5)授予他在student数据库中创建视图、创建表的权限;

6)授予他对student数据库中的study表具有所有权限,且可将这些权限授予他人;

7)撤销他对student数据库中的study表的修改权限;

8)禁止他对student数据库中的study表的删除权限。

七.实验总结

通过这次实验学会给不同的用户设置不同的角色,知道了数据库角色之间的不同,明白了数据库安全性的重要性。

实验4:

数据库完整性——约束、规则、默认

一.实验目的

通过本实验使学生加深对数据完整性的理解,熟悉通过SQL对数据进行完整性控制。

二.实验类型验证型

三.实验学时2学时

四.实验原理及知识点

1.约束2.规则3.默认

五.实验环境

1.硬件设备要求:

PC及其联网环境;

2.软件设备要求:

Windows操作系统;MSSQLServer数据库管理系统。

六.实验内容及步骤

1.将Student表中的Sno属性定义为码

2.将SC表中的Sno、Cno属性组定义为码

3.定义SC中的参照完整性

4.显示说明参照完整性的违约处理示例

5.在定义SC表时,说明Sno、Cno、Grade属性不允许取空值

6.建立部门表DEPT,要求部门名称Dname取值唯一部门编号Deptno列为主码

7.Student表的Ssex只允许取‘男’或‘女’

8.SC表的Grade的值应该在0和100之间

9.当学生性别是男时,其名字不能以Ms.打头

10.建立学生登记表Student,要求学号在90000~99999之间,姓名不能去空值,年龄小于30,性别只能是‘男’或‘女’。

11.建立教师表TEACHER,要求每个教师应发工资不低于3000元

12.去掉10Student表中的对性别的限制

13.修改Student表中的约束条件,要求学号改为在900000~999999之间,年龄由小于30改为小于40

--1

CREATETABLEStudent

(SnoCHAR(9),

SnameCHAR(20)NOTNULL,

SsexCHAR

(2),

SageSMALLINT,

SdeptCHAR(20),

PRIMARYKEY(Sno)

);

CREATETABLECourse

(CnoCHAR(4)NOTNULL,

CnameCHAR(10)NOTNULL,

CpnoCHAR(4),

CcreditSMALLINT,

PRIMARYKEY(Cno)

);

结果:

--2

CREATETABLESC

(SnoCHAR(9)NOTNULL,

CnoCHAR(4)NOTNULL,

GradeSMALLINT

PRIMARYKEY(Sno,Cno),

);

结果:

--3

CREATETABLESC

(SnoCHAR(9)NOTNULL,

CnoCHAR(4)NOTNULL,

GradeSMALLINT

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno)

);

数据库关系图:

--4

CREATETABLESC

(SnoCHAR(9),

CnoCHAR(4),

GradeSMALLINT,

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno)

ONDELETECASCADE

ONUPDATECASCADE,

FOREIGNKEY(Cno)REFERENCESCourse(Cno)

ONDELETECASCADE

ONUPDATECASCADE

);

表的设计:

数据库关系图:

--5

CREATETABLESC

(SnoCHAR(9)NOTNULL,

CnoCHAR(9)NOTNULL,

GradeSMALLINTNOTNULL,

PRIMARYKEY(Sno,Cno),

);

表的设计:

--7

CREATETABLEStduent

(SnoCHAR(9)NOTNULL,

SnameCHAR(8)NOTNULL,

SsexCHAR

(2)CHECK(SsexIN('男','女')),

SageSMALLINT,

SdeptCHAR(20),

PRIMARYKEY(Sno)

);

表的设计:

当性别处填写’男’,’女’以外的值的时候,无法保存该元祖。

--8

CREATETABLESC

(SnoCHAR(9),

CnoCHAR(4),

GradeSMALLINTCHECK(Grade>=0ANDGrade<=100),

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno)

);

--9

CREATETABLEStudent

(SnoCHAR(9),

SnameCHAR(8)NOTNULL,

SsexCHAR

(2),

SageSMALLINT,

SdeptCHAR(20),

PRIMARYKEY(Sno),

CHECK(Ssex='女'ORSnameNOTLIKE'MS.%')

);

--10

CREATETABLEStudent

(SnoNUMERIC(6)

CONSTRAINTC1CHECK(SnoBETWEEN90000AND99999),

SnameCHAR(20)

CONSTRAINTC2NOTNULL,

SageNUMERIC(3)

CONSTRAINTC3CHECK(Sage<30),

SsexCHAR

(2)

CONSTRAINTC4CHECK(SsexIN('男','女')),

CONSTRAINTStudentKeyPRIMARYKEY(Sno)

);

表的设计:

学号未在约束范围内:

姓名为空:

年龄不在范围内:

--11

createtableTEACHER

(Enonumeric(4)primarykey,

Enamechar(10),

Jobchar(8),

Salnumeric(7,2),

Deductnumeric(7,2),

Deptnonumeric

(2),

constraintTEACHERFKeyforeignkey(Deptno)

referencesDEPT(Deptno),

constraintC1check(sal+Deduct>=3000)

);

--12

dropconstraintC4;

--13

altertableStudent

dropconstraintC1;

altertableStudent

addconstraintC1check(Snobetween9000000and999999);

altertableStudent

dropconstraintC3;

altertableStudent

addconstraintC3check(Sage<40);

七.实验总结

通过这次实验学会了定义各种完整性约束的定义,例如不能为空,取值唯一,还有CHECK约束,学会了用constraint语句定义约束,这种方式比在create语句中直接定义完整性约束更加灵活,主要是方便增加和删除一个完整性约束条件。

实验5:

数据库编程——存储过程

一.实验目的

通过本实验使学生掌握存储过程的基本概念和创建、执行、删除方法。

二.实验类型验证型

三.实验学时2学时

四.实验原理及知识点

1.Transact-SQL编程

2.存储过程的创建和执行

3.存储过程的修改和删除

五.实验环境

1.硬件设备要求:

PC及其联网环境;

2.软件设备要求:

Windows操作系统;MSSQLServer数据库管理系统。

六.实验内容及步骤

利用存储过程实现下面的应用:

从账户1转指定数额的款项到账户2中。

假设账户关系表为Account(Accountnum,total)

存储过程

createprocedurepro_transfer

(@inAccountint,@outAccountint,@amountfloat)

as

declare@totalDepositOutfloat,

@totalDepositInfloat,

@inAccountnumint;

begin

select@totalDepositOut=(selecttotalfromAccountwhereaccountnum=@outAccount);

if(@totalDepositOutisnull)

begin

rollback;

return;

end

if(@totalDepositOut<@amount)

begin

rollback;

return;

end

select@inAccount=(selectaccountnumfromAccountwhereaccountnum=@inAccount)

if(@inAccountnumisnull)

begin

rollback;

return;

end

updateAccountsettotal=toal-@amount

whereaccountnum=@outAccount;

update

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1