数据库实验报告.docx
- 文档编号:29026576
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:44
- 大小:2.84MB
数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(44页珍藏版)》请在冰豆网上搜索。
数据库实验报告
计算机与信息学院
实验报告
专业班级
计科3班
学生姓名及学号
2014217151李勤阳
课程教学班号
任课教师
实验指导教师
实验地点
计算机楼303
2016~2017学年第一学期
实验一数据库的创建和删除
一.实验目的:
1.了解SQLServer数据库的环境。
2.掌握使用SQL语句创建数据库的方法。
二.实验要求
1.掌握通过查询分析器进行交互式SQL语句的使用方法。
2.理解SQLServer中的共享架构dbo。
3.注意操作结果的截图与保存,供撰写实验报告使用。
三.实验内容
1.使用SQL语句创建数据库EDUC。
数据库的参数要求:
数据库名称:
EDUC
数据库存储路径:
将数据库文件存储在D:
\jxgl\目录中。
(注,如果该目录不存在,需在D盘新建一个名为jxgl的文件夹)
其他参数要求:
数据文件的初始大小:
10M最大:
60M按5%的比例自动增长。
日志文件的初始大小:
4M最大:
10M增量为1M。
2.将新创建的数据库设置为当前数据库。
四.实验步骤
1.创建数据库EDUC的SQL语句:
示例:
创建数据库userdb1
maxsize=5,
filegrowth=1)createdatabaseuserdb1
on
(name=userdb1_data,--数据文件的逻辑名称,注意不能与日志逻辑同名
filename='d:
\sql_data\userdb1.mdf',--物理名称,注意路径必须存在
size=5,--数据初始长度为5M
maxsize=10,--最大长度为10M
filegrowth=1)--数据文件每次增长1M
logon
(name=userdb1_log,
filename='d:
\sql_data\userdb1.ldf',
size=2,
reatedatabaseEDUC
on
(name=EDUC_data,
filename='E:
\jxgl\EDUC.mdf',
size=10,
maxsize=60,
filegrowth=5%)
logon
(name=EDUC_log,
filename='E:
\jxgl\EDUC.ldf',
size=4,
maxsize=10,
filegrowth=1)
2.根据步骤1的sql语句,写出创建数据库EDUC的sql语句,点击‘执行’按钮建立数据库EDUC。
3.将新创建的数据库设置为当前数据库。
USEuserdb1
GO
USEEDUC
GO
五.实验总结:
通过这次实验我学会了怎么建立一个数据库,知道数据库建立时要注意的一些细节,让我对数据库有了一定的了解。
实验二数据库的分离和附加
一.实验目的
掌握数据库的分离和附加的具体操作方法。
二.实验要求
1.对数据库EDUC进行分离,并将该数据库的数据文件及日志文件拷贝到U盘。
2.注意操作结果的截图与保存,供撰写实验报告使用。
三.实验内容
1)数据库的分离
在对象资源管理器中,选择数据库节点EDUC,右击-任务-分离,进入如下图所示的界面,选择“更新统计消息”下的复选框,单击确定,完成数据库的分离,此时可以在存储数据库的文件夹中将分离后的数据库的数据文件和日志文件拷贝到U盘里。
注:
在SQLserver2000中,在企业管理器中,选择相应数据库节点EDUC,右击-所有任务-分离数据库。
2)数据库的附加
在对象资源管理器中,选择数据库节点,右击-附加-添加,选择数据文件(.mdf),单击确定,完成数据库的附加。
注:
在SQLserver2000中,在企业管理器,在数据库的节点,右击-所有任务-附加数据库,选择数据文件(.mdf),单击确定,完成数据库的附加。
实验三使用SQL语句创建和删除基本表
一.实验目的
1.了解SQLServer的基本数据类型。
2.学会使用Createtable语句创建基本表。
二.实验要求
1.在查询分析器中使用SQL语句完成基本表的创建、修改、删除。
2.实现基本表定义中有关完整性约束的要求。
3.注意操作结果的截图与保存,供撰写实验报告使用。
三.实验内容
在数据库EDUC中,创建如下四个表:
Class、student、course、sc
表的具体要求如下:
1.class表的结构要求
班级号:
clsNO,字符型(定长),长度为6,主码
班级名称:
clsName,字符型(变长),长度16,非空
辅导员:
Director,字符型(变长),长度10
专业:
Specialty,字符型(变长),长度30
createtableclass
(
clsNOchar(6)primarykey,
clsNamevarchar(16)notnull,
Directorvarchar(10),
Specialtyvarchar(30),
);
2.student表的结构要求
学号:
sno,字符型(定长),长度为8,主码
姓名:
sname,字符型(变长),长度为10,非空
性别:
ssex,字符型(定长),长度为2,性别只能为’男或女’
班级号:
clsNO,字符型(定长),长度为6,外键
住址:
saddr,字符型(变长),长度为20
年龄:
sage,数值型(整数),年龄要求10~30之间
身高:
height,数值型(长度为4,含两位小数)
createtablestudent
(
snochar(8)primarykey,
snamevarchar(10)notnull,
ssexchar
(2)check(ssexin('男','女')),
clsNOchar(6),
foreignkey(clsNO)referencesclass(clsNO),
saddrvarchar(20),
sagesmallintcheck(sage>=10andsage<=30),
heightnumeric(4,2),
);
3.course表的结构要求
课程号:
cno,字符型(定长),长度为4,主键
课程名:
cname,字符型(变长),长度为16,非空
先修课程号:
cpno,字符型(定长),长度为4,外键
学分:
Ccredit,数值型(长度为2,含1位小数)
createtablecourse
(
cnochar(4)primarykey,
cnamevarchar(16)notnull,
cpnochar(4),
foreignkey(cpno)referencescourse(cno),
Ccreditnumeric(2,1),
);
4.sc表的结构要求
学号:
sno,字符型(定长),长度为8
课程号:
cno,字符型(定长),长度为4
成绩:
grade,数值型(长度为3,含一位小数)
注意:
本表主码与外码的定义。
createtablesc
(
snochar(8),
cnochar(4),
primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno),
gradenumeric
);
四.实验步骤
1.创建基本表
打开查询分析器,在其编辑窗口中输入基本表的创建语句,点击“执行”按钮,分别完成四个基本表的创建。
2.修改表结构
按照student的要求创建表student1,修改基本表student1:
createtablestudent1
(
snochar(8)primarykey,
snamevarchar(10)notnull,
ssexchar
(2)check(ssexin('男','女')),
clsNOchar(6),
foreignkey(clsNO)referencesclass(clsNO),
saddrvarchar(20),
sagesmallintcheck(sage>=10andsage<=30),
heightnumeric(4,2),
);
1)增加“入学时间”列s_entrance,其数据类型为日期型(SQLserver2000中日期型为datetime)。
altertablestudent1
adds_entrancedatetime;
altertablestudent1
altercolumnsaddrvarchar(40);
2)将住址(saddr)的长度改为40。
3.删除基本表
删除基本表student1。
droptablestudent1;
5.实验总结
通过这次的实验我学会了如何在数据库中创建表,同时在实验中要时刻注意表中各种属性的完整性的定义,防止因为数据定义中因为码定义的问题而使数据库中表定义的失败。
实验四数据更新操作
一.实验目的
1.掌握INSERT/UPDATE/DELETE语句的使用。
2.体会数据更新操作对完整性约束的影响。
二.实验要求
3.实验内容中要求的数据必须插入到相关基本表中,在此基础上每个表需另插入不少于3个元组。
4.注意操作结果的截图与保存,供撰写实验报告使用。
三.实验内容
1.数据插入操作
(1)向表(Class)中插入数据
要求:
不少于5个元组
插入数据之后使用命令:
Select*fromClass;检查插入数据的正确性
(2)向表(Student)中插入数据
要求:
不少于10个元组
插入数据之后使用命令:
Select*fromStudent;检查插入数据的正确性
select*fromstudent;
(3)向表(Course)中插入数据
要求:
不少于10个元组
插入数据之后使用命令:
Select*fromCourse;检查插入数据的正确性
(4)向表(SC)中插入数据
要求:
不少于20个元组
2.数据修改与删除操作
1)对于student表,根据指定的班级号且年龄小于20岁的学生的班级号改为新的值。
2)对于SC表,删除指定学号的所有选课元组。
四、实验步骤:
在查询分析器中完成实验内容。
五,实验总结:
通过这次的实验,我学会了怎样在建立的表中插入数据,同时进行一些简单的数据的修改,虽然没有深入,但是基本上了解。
同时在插入数据的时候我深刻了解了在插入时要满足数据的完整性的定义,防止数据插入的失败。
实验五创建和删除索引
一.实验目的
1.了解索引的类型和作用。
2.学会用SQL语句对表创建和删除索引
二.实验准备
1.成功创建了数据库EDUC中各表
2.了解创建和删除索引的方法。
三.实验要求
1.了解索引类型并比较各类索引的不同之处。
2.完成索引的创建和删除。
3.注意操作结果的截图与保存,供撰写实验报告使用。
四.实验内容
1.用SQL语句分别建立以下索引
(1)在student表的Sname列上建立普通降序索引Stusname。
(2)在course表的Cname列上建立唯一索引Coucname。
(3)在sc表的Sno(升序),Cno(升序)和grade(降序)三列上建立一个普通索引SCno。
2.检查创建索引的完成情况。
3.用SQL语句删除索引
删除Student表的Stusname索引。
5.实验指导
1.在企业管理器中检查索引的初始情况。
2.在查询分析器中用SQL语句分别建立所要求的索引。
3.在企业管理器中检查索引创建完成情况。
4.在查询分析器中用SQL语句删除指定的索引。
6.实验总结
通过这次实验我学会了怎样在数据库中创建和删除索引,但是具体的应用并没有涉及,同时由于数据太少,数据建立索引的优势没有体现出来。
不过还是对索引有了一定的体会。
实验六数据查询
一.实验目的
1.观察查询结果,体会SELECT语句实际应用;
2.要求学生能够在查询分析器中使用SELECT语句进行简单查询。
3.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
二.实验准备
4.成功建立了基本表。
5.了解简单SELECT语句的用法。
6.熟悉查询分析器中的SQL脚本运行环境。
三.实验要求
1.完成所要求的全部查询。
2.注意操作结果的截图与保存,供撰写实验报告使用。
四.实验内容
1.单表查询
1)查询学生的学号、姓名、性别、年龄、班级。
要求:
表头部分改为中文显示,结果按学号升序重新排列。
2)查询学生姓名中包含“晓”(视实际数据自行确定)字的学生资料(全部)。
;
3)查询所有1995年出生全体男生的信息。
4)查询“0001”与“0003”(具体数据视情况而定)学号、姓名、班级号。
;
2.多表查询
1)查询“计算机应用”专业的学生学号和姓名。
2)查询选修课程“0001”且成绩在80~90之间的学生学号和成绩,并将成绩乘以系数0.75输出。
3)查询“0001”课程的成绩高于“张三”的学生学号和成绩。
;
4)查询没有选修“0002”课程的学生姓名。
5)查询课程平均成绩达到80分的学生学号、姓名、专业名称。
;
6)查询课程的课程号、课程名、选修该课程的人数。
7)查询课程的选课人数、平均分及最高分。
8)查询没有选修“操作系统”(视具体数据而定)课程的学生学号、姓名。
五.实验步骤
在查询分析器中完成上述所有查询
6.实验总结:
通过这次实验中我学会了如何通过select语句来实现数据库中数据的查询,通过不同方法都可实现对数据的查询,从而通过对数据的查询,也对关系代数的运用有了一定的巩固和提高。
。
实验七视图的定义与使用
一.实验目的
1.熟悉和掌握对数据表中视图的查询操作和SQL语句的使用;
2.熟悉和掌握对数据表中视图的更新操作和SQL语句的使用,并注意视图更新与基本表更新的区别与联系;
3.学习灵活熟练的进行视图的操作,认识视图的作用。
二.实验准备
1.EDUC数据库。
2.复习有关视图操作的SQL语句。
三.实验要求
1.在实验开始之前做好准备工作。
2.思考视图和基本表的区别。
3.注意操作结果的截图与保存,供撰写实验报告使用。
四.实验内容
1.定义视图
在EDUC数据库中,已Student、Course和SC表为基础完成一下视图定义:
1)定义一个反映学生出生年份的视图V_YEAR,该视图要求使用系统函数(YEAR(),GETDATE())来获取当前日期及转换;
2)定义视图:
该视图将反映学生选修课程的门数及平均成绩;
2.使用视图
1)查询平均成绩为90分及以上的学生学号、姓名和成绩;
2)查询1995年出生的学生学号和姓名。
五、实验步骤
在查询分析器中完成所有实验内容。
6.实验总结:
通过这次的实验,我学会了怎样建立和删除视图,同时通过对视图的使用可以在不用建立完整的表而将自己想要的数据放在一个视图中,从而实现自己数据查询的方便。
实验7触发器的创建与使用
一、实验目的
本实验的目的是使学生进一步掌握SQLServer触发器的创建及使用方法,加深SQL触发器的理解。
通过对数据的更新操作体会其触发器的作用。
二、实验准备
结合课堂教学内容,了解触发器的相关知识,掌握触发器的定义,理解触发器的使用方法及其特点。
三、实验要求
1.掌握T-SQL创建触发器语句Createtrigger的使用。
2.完成所规定的触发器定义要求。
3.通过数据查询检查触发器的使用效果。
4.注意操作结果的截图与保存,供撰写实验报告使用。
四、实验内容
1.在班级表class中增加班级人数(c_total)字段。
2.为学生表(student)创建INSERT触发器t_inst_stu:
新增一名学生时,若其班级编号非空,则将班级表(class)中相应班级的人数(c_total)自动加1。
3.为学生表(student)创建DELETE触发器t_dele_stu:
删除一名学生时,若其班级编号非空,则将班级表(class)中相应班级的人数(c_total)自动减1。
4.为学生表(student)创建UPDATE触发器t_update_stu:
当某学生所在班号发生变化时(即调到另一班级后),将其原先所在班级的人数(c_total)减1,将新调入的班级班级的。
5.体会触发器的作用。
五、实验步骤
在查询分析器中完成实验内容。
1.使用altertable语句在班级表class中增加班级人数(c_total)字段,默认值(DEFAULT)是0;对表中c_total字段的值进行修改。
2.为学生表(student)分别创建:
●INSERT触发器t_inst_stu
●DELETE触发器t_dele_stu
●UPDATE触发器t_update_stu
3.体会触发器的作用:
1)查看班级表(class)
2)对学生表(student)分别插入(INSERT)、删除(DELETE)和修改(UPDATE)元组
3)再次查看班级表(class),检查其数据的变化情况,体会触发器的作用。
六.实验总结
通过这次我学会了怎样创建触发器,同时利用触发器可以很好地观察到数据的更新和变化,这种手段为数据的更新,提供了更加广阔的空间,为我们的查询和数据的更新提供了方便。
实验9存储过程的创建与使用
一、实验目的
本实验的目的是使学生进一步掌握SQLServer存储过程的创建及使用方法,加深对SQL存储过程的理解。
通过对存储过程的调用体会其作用。
二、实验准备
结合课堂教学内容,了解存储过程的相关知识,掌握存储过程的定义,理解存储过程的调用及其参数的使用方法。
三、实验要求
1.掌握T-SQL创建触发器语句Createprocedure的使用。
2.完成所规定的存储过程定义要求。
3.调用(EXEC)所创建的过程,检查过程的执行结果。
4.注意操作结果的截图与保存,供撰写实验报告使用。
四、实验内容
1、创建一个不带参数的存储过程p_stu_info1,实现对满足要求的学生基本信息的查询。
要求:
所有年龄<21岁的男同学
2、创建一个带有参数的存储过程p_stu_info2,实现对满足要求的学生基本信息的查询。
要求:
输入参数为学号,与指定学号的学生同龄的所有同学。
3、创建一个存储过程p_stu_info3,根据输入的学号,查询某学生的基本信息。
要求:
输入参数为学号。
4、创建一个存储过程p_stu_grade,根据输入的学号,返回其选课及其成绩。
要求:
输入参数为学号
6.使用SQL语句分别执行p_stu_info1、p_stu_info2、p_stu_info3和p_stu_grade,并查看显示结果。
五、实验总结
通过这次实验我学会了如何创建存储过程,通过这样建立存储过程,可以实现数据的很好的处理。
实验10用户管理操作
一、实验目的
本实验的目的是使学生进一步掌握SQLServer用户角色及权限的使用方法,加深SQL用户管理的理解。
SQLServer的特定数据库都有自己的用户和角色(用户组),该数据库只能由它的用户或角色访问,其他用户无权访问该数据库数据,数据库系统可以通过创建和管理特定的数据库的用户和角色来保证数据库不被非法用户访问。
二、实验准备
结合课堂教学内容,了解用户及角色权限的相关知识,掌握用户管理的定义,理解用户和角色的创建和分配,及有哪些权限。
三、实验要求
1.通过SQLServer企业管理器,实现对SQLServer的用户和角色管理
2.分别通过SQLServer企业管理器和SQL的数据控制功能,设置和管理数据操作权限
四、实验内容
1、创建登录帐号
方法一:
用语句创建:
<1>使用sp_addlogin创建。
注意:
用这条语句建立的登陆账号,没有给登录账号提供相应的用户名;
删除:
1)可以用语句droplogin
2)也可以用语句execsp_droplogin
<2>使用createlogin创建
用这条语句创建的登录账号,也没有建立相应的用户名;
删除登录账号:
1)可以用droplogin
2)可以用execsp_droplogin
方法二:
用向导创建:
安全性-新建-登录
在弹出的如下窗口中输入相应的内容,如下所示,单击确定
注意:
用这种方法建立的登录账号,也没有自动生成相应的的用户名;
1)用上述三种方法建立的登录账号目前还不能正常登录,因为即使在定义登录名的时候指定了默认的数据库,但没有映射到相应的用户,所以仍不能正常的登录;
2)从这里可以看出,上述三种方法的建立的登录账号,都没有在用户选项卡中选择相应的映射到该登录名的数据库和用户,如果选择相应了映射,则可以输入你的用户名如p;
2、创建用户
1)用此方法建立用户后,已经将用户映射到相应的登录名,后面的withdefault_schema也可以省略,默认的结构仍然是dbo
2)用户p没有一些操作的权限,要用创建的登录账号进入进行验证,如下:
3、创建一个新角色
用语句创建角色,有三种方法
方法一:
调用存储过程进行创建:
注意:
用此方法建立的用户角色不能用语句droprole
方法二:
用create语句进行创建:
注意:
用此方法建立的角色用上面的两种语句均可以删除,没有默认该角色用户dbo的架构;
方法三:
用向导创建:
数据库——EDUC——安全性——角色——右击新建角色
4、给角色授权:
5、将角色授权给用户
将角色所拥有的权限授予用户p。
6、验证授权操作
用cxp3登录账号登录后,进行验证。
6.实验总结
通过这次实验中我学会为数据建立用户,同时为用户授权,使得每一个用户可以有自己的权限去访问数据库,提高了数据库的安全性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告