数据库试验答案.docx
- 文档编号:12888083
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:29
- 大小:53.26KB
数据库试验答案.docx
《数据库试验答案.docx》由会员分享,可在线阅读,更多相关《数据库试验答案.docx(29页珍藏版)》请在冰豆网上搜索。
数据库试验答案
计算机与信息学院
数据库实验报告
专业班级
学生姓名及学号
课程教学班号
任课教师
实验指导教师
实验地点
2012~2013学年第二学期
实验1使用向导创建和删除数据库
一、实验目的
1.熟悉SQLServer中SQLServerManagementStudio的环境
2.了解SQLServer数据库的逻辑结构和物理结构
3.掌握使用向导创建和删除数据库的方法
二、实验要求
1.熟练使用SSMS进行数据库的创建和删除操作。
2.完成实验报告。
三、实验内容
设有一学籍管理系统,其数据库名为“EDUC”。
初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;
日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”,物理文件名为“student_data.mdf,存放路径为“E:
\sql_data”。
日志文件的逻辑文件名为“student_log”,物理文件名为“student_log.ldf”,存放路径为“E:
\sql_data”。
四、实验步骤
1.使用SQLServerManagementStudio(简称SSMS)创建数据库。
(1)启动SSMS
在开始菜单中:
所有程序-SQLServer2005-SQLServerManagementStudio单击“连接”按钮,便可以进入【SQLServerManagementStudio】窗口。
如果身份验证选择的是“混合模式”,则要输入sa的密码。
(2)建立数据库
在“对象资源管理器”窗口,建立上述数据库EDUC。
在数据库节点上右击选择新建。
同时建立一个同样属性的数据库EDUC1。
2.使用向导删除上面建立的数据库。
用SSMS删除建立的数据库EDUC。
5、实验总结
经过本次试验,对于SQLSERVER有了一个初步的认识,也对于在sqlserver上创建数据库有了一定的了解。
实验2使用SQL语句创建和删除数据库
1、实验目的
1.了解SQLServer2005数据库的逻辑结构和物理结构。
2.掌握使用SQL语句创建和删除数据库。
二、实验要求
1.熟练使用查询分析器进行数据库的创建和删除操作。
2.完成实验报告。
三、实验内容
用SQL语句去创建和删除数据库。
4、实验步骤
1.创建数据库userdb1。
2.根据步骤1的sql语句,写出创建实验1中数据库EDUC的sql语句,并建立数据库EDUC.
createdatabaseEDUC
on
(name=EDUC_data,--数据文件的逻辑名称,注意不能与日志逻辑同名
filename='E:
\sql_data\student_data.mdf',--物理名称,注意路径必须存在
size=10,--数据初始长度为M
maxsize=50,--最大长度为M
filegrowth=5%)--数据文件每次增长M
logon
(name=EDUC_log,
filename='E:
\sql_data\student_log.ldf',
size=2,
maxsize=5,
filegrowth=1)
3.用SQL语句删除步骤1建立的数据库userdb1。
dropdatabaseuserdb1;
五、实验总结
掌握了用SQL语句创建和删除数据库,对SQLServer都有了进一步的认识和了解,发现其实SQL语句还是挺好用的。
实验三分别用向导和SQL语句创建和删除表
1、实验目的
1.了解表的结构特点。
2.了解SQLServer的基本数据类型。
3.学会使用T-SQL语句创建表。
二.实验要求
1.完成SQL语句创建和删除基本表。
2.完成实验报告。
三.实验内容
在数据库EDUC中,创建如下几个表:
表3.1class表(班级信息表)
字段名称
类型
允许空值
主键
说明
ClsNO
Char(6)
NOTNULL
是
班号
ClsName
Varchar(16)
NOTNULL
班名
Director
Varchar(10)
NULL
辅导员
Specialty
Varchar(30)
NULL
专业
表3.2student表(学生信息表)
字段名称
类型
允许空值
主键
说明
Sno
Char(8)
NOTNULL
是
学号
Sname
Varchar(10)
NOTNULL
姓名
Sex
Char
(2)
性别:
男、女
ClsNO
Char(6)
NULL
班级的编号,(外键)参照表Class
Saddr
Varchar(20)
住址
Sage
numeric(3,0)
年龄,大于10,但小于30岁
Height
Decimal(4,2)
身高
表3.3course表(课程信息表)
字段名称
类型
允许空值
主键
说明
Cno
Char(4)
NOTNULL
是
主键
Cname
Varchar(16)
NOTNULL
课程的名称
Cpno
char(4)
NULL
先修课程的课程号(外键),参照cno
Ccredit
Tinyint
学分
表3.4sc表(学生选课成绩表)
字段名称
类型
允许空值
主键
说明
Sno
Char(8)
NOTNULL
是
学号,参照Student,与Cno组成主键
CNO
Char(4)
NOTNULL
是
课程号,参照Course
grade
Numeric(4,1)
NULL
成绩
四.实验步骤
1.打开查询窗口,输入创建基本表的sql语句。
(1)student表:
createtablestudent(
snochar(8)NOTNULLprimarykey,--学号
snamevarchar(10)NOTNULL,--姓名
sexchar
(2)check(sex='女'orsex='男'),--性别:
男、女
clsnochar(6),--班级编号,(外键)参照表class
foreignkey(clsno)referencesclass(clsno),
sadrrvarchar(20),--住址
sagenumeric(3,0),--年龄,大于,但小于岁
heightdecimal(4,2)--身高
)
(2)class表
createtableclass(
clsnochar(6)NOTNULLprimarykey,--班号
clsnamevarchar(16)NOTNULL,--班名
directorvarchar(10)NULL,--辅导员
specialtyvarchar(30)NULL--专业
)
(3)course表
createtablecourse(
cnochar(4)NOTNULLprimarykey,--主键
cnamevarchar(16)NOTNULL,--课程名称
cpnochar(4),--先修课程的课程号(外键),参照cno
ccredittinyint--学分
)
(4)sc表
createtablesc(
snochar(8)NOTNULL,--学号,参照Student,与Cno组成主键
cnochar(4)NOTNULL,--课程号,参照Course
gradenumeric(4,1)NULL,--成绩
primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno),
)
五、实验总结
通过本次试验,基本掌握了用sql语言创建数据库表的基本方法。
实验四数据更新操作
一.实验目的
1.熟悉使用UPDATE/INSERT/DELETE语句进行表操作;
2.能将这些更新操作应用于实际操作中去;
二.实验要求
1.完成下面的实验内容,并提交实验报告;
2.在实验报告中附上相应的代码;
三.实验内容
(1)向表(Student)中插入数据
Sno
Sname
Ssex
ClsNO
Saddr
Sage
Height
王军
男
CS01
下关40#
20
1.76
李杰
男
CS01
江边路96#
22
1.72
王彤
女
MT04
中央路94#
19
1.65
吴杪
女
PH08
莲化小区74#
18
1.60
插入数据之后使用命令:
Select*fromStudent;检查插入数据的正确性
insertintostudent
values('','王军','男','cs01','下关#','20','1.76');
insertintostudent
values('','李杰','男','cs01','江边路#','22','1.72');
insertintostudent
values('','王彤','女','MT04','中央路#','19','1.65');
insertintostudent
values('','吴杪','女','PH08','莲化小区#','18','1.60');
select*fromstudent;
(2)向表(Class)中插入数据
ClsNO
ClsName
Director
Specialty
CS01
计算机一班
王宁
计算机应用
CS02
计算机二班
王宁
计算机应用
MT04
数学四班
陈晨
数学
PH08
物理八班
葛格
物理
插入数据之后使用命令:
Select*fromClass;检查插入数据的正确性
insertintoclass
values('cs01','计算机一班','王宁','计算机应用');
insertintoclass
values('cs02','计算机二班','王宁','计算机应用');
insertintoclass
values('MT04','数学四班','陈晨','数学');
insertintoclass
values('PH08','物理八班','葛格','物理');
select*fromclass;
(3)向表(Course)中插入数据
Cno
Cname
Cpno
Credit
0001
高等数学
Null
6
0003
计算机基础
0001
3
0007
物理
0001
4
插入数据之后使用命令:
Select*fromCourse;检查插入数据的正确性
insertintocourse
values('0001','高等数学',NULL,'6');
insertintocourse
values('0003','计算机基础','0001','3');
insertintocourse
values('0007','物理','0001','4');
select*fromcourse;
(4)向表(SC)中插入数据
SNO
CNO
Grade
0001
90
0007
86
0001
87
0003
76
0001
87
0003
93
0007
85
insertintosc
values('','0001','90');
insertintosc
values('','0007','86');
insertintosc
values('','0001','87');
insertintosc
values('','0003','76');
insertintosc
values('','0001','87');
insertintosc
values('','0003','93');
insertintosc
values('','0007','85');
select*fromsc;
(5).对于student表,将所有班级号为‘CS01’的,并且年龄小于20岁的学生的班级号改为‘CS02’。
updatestudent
setclsno='cs02'
whereclsno='cs01'and
sage<20;
select*fromstudent;
(6).对于student表,删掉所有年龄大于20岁,并且专业号为‘CS02’的学生的记录。
对于student表,插入一条新记录,它的具体信息为,学号:
、姓名:
张三、性别:
男、年龄:
19、班级编号:
‘CS01’。
由于表student数据较少,因而添加数据,用来满足要求:
insertintostudent
values('','黄磊','男','cs01','下关#','18','1.78');
insertintostudent
values('','李超','男','cs01','江边路#','19','1.72');
insertintostudent
values('','陈明飞','男','cs02','中央路#','22','1.65');
delete
fromstudent
wheresage>20and
clsno='cs02';
insertintostudent(sno,sname,ssex,sage,clsno)
values('','张三','男','19','cs01')
(7).对于student表,将年龄最小的学生的家庭地址去掉。
updatestudent
setsadrr=null
wheresage=(selectMIN(s.sage)
fromstudents);
(8).对于student表,将平均年龄最小的一个班级编号改为‘GL01’
由于给定的class表中数据不足,因而添加数据以用来满足要求。
insertintoclass
values('gl01','计算机班','王','计算应用');
updatestudent
setstudent.clsno='gl01'
wherestudent.clsno=
(selectt1.clsno
from(selects1.clsno,avg(s1.sage)afromstudents1groupbys1.clsno)t1,(selectMIN(t2.a1)mfrom(selects.clsno,avg(s.sage)a1fromstudentsgroupbys.clsno)t2)t3
wheret1.a=t3.m);
五、实验总结
通过本次试验,懂得了用sql语言来插入数据,以及一些简单的数据更新操作,也对sqlserver有了更多的了解。
在实验的过程中,也遇到许多的问题,并在实验的过程中解决。
比方说,在往表中插入数据时,先插的student表的数据,结果就发现出现错误,原来是student表中的clsno是class表的外码,需要先插入class表,student表内容才能插进去;还有在数据更新的过程中,比方说“对于student表,将平均年龄最小的一个班级编号改为‘GL01’”,由于class表中没有班号位“gl01”,因而出错,这是没有违反完整性约束条件,在插入一组班号为“gl01”时,该更新操作就能正确的运行。
实验五创建和删除索引
一.实验目的
1.了解索引的类型和应用。
2.学会用SQL语句对表创建和删除索引
二.实验要求
1.了解索引类型并比较各类索引的不同之处
2.完成索引的创建和删除,并提交实验报告。
三.实验内容
1.用SQL语句分别建立以下索引
(1)在student表的Sname列上建立普通降序索引Stusname。
(2)在course表的Cname列上建立唯一索引Coucname。
(3)在sc表的Sno(升序),Cno(升序)和grade(降序)三列上建立一个普通索引SCno。
2.用SQL语句删除索引
Student表的Stusname索引。
四、实验步骤
1.用SQL语句分别建立以下索引
(1)在student表的sname列上建立普通降序索引Stusname。
createindexstusname
onstudent(snamedesc);
(2)在course表的cname列上建立唯一索引Coucname。
createuniqueindexcoucname
oncourse(cname);
(3)在sc表的Sno(升序),Cno(升序)和grade(降序)三列上建立一个普通索引SCno。
createindexscno
onsc(sno,cno,gradedesc)
2.删除索引
删除Student表的Stusname索引。
dropindexstusnameonstudent;
五、实验总结
通过本次试验,学会了用sql语言为基本表创建索引和删除索引。
实验六数据查询
一.实验目的
1.观察查询结果,体会SELECT语句实际应用;
2.要求学生能够在查询分析器中使用SELECT语句进行简单查询。
3.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
二.实验要求
1.完成简单查询和连接查询操作,并验收实验结果提交实验报告
三.实验内容
所有的查询全部用Transact-SQL语句实现。
此部分查询包括投影、选择条件表达、数据排序、使用临时表等。
对EDUC数据库实现以下查询:
1)查询计算机应用专业的学生学号和姓名;
2)查询选修了课程的学生学号;
3)查询选修课程0001且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.75输出;
4)查询计算机应用和数学专业的姓“张”的学生的信息。
5)查询“0001”课程的成绩高于张三的学生学号和成绩;
6)查询没有选修“0002”课程的学生姓名;
四.实验步骤
打开查询窗口,输入SQL查询语句,点击“执行”按钮,查看查询结果。
1)查询计算机应用专业的学生学号和姓名;
selectsno,sname
fromstudent,class
wherestudent.clsno=class.clsnoand
class.specialty='计算机应用';
2)查询选修了课程的学生学号;
selectsno
fromsc
wheresnoisnotnull;
3)查询选修课程0001且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.75输出;
selectsno,grade*0.75
fromsc
wherecno='0001'and
gradebetween80and90;
4)查询计算机应用和数学专业的姓“张”的学生的信息。
select*
fromstudent,class
wheresnamelike'张__'and
student.clsno=class.clsnoand
(specialty='计算机应用'or
specialty='数学');
5)查询“0001”课程的成绩高于张三的学生学号和成绩;
selectstudent.sno,grade
fromstudent,sc
wherecno='0001'and
student.sno=sc.snoand
gradein(selectgrade
fromstudent,sc
wheresname='王军'and
student.sno=sc.sno
)
6)查询没有选修“0002”课程的学生姓名;
selectdistinctsname
fromstudent,sc
wherestudent.sno=sc.snoandcno!
='0002
五、实验总结
通过本次试验,复习用sql语言处理数据查询的一些方法,更好的掌握数据的查询。
实验七使用聚集函数的SELECT语句
一.实验目的
1.熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
2.进一步掌握SQLServer查询分析器的使用,加深对SQL语言的嵌套查询语句的理解。
二.实验要求
1.在实验之前做好准备。
2.完成实验,并验收实验结果提交实验报告。
三.实验内容
在数据库EDUC中用SQL语句实现如下查询:
1)求学生的总人数。
2)求选修了课程的学生人数。
3)求课程的课程号和选修该课程的人数。
4)求选修课程超过2门课的学生学号。
四.实验步骤
1)求学生的总人数.
selectCOUNT(*)
fromstudent;
2)求选修了课程的学生人数。
selectCOUNT(distinctsno)
fromsc;
3)求课程的课程号和选修该课程的人数。
selectCOUNT(cno)
fromsc
groupbycno;
4)求选修课程超过2门课的学生学号。
selectsno
fromsc
groupbysno
havingCOUNT(*)>1;
5、实验总结
通过本次试验对聚集函数的SELECT语句使用更加熟悉。
实验八视图的定义与使用
一.实验目的
1.熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;
2.熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;
3.学习灵活熟练的进行视图的操作,认识视图的作用。
二.实验要求
1.在实验开始之前做好准备工作。
2.实验之后提交实验报告,思考视图和基本表的区别
三.实验内容
1.定义视图
在EDUC数据库中,已Student、Course和SC表为基础完成一下视图定义:
1)将Student,Course和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_SC_G;
2)定义一个反映学生出生年份的视图V_YEAR;
3)将
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 试验 答案