《DB实验报告要求及格式 (自动保存的).doc》由会员分享,可在线阅读,更多相关《DB实验报告要求及格式 (自动保存的).doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流DB实验报告要求及格式 (自动保存的).精品文档.实验一 数据库及基本表的建立实验项目名称:数据库及基本表的建立实验项目性质:验证型所属课程名称:数据库应用实验计划学时:3一、实验目的1、掌握SQL SERVER的查询分析器和企业管理器的使用;2、掌握创建数据库和表的操作;二、实验内容和要求1、分别使用SQL语句、企业管理器(Enterprise Manager)创建数据库;2、使用SQL语句、企业管理器(Enterprise Manager)创建数据库表;三、实验主要仪器设备和材料1计算机及操作系统:PC机,Windows;2数据库管理系统
2、:SQL sever 2005;四、实验方法、步骤及结果测试创建一个教学管理数据库SC,其描述的信息有:学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。创建:student表(学生信息表)、course表(课程信息表)、teacher表(教师信息表)、student _course表(学生选课成绩表)、teacher_course表(教师上课课表)等。1、创建数据库:确定数据库名称;数据库用于学生管理,命名为SC确定数据库的位置;要求:数据文件和日志文件分别存储在E盘自己的目录下。确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB,日志文件的
3、初始大小为3MB。确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。要求:(1)、利用查询分析器(Query Analyzer),使用SQL语句指定参数创建数据库;实现代码及截图:SQL语句create database liujinyuan_dbon primary(name = liujinyuan_db,filename=D:ProgramFilesMicrosoftSQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATAliujinyuan_db.mdf,size = 30MB,filegrowth = 20%)log on(na
4、me = liujinyuan_log,filename=D:ProgramFilesMicrosoftSQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATAliujinyuan_db.mdf,size =3MB,filegrowth = 1MB);查询分析器执行情况:SQL语句及执行结果截图显示2、创建基本表利用查询分析器,使用SQL语句方式创建方式将下面各表建立到教学管理数据库中。(1) 创建student表字段名代码类型约束学号s_nochar(8)主键姓名snamechar(8)非空性别sexchar(2) 出生日期sbirthdaySmalldatetim
5、e学生所在院系编号dnochar(6) 外键专业代码spnochar(8)外键班级编码class_nochar(4)(2)创建Course表字段名代码类型约束课程编号cnochar(10)主键课程名称cnamechar(20)非空专业代码spnochar(8)外键课程类型编号ctnotinyint理论学时lecturetinyint实验学时experimenttinyint开课学期semestertinyint课程学分credittinyint(3)创建student _course表字段名代码类型约束学号s_nochar(8)主键,与student表中s_no 外键关联,级联删除上课编号tc
6、idsmallint主键学生成绩score tinyint (4)创建teacher表 字段名代码类型约束教师编号t_nochar(8)主键教师姓名t_namechar(8)非空性别t_sexchar(2)出生日期t_birthdaysmalldatetime教师所在院系编号dnochar(6) 外键职称tech_titlechar(10)(5)创建系部表(department) 字段名代码类型约束院系编号dnochar(6)主键院系名称dept_namechar(20)非空院系负责人headerchar(8) (6)创建专业信息表(speciality) 字段名代码类型约束专业代码spnoc
7、har(8)主键院系编号dnochar(6)外键,非空专业名称spnamechar(20)非空(7)创建teacher_course表字段名代码类型约束上课编号tcidsmallint主键教师编号t_nochar(8)外键专业代码spnochar(8)外键班级编码class_nochar(4)课程编号cnochar(10)非空,外键学期semesterChar(6)学年schoolyear Char(10)(8)创建班级表(class) 字段名代码类型约束专业代码spnochar(8)主键,与 speciality 表中spno 外键关联,班级编码class_nochar(4)主键,班负责人h
8、eaderchar(8)3、 查看各数据表之间的关系,生成数据库关系图。生成数据库关系图截图显示4、 创建各表的实现代码及截图:SQL语句CREATE TABLE liujinyuan_department(dno char(6) primary key,dept_name char(20) not null,header char(8);CREATE TABLE liujinyuan_speciality(spno char(8) primary key,dno char(6) not null foreign keyreferences liujinyuan_department(dno)
9、,spname char(20) not null);CREATE TABLE liujinyuan_class(spno char(8),class_no char(4) ,header char(8)primary key(spno , class_no);CREATE TABLE liujinyuan_student(s_no char(10) primary key,sname char(8) not null,sex char(2),sbirthdat Smalldatetime,dno char(6) foreign key references liujinyuan_depart
10、ment(dno),spno char(8) foreign keyreferences liujinyuan_speciality(spno),class_no char(4);CREATE TABLE liujinyuan_course(cno char(10) primary key,cname char(20) not null,spno char(8) foreign keyreferences liujinyuan_speciality(spno),ctno tinyint,lecture tinyint,experiment tinyint,semester tinyint,cr
11、edit tinyint);CREATE TABLE liujinyuan_student_course(s_no char(10) foreign key references liujinyuan_student(s_no)ON DELETE CASCADE,tcid smallint ,score tinyintprimary key (s_no , tcid),);CREATE TABLE liujinyuan_teacher(t_no char(8) primary key,t_name char(8) not null,t_sex char(2),t_birthday Smalld
12、atetime,dno char(6) foreign keyreferences liujinyuan_department(dno),teach_title char(10);CREATE TABLE liujinyuan_teacher_course(tcid smallint primary key,t_no char(8) foreign keyreferences liujinyuan_teacher(t_no),spno char(8) foreign key references liujinyuan_speciality(spno),class_no char(4),cno
13、char(10) not nullforeign key references liujinyuan_course(cno),semester char(6),schoolyear char(10);查询分析器执行情况:SQL语句及执行结果截图显示5、利用查询分析器修改上述各表。(1)、用INSERT语句向各个表中插入数据录入5 条记录。录入时注意体会外键约束。实现代码及截图:查询分析器执行情况:SQL语句及执行结果显示insert into liujinyuan_department values(510000,计算机学院,张三)insert into liujinyuan_departme
14、nt values(520000,机电学院,张四)insert into liujinyuan_department values(530000,自动化学院,张五)insert into liujinyuan_department values(540000,外国语学院,张六)insert into liujinyuan_department values(550000,物理学院,张七)select * from liujinyuan_departmentinsert into liujinyuan_speciality values(080606,510000,计算机科学与技术)insert
15、 into liujinyuan_speciality values(080607,510000,网络工程)insert into liujinyuan_speciality values(080608,510000,软件工程)insert into liujinyuan_speciality values(090606,520000,机电工程)insert into liujinyuan_speciality values(100606,530000,自动化工程)select * from liujinyuan_specialityinsert into liujinyuan_class v
16、alues(080606,0201,刘班)insert into liujinyuan_class values(080606,0202,黄班)insert into liujinyuan_class values(080607,0301,林班)insert into liujinyuan_class values(080608,0401,何班)insert into liujinyuan_class values(090606,1001,姚班)select * from liujinyuan_classinsert into liujinyuan_studentvalues(31110059
17、34,刘锦源,男,1992/05/02,510000,080606,0201)insert into liujinyuan_studentvalues(3111005935,锦源2,男,1992/05/03,510000,080606,0201)insert into liujinyuan_studentvalues(3111005936,锦源3,男,1992/05/04,510000,080606,0201)insert into liujinyuan_studentvalues(3111005937,锦源4,男,1992/05/05,510000,080606,0201)insert in
18、to liujinyuan_studentvalues(3111005938,锦源5,男,1992/05/06,510000,080606,0201)select * from liujinyuan_student insert into liujinyuan_course values(DB,数据库,080606 ,111,48,16,16,3) insert into liujinyuan_course values(EDA,数据逻辑,080606 ,112,48,16,16,3) insert into liujinyuan_course values(ABC,数据结构,080606 ,
19、113,48,16,16,3) insert into liujinyuan_course values(MATH,数学,080607 ,114,72,16,16,5) insert into liujinyuan_course values(EN,英语,080608 ,115,64,16,16,4) select * from liujinyuan_course insert into liujinyuan_student_course values(3111005934,111,90) insert into liujinyuan_student_course values(3111005
20、935,112,91) insert into liujinyuan_student_course values(3111005936,113,92) insert into liujinyuan_student_course values(3111005937,114,93) insert into liujinyuan_student_course values(3111005938,115,94) select * from liujinyuan_student_course insert into liujinyuan_teacher values(1122,刘老师,男,83/1/3,
21、510000,教授) insert into liujinyuan_teacher values(1133,黄老师,男,89/1/4,510000,博士) insert into liujinyuan_teacher values(1144,何老师,男,84/1/5,510000,讲师) insert into liujinyuan_teacher values(1155,林老师,男,81/1/6,510000,研究生) insert into liujinyuan_teacher values(1166,姚老师,女,75/1/7,510000,硕士) select * from liujin
22、yuan_teacherinsert into liujinyuan_teacher_course values(111,1122,080606,jike,DB,2,大一) insert into liujinyuan_teacher_course values(112,1133,080606,jike,EDA,2,大二) insert into liujinyuan_teacher_course values(113,1144,080606,jike,ABC,2,大三) insert into liujinyuan_teacher_course values(114,1155,080606,
23、jike,MATH,2,大四) insert into liujinyuan_teacher_course values(115,1166,080606,jike,EN,2,研一) select * from liujinyuan_teacher_course共8组(共8个表)(2)、用UPDATE语句更改student表中数据;实现代码:update liujinyuan_student set sbirthdat = 1992/03/30,class_no = 0000where s_no = 3111005934select * from liujinyuan_studentstuden
24、t表更改前的内容截图显示查询分析student表更改后的内容截图显示(3)、用DELETE语句删除student表中数据;实现代码:delete liujinyuan_student where s_no = 3111005934select * from liujinyuan_studentstudent表更改前的内容截图显示查询分析student表更改后的内容截图显示五、实验中出现的问题及解决方案数据库有时候会连接不上,重启之后又可以连接了,在各表中,有外键限制的输入内容是要考虑外键限制六、思考题1、 说明数据库中的表和数据文件的关系。一个表空间可以存储在多个数据文件里. 一个数据文件 不
25、 可以有多个表空间2、 数据库中的日志文件能否单独修改?不可以,会找不到文件实验二 查询数据库实验项目名称:使用SQL语言查询管理数据实验项目性质:基础型所属课程名称:数据库应用实验计划学时:2一、实验目的熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询1、掌握基本的SELECT查询及其相关子句的使用;2、掌握复杂的SELECT查询,如多表查询、子查询、连接查询和嵌套查询。二、实验内容和要求使用SQL查询分析器查询数据,练习查询语句的使用,掌握SELECT 语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法,掌握存储查询结果的方法,体会各种查询的异同及相互之间的转换,
26、体会各种查询的执行过程,为简单综合应用打下良好的基础。三、实验主要仪器设备和材料1计算机及操作系统:PC机,Windows;2数据库管理系统:SQL sever 2005;四、实验方法、步骤及结果测试要求用SELECT完成以下查询, 1、对实验一建立的数据库表进行查询简单查询:(1)、查询全部学生的学号、姓名、性别和出身年月日。实现代码及查询结果截图:格式如下查询分析器执行情况:SQL语句及执行结果显示select s_no,sname,sex,sbirthdatfrom liujinyuan_student(2)、根据学号=“你的学号”查询对应元组的姓名和年龄。实现代码及查询结果截图:sel
27、ect sname from liujinyuan_student where s_no = 3111005935(3)、查询院系编号为510000(计算机学院)的全部学生的学号、姓名、性别和出身年月日。实现代码及查询结果截图:select s_no,sname,sex,sbirthdat from liujinyuan_student where dno = 510000(4)、查询“计算机科学与技术”专业(专业代码为00080605)并且班级代码为0201的学生的学号、姓名和出生日期。实现代码及查询结果截图:select s_no,sname,sex,sbirthdat from liuj
28、inyuan_student where spno = 080606 and class_no = 0201(5)、查询在1990/01/01以后出生的计算机学院(院系编号为510000)学生的学号、姓名、性别和出身年月日。实现代码及查询结果截图:select s_no,sname,sex,sbirthdat from liujinyuan_student where sbirthdat 1990/01/01 and dno = 510000(6)、查询全部学生的学号、姓名、性别和出身日期结果按照出生日期的升序排列。实现代码及查询结果截图:select s_no,sname,sex,sbirt
29、hdat from liujinyuan_student order by sbirthdat asc连接查询:(1)、查询全部学生的学号、姓名、性别、所在院系名称和专业名称实现代码及查询结果截图:select s_no,sname,sex,sbirthdat,dno,spno from liujinyuan_student (2)、查询选修了课程1(上课编号)的学生的学号、姓名、专业名称和这门课的成绩实现代码及查询结果截图:select liujinyuan_student.s_no,sname ,spname,liujinyuan_student_course.score from liu
30、jinyuan_student ,liujinyuan_speciality ,liujinyuan_student_coursewhere liujinyuan_student_course .tcid =112 and liujinyuan_student.s_no = liujinyuan_student_course .s_no and liujinyuan_student .spno = liujinyuan_speciality .spno(3)、查询学生不及格的情况列出不及格学生的学号、姓名和不及格的课程名称。实现代码及查询结果截图:update liujinyuan_stude
31、nt_course set score = 59where s_no = 3111005935/* 原表中没有不及格的分数,故临时修改,如下面也有类似操作,不加说明*/select liujinyuan_student.s_no,sname,spname,score from liujinyuan_student ,liujinyuan_speciality ,liujinyuan_student_course where score 80 )五、实验中出现的问题及解决方案在表中的元素不一定都符合作业要求,有时候要临时修改表的内容,例如分数等六、思考题1、 连接查询分哪几类?各有什么特点?等值
32、连接,非等值连接,自然连接,自身连接,外连接,复合条件连接2、 进行连接查询时应注意哪些问题?连接条件的各字段必须是可比的,表与表的连系通过公共属性连接起来,涉及多表示需要加入表名前缀区分实验三、创建和使用视图、索引实验项目名称:创建和使用视图实验项目性质:基础型所属课程名称:数据库应用实验计划学时:3一、实验目的 1、理解视图、索引的定义、索引的优点与、索引的工作原理;2、掌握在查询分析器和企业管理器中创建、修改及删除视图、索引;3、掌握创建视图、索引的SQL语句的用法;并能够熟练利用视图向表中插入、删除和修改数据。4、掌握使用视图来查询数据。二、实验主要仪器设备和材料1计算机及操作系统:P
33、C机,Windows;2数据库管理系统:SQL Server 2005;三、实验方法、步骤及结果测试(一)、视图1、建立“计算机学院”的学生基本情况视图ies_student_view,该视图包括计算机学院所有学生的学号、姓名、性别、出身年月、专业名称。2、执行ies_student_view视图并观察结果。3、建立课程1(上课编号)的学生名册的视图,该名册包括学生的学号、姓名、专业名称和这门课的成绩;并查询结果。4、建立统计不及格情况的视图,列出不及格学生的学号、姓名和不及格的课程代码;5、执行视图并观察结果。6、修改视图ies_student_view,使该视图包括所有学生的学号、姓名、性
34、别、出身年月、学院名称、专业名称。7、执行ies_student_view视图并观察结果。8、删除视图ies_student_view。并查询结果。记录上述实验过程并截图说明。查询分析器执行情况:创建视图的SQL语句及执行结果显示create view ies_student_viewasselect s_no,sname,sex,sbirthdatfrom liujinyuan_studentwith check option查询视图SQL语句及执行结果截图查询分析器执行情况:创建视图的SQL语句及执行结果显示create view ies_student_course_viewassele
35、ct liujinyuan_student.s_no,sname ,spname,liujinyuan_student_course.score from liujinyuan_student ,liujinyuan_speciality ,liujinyuan_student_coursewhere liujinyuan_student_course .tcid =112 and liujinyuan_student.s_no = liujinyuan_student_course .s_no and liujinyuan_student .spno = liujinyuan_special
36、ity .spnowith check option查询视图SQL语句及执行结果截图查询分析器执行情况:创建视图的SQL语句及执行结果显示create view ies_student_course_false_viewasselect liujinyuan_student.s_no,sname,spname,score from liujinyuan_student ,liujinyuan_speciality ,liujinyuan_student_course where score 60and liujinyuan_student .s_no = liujinyuan_student_
37、course .s_no and liujinyuan_student .spno = liujinyuan_speciality .spnowith check option查询视图SQL语句及执行结果截图查询分析器执行情况:创建视图的SQL语句及执行结果显示alter view ies_student_view asselect A.s_no as 学号,A.sname as 姓名,A.sex as 性别,A.sbirthdat as 生日,C.dept_name as 学院,B.spname as 专业 from liujinyuan_student A,liujinyuan_speci
38、ality B,liujinyuan_department C where A.dno=C.dno and A.spno=B.spno查询视图SQL语句及执行结果截图查询分析器执行情况:创建视图的SQL语句及执行结果显示drop view ies_student_view查询视图SQL语句及执行结果截图(二)、索引(1)、在student_course表(学生选课表)的学生学号(sno)列上创建索引sc_sno_index(2)通过SQL语句查看运行结果查询分析器执行情况:创建索引的SQL语句及执行结果显示create index sc_sno_index on liujinyuan_stud
39、ent_course(s_no)查询视图SQL语句及执行结果截图实验方法:(1)、视图(使用企业管理器)1、 启动企业管理器,选择要创建视图的数据库SC并展开;2、 执行“工具”/“向导”命令;3、 选择数据库SC;4、 选择数据库SC,选择表student、department。5、 选择student表中的sno snamesex sbirthday字段和speciality表中的spname字段;6、 在“定义限制”对话框中输入WHERE子句来限制视图的信息;7、 命名视图:ies_sc_view8、 使用视图ies_sc_view。在查询分析器中运用SQL语句查询视图。(2)、索引(使
40、用企业管理器)1、启动企业管理器,选择要创建索引的数据库SC并展开;2、执行“工具”/“向导”命令;3、展开“数据库”文件夹,双击“创建索引向导”4、选择希望为其建立索引的数据库和对象(如数据库SC中的student表)5、查看有关当前索引的信息。选择一个或多个将被包含在索引中的列6、指定索引选项。四、思考题1、视图更新的优点视图是一个虚拟表,其内容由查询语句决定,结果是只读的。通过视图,用户可以看到的数据列被限定,从而可以避免显示数据表中的敏感数据列,从而限定用户能查看的内容。2、哪些视图是可以更新的?哪些视图是不可以更新的?针对实验举例说明。一般来说,普通视图都是可更新的,如只是包含行列子集的视图;如果视图中使用了聚合函数或者GROUP BY子句,就无法更新。