数据库实验报告二.docx
《数据库实验报告二.docx》由会员分享,可在线阅读,更多相关《数据库实验报告二.docx(11页珍藏版)》请在冰豆网上搜索。
![数据库实验报告二.docx](https://file1.bdocx.com/fileroot1/2023-2/4/630323d9-f909-4d0e-a941-c641935601e3/630323d9-f909-4d0e-a941-c641935601e31.gif)
数据库实验报告二
数据库原理及应用
实验报告
实验项目:
基本表、索引与视图的定义、删除和修改
专业班级:
计科系班
姓名:
学号:
实验类型:
验证
20年10月
实验项目二
一、实验项目名称:
SQL基本表查询基本表、索引与视图的定义、删除和修改
二、实验项目的目的和任务:
使学生熟悉SQLServer的企业管理器的用法,初步了解SQLServer查询分析器的使用方法,熟悉SQLSERVER的常用数据类型,加深对SQL和SQL语言的查询语句的理解。
熟练掌握简单表、索引与视图的创建与修改。
三、实验内容:
1.基本表的建立:
a)建立一个“学生表student”,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性为主属性,并且其值是唯一的。
b)建立“课程course”包括课程号kch,课程名称kcmc,先修课程xxkc,学分xf,要求建立主键课程号
c)建立“选课表sc”包括学号xh,课程号kch,成绩grade,要求建立主键及与student及sc表联接的外键
2.基本表的修改:
a)在选课表中增加一列“任课教师rkjs”
b)删除选课表中rkjs一列
c)将student表的xm一列允许空值的属性更改成不允许为空,将列xm的长度由char(8)改为char(10)
d)建立一个临时表,再将其删除
3.索引的建立与删除
a)在学生表中以学生的姓名建立降序索引
b)在课程表中以课程名建立升序,以学分建立降序索引
c)删除以上索引
4.建立、删除和更新视图
a)建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
CREATEVIEWC_Student
AS
SELECTSno,Sname,Sage,Sdept
FROMStudents
WHERESdept=’数学’
WITHCHECKOPTION
b)删除视图
在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。
SELECTSname,Sage
FROMC_Student
WHERESage<20;
c)更新视图
将数学系学生视图C_Student中学号为S05的学生姓名改为“黄海”。
删除数学系学生视图C_Student中学号为“S09”的记录。
四、实验代码及截图:
/*创建数据库*/
createdatabasedbw
on(name='dbwdata',filename='e:
\shujuku\dbwdata.mdf')
logon(name='dbwdatalog',filename='e:
\shujuku\dbwdatalog.ldf')
实验截图如下:
/*创建学生信息表*/
createtablestudent(xhchar(20)primarykey,
xmchar(8),
xbchar
(2),
nlint,
xichar(20))
实验截图如下:
建立的表student如下所示:
表student打开填写信息如下:
/*创建课程表*/
createtablecourse(kchchar(10)primarykey,
kcmcchar(20),
xxkcchar(30),
xfint)
实验截图如下:
建立的表course如下所示:
表course打开填写信息如下:
/*创建选课表*/
createtablesc(xhchar(20)notnull,
kchchar(10)notnull,
gradefloatcheck(grade>=0andgrade<=100),
foreignkey(xh)referencesstudent(xh),
foreignkey(kch)referencescourse(kch)
)
实验截图如下:
建立的表sc如下所示:
表sc打开填写信息如下:
/*在选课表中增加一列'任课教师rkjs'*/
altertablescaddrkjschar(20)
实验截图如下:
/*在选课表中删除'任课教师rkjs'一列*/
altertablescdropcolumnrkjs
实验截图如下:
/*将student表的xm一列允许空值的属性更改成不允许为空,
将列xm的长度由char(8)改为char(10)*/
altertablestudent
altercolumnxmchar(10)notnull
实验截图如下:
/*建立一个临时表*/
createtable#lsb(idchar(20)primarykeynotnull,
passchar(20))
实验截图如下:
/*删除临时表*/
droptable#lsb
实验截图如下:
/*在学生表中以学生的姓名建立降序索引*/
createuniqueindexxsxmonstudent(xmdesc)
实验截图如下:
/*在课程表中以课程名建立升序,以学分建立降序索引*/
createindexkcmc@xfoncourse(kcmcasc,xfdesc)
实验截图如下:
/*删除索引*/
dropindexxsxmonstudent
dropindexkcmc@xfoncourse
实验截图如下:
/*建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,
视图的属性名为xh,xm,nl,xi*/
createviewC_student(Sno,Sname,Sage,Sdept)as
selectxh,xm,nl,xi
fromstudentwherexi='数学系'
withcheckoption
实验截图如下:
/*在数学系的学生视图C_Student中
找出年龄(nl)小于20岁的学生姓名(xm)和年龄(nl)*/
selectSname,SagefromC_studentwhereSage<20
实验截图如下:
/*将数学系学生视图C_Student中学号为S05的学生姓名改为“黄海”
删除数学系学生视图C_Student中学号为“S09”的记录。
*/
updateC_studentsetSname='黄海'whereSno='S05'
deletefromC_studentwhereSno='S09'
实验截图如下:
5、实验总结:
通过本次实验,对SQLserver2005有了基本的了解,能用两种方法完成数据库、基本表、索引以及视图的创建,并能对其进行相应的定义、删除、修改等操作。
出现问题的是临时表的建立部分,通过查询资料得知临时表的位置位于系统数据库的tempdb目录下,但是建立的临时表不支持打开,这是本次实验的一个不足之处。
另外,由于本数据库的创建位置是自定义的一个新文件夹,所以运行前应该根据日志的目录地址先在E盘建立一个名为shujuku的文件夹,才能保证实验的正常执行。