




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理实验报告学 院 计算机学院 专 业 计算机科学与技术 班 级 学 号 姓 名 指导教师 胡欣如 2014年12月24日实验_一_题目_ 数据库及基本表的建立 实验_二_题目_ 查询数据库 _ 实验_三_题目_创建和使用视图、索引、存储过程 实验_四_题目_ 小型数据库规划设计_ 实验平台:MS SQL sever 2005实验一 数据库及基本表的建立一、实验目的1、掌握SQL SERVER的查询分析器和企业管理器的使用;2、掌握创建数据库和表的操作;二、实验内容和要求1、分别使用SQL语句、企业管理器(Enterprise Manager)创建数据库;2、使用SQL语句、企业管理器(
2、Enterprise Manager)创建数据库表;三、实验主要仪器设备和材料1计算机及操作系统:PC机,Windows 2000/xp;2数据库管理系统:SQL sever 2000/2005;四、实验方法、步骤及结果测试创建一个教学管理数据库SC,其描述的信息有:学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。创建:student表(学生信息表)、course表(课程信息表)、teacher表(教师信息表)、student _course表(学生选课成绩表)、teacher_course表(教师上课课表)等。题目1、创建数据库:1、创建数据库:确定数据库
3、名称;数据库用于学生管理,命名为SC确定数据库的位置;要求:数据文件和日志文件分别存储在E盘自己的目录下。确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。实现代码及截图:创建数据库SQL语言CREATE DATABASE SC ON(NAME = NSC_Data,FILENAME = NG:/SC_Data.MDF,SIZE = 30,FILEGROWTH = 20%)LOG ON (NAME = NSC_Log,FILENAME = NG:/SC_Log.LDF,
4、SIZE = 3,FILEGROWTH = 1)实验结果截图显示题目2、创建基本表创建各表的实现代码及截图:查询分析器执行情况:SQL语句及执行结果显示创建student表CREATE TABLE student(s_no char(8)primary key,sname char(8)not null,sex char(2),sbirthdaysmalldatetime,dno char(6),spno char(8),class_no char(4),constraint fk_student_dno foreign key(dno) referencesdepartment(dno),c
5、onstraint fk_student_spnoforeign key(spno) referencesspeciality(spno)创建course表CREATE TABLE course(cno char(10) primary key,cname char(20) not null,spno char(8) ,ctno tinyint ,lecture tinyint ,experiment tinyint ,semester tinyint ,credit tinyint ,constraint fk_course_spno foreign key(spno) references
6、 speciality(spno)创建student_course表CREATE TABLE student_course(s_nochar(8) ,tcidsmallint,scoretinyint ,constraint pk_student_course primary key(s_no,tcid),constraint fk_student_course_s_no foreign key(s_no)references student(s_no) on delete cascade)创建teacher表CREATE TABLE teacher(t_no char(8) primary
7、key,t_name char(8) not null,t_sex char(2),t_birthday smalldatetime,dno char(6) ,tech_title char(10),constraint fk_teacher_dnoforeign key(dno) references department(dno)创建department表CREATE TABLE department (dno char(6) primary key,dept_name char(20) not null,header char(8)创建speciality表CREATE TABLE sp
8、eciality(spno char(8) primary key,dno char(6) not null ,spname char(20) not null,constraint fk_speciality_dno foreign key(dno) references department(dno)7.创建teacher_courseCREATE TABLE teacher_course(tcid smallint primary key,t_no char(8) ,spno char(8) ,class_no char(4) ,cno char(10),semester char(6)
9、 not null,shcoolyear char(10),constraint fk_teacher_course_t_no foreign key(t_no) references teacher(t_no),constraint fk_teacher_course_spno foreign key(spno) references speciality(spno),constraint fk_teacher_course_cno foreign key(cno) references course(cno)创建class表CREATE TABLE class(spno char(8) ,
10、class_no char(4) ,header char(8) , constraint pk_class primary key (spno,class_no),constraint fk_class_spno foreign key(spno) references speciality(spno)实验结果截图显示题目3、查看各数据表之间的关系,生成数据库关系图。题目4、利用查询分析器修改上述各表。(1)、用INSERT语句向各个表中插入数据录入5 条记录。录入时注意体会外键约束。实现代码及截图:查询分析器执行情况:SQL语句及执行结果显示插入department表数据INSERT IN
11、TOdepartment(dno,dept_name,header) values(xy01,计算机学院,张小辉)INSERT INTO department(dno,dept_name,header) values(xy02,机电学院,刘小华)INSERT INTO department(dno,dept_name,header)values(xy03,信息工程学院,梁小伟)INSERT INTO department(dno,dept_name,header) values(xy04,外国语学院,彭小彦)INSERT INTO department(dno,dept_name,header
12、) values(xy05,应用数学学院,吴小祖)插入speciality表数据INSERT INTO speciality(spno,dno,spname)values(zy01001,xy01,网络工程)INSERT INTO speciality(spno,dno,spname) values(zy01002,xy01,软件工程)INSERT INTO speciality(spno,dno,spname) values(zy01003,xy01,计算机科学与技术)INSERT INTO speciality(spno,dno,spname) values(zy03001,xy03,通信
13、工程)INSERT INTO speciality(spno,dno,spname) values(zy04001,xy04,国际商务)插入class表数据INSERT INTO class(spno,class_no,header) values(zy01001,1001,黄小勃)INSERT INTO class(spno,class_no,header) values(zy01001,1002,周小伦)INSERT INTO class(spno,class_no,header) values(zy01002,1001,王小宏)INSERT INTO class(spno,class_n
14、o,header) values(zy03001,1001,陈小迅)INSERT INTO class(spno,class_no,header) values(zy04001,1001,萧小腾)插入student表数据INSERT INTO student(s_no,sname,sex,sbirthday,dno,spno,class_no) values(3002001,王子昂,男,1994-08-04,xy01,zy01001,1001)INSERT INTO student(s_no,sname,sex,sbirthday,dno,spno,class_no) values(30020
15、02,成小龙,男,1994-11-08,xy01,zy01001,1002)INSERT INTO student(s_no,sname,sex,sbirthday,dno,spno,class_no) values(3002003,朴小惠,女,1995-08-16,xy01,zy01002,1001)INSERT INTO student(s_no,sname,sex,sbirthday,dno,spno,class_no) values(3002004,李小镐,男,1995-12-12,xy03,zy03001,1001)INSERT INTO student(s_no,sname,sex
16、,sbirthday,dno,spno,class_no) values(3002005,金小贤,女,1993-06-10,xy04,zy04001,1001)插入course表数据INSERT INTO course(cno,cname,spno,ctno,lecture,experiment,semester,credit) values(kc001,数据结构,zy01001,10,45,10,1,4)INSERT INTO course(cno,cname,spno,ctno,lecture,experiment,semester,credit) values(kc002,数据库原理,z
17、y01001,14,48,12,2,4)INSERT INTO course(cno,cname,spno,ctno,lecture,experiment,semester,credit) values(kc003,计算机组成原理,zy01001,16,36,8,2,3)INSERT INTO course(cno,cname,spno,ctno,lecture,experiment,semester,credit) values(kc009,信号与系统,zy03001,15,40,12,1,5)INSERT INTO course(cno,cname,spno,ctno,lecture,ex
18、periment,semester,credit) values(kc015,商务翻译,zy04001,18,28,10,2,2)插入student_course表数据INSERT INTO student_course(s_no,tcid,score) values(3002001,101 , 80)INSERT INTO student_course(s_no,tcid,score) values(3002002,102 , 90)INSERT INTO student_course(s_no,tcid,score) values(3002003,101 , 85)INSERT INTO
19、student_course(s_no,tcid,score) values(3002004,102 , 75)INSERT INTO student_course(s_no,tcid,score) values(3002005,101 , 88)7.插入teacher表数据INSERT INTO teacher(t_no,t_name,t_sex,t_birthday,dno,tech_title) values(2002001,郭小洁,男,1976-05-10,xy01,教授)INSERT INTO teacher(t_no,t_name,t_sex,t_birthday,dno,tech
20、_title) values(2002002,杨小米,男,1968-11-17,xy01,副教授)INSERT INTO teacher(t_no,t_name,t_sex,t_birthday,dno,tech_title) values(2002003,柯小腾,男,1965-08-15,xy01,博士)INSERT INTO teacher(t_no,t_name,t_sex,t_birthday,dno,tech_title) values(2002004,余小乐,女,1978-10-10,xy02,副教授)INSERT INTO teacher(t_no,t_name,t_sex,t_
21、birthday,dno,tech_title) values(2002005,郑小红,女,1990-04-18,xy03,讲师)8.插入teacher_course表数据INSERT INTO teacher_course(tcid,t_no,spno,class_no,cno,semester,shcoolyear) values(101,2002001,zy01001,1001,kc001,5,3)INSERT INTO teacher_course(tcid,t_no,spno,class_no,cno,semester,shcoolyear) values(102,2002001,z
22、y01001,1001,kc002,3,2)INSERT INTO teacher_course(tcid,t_no,spno,class_no,cno,semester,shcoolyear) values(103,2002002,zy01002,1001,kc002,3,2)INSERT INTO teacher_course(tcid,t_no,spno,class_no,cno,semester,shcoolyear) values(104,2002003,zy01003,1002,kc003,6,3)INSERT INTO teacher_course(tcid,t_no,spno,
23、class_no,cno,semester,shcoolyear) values(105,2002004,zy03001,1001,kc009,2,1)实验结果截图显示(插入数据的表格)共8组(共8个表)(2)、用UPDATE语句更改student表中数据;实现代码:查询分析器执行情况:SQL语句及执行结果显示UPDATE student SET sex=男 WHERE s_no=3002005student表更改前后的内容截图显示(3)、用DELETE语句删除student表中数据;实现代码:查询分析器执行情况:SQL语句及执行结果显示INSERT INTO student(s_no,sna
24、me,sex,sbirthday,dno,spno,class_no) values(3002008,王小昂,男,1994-08-04,xy01,zy01001,1001)DELETE FROM student WHERE s_no=3002008student表更改前后的内容截图显示实验中出现的问题及解决方案插入数据时没有注意到数据的长度,导致报错。解决方法:认真核对数据,重新建立数据库,重新插入数据。建这8个表的先后顺序问题。由于主外键的约束,建表的顺序不能随便调乱,要先理清了各表的关系后,再按照顺序建表。六、思考题说明数据库中的表和数据文件的关系。答:表(table)为数据库中数据存储的
25、基本单位,其数据按行、列存储。每个表具有一表名和列的集合。每一列有一个列名、数据类型、宽度或精度、比例。一行是对应单个记录的列信息的集合。数据文件存放着在数据库中存储的数据,且一个数据库只有一个数据文件。表作为数据库中的数据存储单位,存储在数据文件中。数据库中的日志文件能否单独修改?答:不能,因为日志文件记录了数据库,单独修改可能会造成日志文件与数据库的不一致性,影响工作。在实验中创建表时,应该注意什么?你是如何解决的?答:应该注意主键与外键的关系,按照顺序建表。实验中创建表时,当实验中有多个表且表间存在外键约束时,应该注意创建时先建立被依赖的表,或者最后再添加各表间的外键约束。表间有外键约束
26、时,注意外键之间的数据类型应该是一致的。在向表中插入数据时,应该注意什么?你是如何解决的?答:应注意每一个数据的类型,长度。按照建表时每个数据的类型来插入数据。实验向表中插入数据时,当实验中有多个表且表间存在外键约束时,应该注意先对被依赖的表进行数据插入。注意表中各个属性的约束,例如主键、非空、唯一等约束。数据表中数据的完整性如何控制?答:为了数据表中的属性添加列级或表级约束条件,例如主键、非空、唯一等。如果发现违约行为就拒绝插入数据。实验向表中插入数据时,当实验中有多个表且表间存在外键约束时,应该注意先对被依赖的表进行数据插入。如何对专业表speciality的spname建立唯一性约束,并
27、对新建的约束进行检查。如何对student_course表的score列设置检查约束?如何通过插入新的记录来检验检查约束?怎样来实现“允许空值”?设置“允许空值”时应注意哪些问题?答:SQL sever 2005默认为允许空值,可以通过NOT NULL语句来设定不为空实验二、查询数据库实验项目名称:使用SQL语言查询管理数据实验项目性质:基础型所属课程名称:数据库原理实验计划学时:2一、实验目的熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询1、掌握基本的SELECT查询及其相关子句的使用;2、掌握复杂的SELECT查询,如多表查询、子查询、连接查询和嵌套查询。二、实验内容和要求
28、使用SQL查询分析器查询数据,练习查询语句的使用,掌握SELECT 语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法,掌握存储查询结果的方法,体会各种查询的异同及相互之间的转换,体会各种查询的执行过程,为简单综合应用打下良好的基础。三、实验主要仪器设备和材料1计算机及操作系统:PC机,Windows 2000/xp;2数据库管理系统:SQL sever 2000/2003/2005;四、实验方法、步骤及结果测试要求用SELECT完成以下查询, 1、对实验一建立的数据库表进行查询简单查询:(1)、查询全部学生的学号、姓名、性别和出身年月日。实现代码及查询结果截图:格式如下查询分析器
29、执行情况:SQL语句及执行结果显示SELECT s_no 学号,sname 姓名,sbirthday 出身年月FROM student查询结果截图显示(2)、查询全体学生的学号、姓名和年龄实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT s_no 学号,sname 姓名,year(getdate()-year(sbirthday) 年龄FROM student查询结果截图显示 (3)、查询院系编号为 xy01(计算机学院)的全部学生的学号、姓名、性别和出身年月日。实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT s_no 学号,s
30、name 姓名,sex 性别,sbirthday 出身年月FROM studentWHERE dno=xy01查询结果截图显示(4)、查询“网络工程”专业(专业代码为zy01001)并且班级代码为1001的学生的学号、姓名和出生日期。实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT s_no 学号,sname 姓名,sbirthday 出身年月FROM studentWHERE spno=zy01001查询结果截图显示(5)、查询在1988-05-09以后出生的计算机学院(院系编号为100001)学生的学号、姓名、性别和出身年月日。实现代码及查询结果截图:查询分
31、析器执行情况:SQL语句及执行结果显示SELECT s_no 学号,sname 姓名,sex 性别,sbirthday 出身年月FROM studentWHERE dno=xy01AND sbirthday 1988-05-09查询结果截图显示(6)、查询全部学生的学号、姓名、性别和出身日期结果按照出生日期的升序排列。实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT s_no 学号,sname 姓名,sex 性别,sbirthday 出身年月FROM studentorder by sbirthday查询结果截图显示连接查询:(1)、查询全部学生的学号、姓名、性
32、别、所在院系名称和专业名称实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT s_no 学号,sname 姓名,sex 性别,department.dept_name 院校, speciality.spname 专业FROM student,department,specialityWHERE student.dno = department.dnoAND student.spno = speciality.spno;查询结果截图显示(2)、查询选修了课程101(上课编号)的学生的学号、姓名、专业名称和这门课的成绩实现代码及查询结果截图:查询分析器执行情况:SQL
33、语句及执行结果显示SELECT student.s_no 学号,sname 姓名,speciality.spname 专业, score 成绩FROM student,student_course,specialityWHERE student.s_no = student_course.s_noAND student.spno = speciality.spno AND student_course.tcid = 101;查询结果截图显示(3)、查询学生不及格的情况列出不及格学生的学号、姓名和不及格的课程名称。实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT
34、student.s_no 学号,student.sname 姓名,ame 不及格课程FROM student,student_course,course,teacher_courseWHERE student.s_no = student_course.s_no AND teacher_course.tcid=student_course.tcid AND o=teacher_o AND score60;查询结果截图显示没有不及格课程嵌套查询:(1)、查询没有选修了课程102的学生,列出学生的学号和姓名。实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT s_no
35、 学号,sname 姓名FROM studentWHERE s_no not in(SELECT s_noFROM student_courseWHERE tcid = 102)查询结果截图显示(2)、查询每门课都是80分以上的学生的学号与姓名。实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT s_no 学号,sname 姓名FROM studentWHERE s_no not in(SELECT s_noFROM student_courseWHERE score = 80)查询结果截图显示2、选用Northwind数据库进行查询(1)、对NothWind.
36、Products表进行简单查询;在查询分析器在窗口下用SELECT语句完成单表查询:查询所有Products的详细记录;实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT * FROM Products查询结果截图显示(有所省略)查询单价(UnitPrice)小于20的Products;实现代码及查询结果截图:查询分析器执行情况:SQL语句及执行结果显示SELECT * FROM Products WHERE UnitPrice =20;查询结果截图显示查询Products中单价(UnitPrice)最高的Products的资料;实现代码及查询结果截图:查询分析器
37、执行情况:SQL语句及执行结果显示SELECT * FROM ProductsWHERE UnitPrice = (SELECT MAX(UnitPrice)FROM Products );查询结果截图显示五、实验中出现的问题及解决方案六、思考题1、连接查询分哪几类?各有什么特点?答:连接查询:等值与非等值连接查询,自身连接,外连接,复合条件连接等值与非等值连接:连接条件中的各连接字段类型必须是可比的。自身连接:是指一个表与其自身进行连接,要为表取两个不同的别名。外连接:在连接中把舍弃的元组也保存在结果关系中,而其他属性上填上空值。复合条件连接:WHERE子句中含有多个连接条件。2、进行连接查
38、询时应注意哪些问题?答:注意所使用的连接查询是否符合要求。连接双方的属性类型要一样。进行多表连接时,特别注意不要忘记查询条件,特别是连接多个表且记录数目较多时。因为如果不指明连接条件,系统将对多表进行笛卡尔连接,会产生巨大的记录。根据不同的应用需求,要注意连接方式的选择。实验三、创建和使用视图、索引、存储过程一、实验目的1、掌握视图、索引、存储过程的定义、索引、存储过程的工作原理;2、掌握创建视图、索引、存储过程的SQL语句的用法;并能够熟练利用视图向表中插入、删除和修改数据。3、掌握使用视图来查询数据。二、实验主要仪器设备和材料1计算机及操作系统:PC机,Windows;2数据库管理系统:S
39、QL sever 2000/2005;三、实验方法、步骤及结果测试(一)、视图实验题目:题目1:建立“计算机学院”的学生基本情况视图ies_student_view,该视图包括计算机学院所有学生的学号、姓名、性别、出生年月、专业名称。执行ies_student_view视图并观察结果。创建视图的SQL语句及执行结果显示CREATE VIEW ies_student_viewASSELECT DISTINCT S.s_no 学号,S.sname 姓名,S.sex 性别,S.sbirthday 出生年月,SP.spname 专业名称FROM student AS S,speciality AS S
40、P,department AS DWHERE S.dno=(SELECT dno FROM department WHERE dept_name=计算机学院) AND S.spno=SP.spno查询视图的SQL语句及执行结果截图SELECT * FROM ies_student_view题目2:建立课程101(上课编号)的学生名册的视图,该名册包括学生的学号、姓名、专业名称和这门课的成绩;并查询结果。创建视图的SQL语句及执行结果显示CREATE VIEW iec_student_course1_viewASSELECT S.s_no 学号,S.sname 姓名,S.sex 性别,P.spn
41、ame 专业名称,SC.score 成绩FROM student S,speciality P,department D,student_course SCWHERE S.dno=D.dno and P.dno=D.dno and S.s_no=SC.s_no and SC.tcid=101 and S.spno=P.spno查询视图的SQL语句及执行结果截图SELECT *FROM iec_student_course1_view题目3:建立统计不及格情况的视图,列出不及格学生的学号、姓名和不及格的课程代码创建视图的SQL语句及执行结果显示 CREATE VIEW iec_student_f
42、ail_viewASSELECT S.s_no 学号,S.sname 姓名,P.spname 课程名称,SC.score 成绩,SC.tcid 课程号FROM student S,speciality P,department D,student_course SCWHERE S.dno=D.dno and P.dno=D.dno and S.s_no=SC.s_no and SC.score60 and S.spno=P.spno查询视图的SQL语句及执行结果截图SELECT *FROM iec_student_fail_view题目4:修改视图ies_student_view,使该视图包括
43、所有学生的学号、姓名、性别、出生年月、专业名称、院系名称。修改视图的SQL语句及执行结果显示ALTER VIEW ies_student_viewASSELECT S.s_no 学号,S.sname 姓名,S.sex 性别,S.sbirthday 出生年月,D.dept_name 学院名称,P.spname from student as S,department as D,speciality P where S.dno=D.dnoand S.spno=P.spno;1.查询视图的SQL语句2.修改前后的视图执行结果截图显示前:后:题目5:删除视图ies_student_view。并查询结果
44、。删除视图的SQL语句及执行结果显示DROP VIEW ies_student_view运行后可看到没有该视图显示查询视图SQL语句及执行结果截图(通过查询语句检查该视图,系统会返回该视图不存在的信息)(二)、索引题目1:在student_course表(学生选课表)的学生学号(sno)列上创建索引sc_sno_index创建索引的SQL语句及执行结果显示CREATE INDEX sc_sno_indexON student_course(s_no)SQL语句及运行结果截图示例:运行结果可通过执行系统的存储过程查看:Sp_helpindex student_course题目2:在学生表的出生年
45、月列上创建索引stu_birthday_index创建索引的SQL语句及执行结果显示CREATE INDEX stu_birthday_indexON student(sbirthday)SQL语句及运行结果截图示例:运行结果可通过执行系统的存储过程查看:Sp_helpindex stu_birthday_index(三)、存储过程题目1:创建一个名称为“StuInfo”的存储过程,要求完成以下功能:在student表中查询xxx班学生的学号、姓名、性别、出生日期四个字段的内容。查询分析器执行情况:SQL语句if(object_id(StuInfo,p)is not null) drop pr
46、oc StuInfogoCREATE PROC StuInfoclass char(4)=nullASBEGINIF(class is null) print请输入班级编号ELSESELECT s_no 学号,sname 姓名,sex 性别,sbirthday 出生年月FROM studentWHERE class_no=classEND执行结果截图显示EXEC StuInfo 1001题目2:创建一个存储过程StuScoreInfo,完成的功能是在表student、表course和表student_course中查询以下字段:班级、学号、姓名、性别、课程名称、学生成绩。查询分析器执行情况:S
47、QL语句IF(object_id(StuScoreInfo,p)is not null) DROP PROC StuScoreInfoGOCREATE PROC StuScoreInfodepartment char(4)=nullASBEGINIF(department is null) print请输入学院编号ELSESELECT DISTINCT S.class_no 班级,S.s_no 学号,S.sname 姓名,S.sex 性别,C.cname 课程名称,SC.score 学生成绩FROM student S,course C,student_course SCWHERE S.s_n
48、o=SC.s_no AND S.spno=C.spno AND dno=departmentEND执行结果截图显示题目3:创建存储过程list_famous_teachers,该存储过程列出SC库中所有年龄在35岁以下的教师的教师号、姓名、所在学院和年龄。查询分析器执行情况:SQL语句IF(object_id(list_famous_teachers,p)is not null) DROP PROC list_famous_teachersGOCREATE PROC list_famous_teachersASBEGINSELECT T.t_no 教师编号,T.t_name 姓名,D.dept
49、_name 学院名称,year(getdate()-year(t_birthday) 年龄FROM teacher T,department DWHERE T.dno=D.dno and year(getdate()-year(t_birthday) 35END执行结果截图显示题目4:创建存储过程list_student_department,该存储过程接收学院代码作为输入参数,列出数据库sc中某个院系学生的全部信息。查询分析器执行情况:SQL语句IF (object_id(list_student_department, P) is not null) DROP PROC list_stud
50、ent_departmentGOCREATE PROC list_student_departmentdept_name char(20)=nullASBEGINIF(dept_name is null)PRINT请输入院系ELSE SELECT S.s_no 学号,S.sname 姓名,S.sex 性别,S.sbirthday 出生年月,P.spname 专业名称,S.class_no 班级编号FROM student S,department D,speciality P WHERE S.dno = D.dno and S.spno=P.spno and D.dept_name=dept_
51、name;ENDGO执行结果截图显示四、实验中出现的问题及解决方案在定义存储过程中,为了避免重复定义,应该在定义新的存储过程之前,首先删除之前的存储过程。五、思考题视图可以加快数据的查询速度,这句话对吗?为什么?答:不对。RDBMS执行CREATE VIEW 语句的结果只是把视图的定义存入数据字典,并不执行其中的SELECT语句。只是在对视图查询时,才按视图的定义从基本表中将数据查出。所以并不能加快数据的查询速度。视图可以简化查询,这句话对吗?为什么?答:对的。在对视图查询时,按视图的定义从基本表中将数据查出,再对查出的数据进行查询,减少查询操作。视图是一个虚表,数据库中只存放视图的定义,而不
52、存放视图包含的数据,这些数据仍存放在原来基本表中。这句话对吗?答:对基本表中的数据如果发生变化,视图中查询出数据也随之变化。这句话对吗?答:视图是一个虚表,数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原来基本表中。所以基本表的数据发生变化时,从视图中查询出的数据也会随之改变。视图的作用。视图能够简化用户的操作视图使用户能以多钟角度看待同一数据视图对重构数据库提供了一定程度的逻辑独立性视图能够对机密数据提供安全保护适当的利用视图可以更清晰的表达查询可更新视图的限制。答:一般的,行列子集视图时可更新的,视图的属性来自聚集函数、表达式,则该视图是不可更新的。在上述实验中ies_
53、student_view视图是可以更新的,其视图更新既是对student表的更新。视图tcid1_student_view和fail_student_view都是由两个基本表组成的,此视图不能更新。实验四 小型数据库规划设计实验目的学习数据库原理及应用目的就是能创建和管理一个真实的数据库,通过规划设计一个小型数据库系统。让学生掌握数据库规划设计的基本技术,熟悉数据库的设计的基本方法和步骤,明白数据库设计各阶段的任务,加深对数据库系统概念和特点的理解。实验内容和要求,根据你所熟悉的实际情况规划一个小型的数据库应用项目,学生学籍管理系统,进行系统分析和数据库设计。要求:1、规划设计一个小型系统的数
54、据库,按照给定要求,对各设计阶段进行描述,要求给出数据库设计的E-R图,并将E-R图转换成相应的模型,编制SQL命令脚本。实验主要仪器设备和材料1计算机及操作系统:PC机,Windows 2000/xp;2数据库管理系统:SQL server 2000/2003/2005;实验方法、步骤及结构测试简要的需求分析报告;本系统设计一个学生学籍管理系统,统计学生信息,对学生的在校情况进行记录。满足学生查询成绩,进行选课登记。满足教师对学生的查询,成绩修改和评价。系统功能设计;本系统主要是对学生的在校情况进行记录存储。学生学籍管理系统涉及数据信息有:院系信息、班级信息、任课教师信息、学生信息、学籍变更
55、信息、学生奖惩信息、课程信息、选课信息和成绩等。建立系统的E-R图列出设计的数据库表Student表Department表Speciality表Change_code表Student_course表Class表Punishment表Reward表Coursetype表Teacher表Teacher_course表Plevels表Change表Profession表Rlevels表Course表5、生成数据库关系图创建视图,并查询结果。(截图显示相关代码及实验结果)-建立计算机学院学生的视图CREATE VIEW ies_student_viewASSELECT DISTINCT S.sno 学
56、号,S.sname 姓名,S.sex 性别,year(getdate()-year(birthday) 年龄,SP.spname 专业名称,S.classno 班级FROM student AS S,speciality AS SP,department AS DWHERE S.dno=(SELECT dno FROM department WHERE dname=计算机学院) AND S.spno=SP.spno-建立奖励学生视图CREATE VIEW reward_VIEWASSELECT DISTINCT S.sno 学号,S.sname 姓名,RL.r_name 获奖名称,RL.r_m
57、oney 获奖金额,R.r_rectime 时间FROM student S,rlevels RL,reward RWHERE S.sno=R.sno AND R.r_levels=RL.r_levels -建立惩罚学生视图CREATE VIEW punishment_VIEWASSELECT DISTINCT S.sno 学号,S.sname 姓名,PL.p_name 违纪情况,PL.p_action 处分,P.p_rectime 时间FROM student S,plevels PL,punishment PWHERE S.sno=P.sno AND P.p_levels=PL.p_lev
58、els 创建索引并查看索引(截图显示相关代码及实验结果)在student表的Sno属性上建立索引在teacher表的t_no属性上建立索引创建存储过程,执行相应的存储过程并观察结果。(截图显示相关代码及实验结果)创建存储过程list_student_department该存储过程接收学院代码作为输入参数,列出某个院系的学生的所有信息IF (object_id(list_student_department, P) is not null) DROP PROC list_student_departmentGOCREATE PROC list_student_departmentdname ch
59、ar(20)=nullASBEGINIF(dname is null)PRINT请输入院系ELSE SELECT S.sno 学号,S.sname 姓名,S.sex 性别,S.birthday 出生年月,P.spname 专业名称,S.classno 班级编号FROM student S,department D,speciality P WHERE S.dno = D.dno and S.spno=P.spno and D.dname=dname;ENDGO创建存储过程list_famous_teachers,该存储过程列出SC库中所有年龄在35岁以下的教师的教师号、姓名、所在学院和年龄。I
60、F(object_id(list_famous_teachers,p)is not null) DROP PROC list_famous_teachersGOCREATE PROC list_famous_teachersASBEGINSELECT T.t_no 教师编号,T.t_name 姓名,D.dname 学院名称,year(getdate()-year(t_birthday) 年龄FROM teacher T,department DWHERE T.dno=D.dno and year(getdate()-year(t_birthday) 35END代码:CREATE TABLE d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Module1 How to learn English Unit1 Lets try to speak English as much as possible. 教学设计 2024-2025学年外研版八年级英语上册
- 2024秋四年级英语上册 Unit 3 My friends第2课时(Let's learn Lets chant)教学实录 人教PEP
- 88个星座中英文名对照
- mah委托生产现场审计内容
- 2024秋八年级物理上册 第4章 物质形态及其变化 4.1 从全球变暖谈起教学实录(新版)粤教沪版
- 劳务工程分包合同(知识研究版本)
- 2025年保湿剂项目合作计划书
- 不同地区的安全管理特点计划
- 制定教学资源采购与管理计划
- 2024-2025学年八年级物理下册 7.1力教学实录 (新版)新人教版
- 江苏鸿泰钢铁有限公司品种结构调整炼钢系统升级项目环评报告
- 煤层气开采地面工程设计方案
- 冀东海德堡(泾阳)水泥有限公司水泥窑协同处置污泥改(扩)建项目环评报告
- xxx年国企集团公司职工代表大会制度 企业职工代表大会制度
- GB/T 7113.3-2011绝缘软管第3部分:聚氯乙烯玻璃纤维软管
- 2023年新疆生产建设兵团兴新职业技术学院高职单招(数学)试题库含答案解析
- GB/T 33355-2016保健按摩器具安全使用规范
- 教科版科学六年级下册实验报告单表格版本
- GB/T 22085.2-2008电子束及激光焊接接头缺欠质量分级指南第2部分:铝及铝合金
- GB/T 10454-2000集装袋
- 2MN镦锻液压机本体设计
评论
0/150
提交评论