1 / 15
文档名称:

数据库系统原理及应用实验报告.doc

格式:doc   大小:427KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库系统原理及应用实验报告.doc

上传人:莫比乌斯 2023/3/28 文件大小:427 KB

下载得到文件列表

数据库系统原理及应用实验报告.doc

文档介绍

文档介绍:该【数据库系统原理及应用实验报告 】是由【莫比乌斯】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【数据库系统原理及应用实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。数据库系统原理及应用
实验指导书
学号:
姓名:
专业班级:
指导教师:
一.“教学管理系统”实验数据库模式描述
.关系模式描述定义
Student(sno,sname,sbirthday,ssex,sclass,sremark,address,zipcode,phone,email)
Primarykey(sno)
Course(cno,cname,cpno,ctime,credit)
Primarykey(cno)
Foreignkey(cpno)
Score(sno,cno,score)
Primarykey(sno,cno)
Foreignkey(sno)
Foreignkey(cno)
Teacher(tno,tname,tsex,tbirthday,position,department,tamount,experience)
Primarykey(tno)
Teaching(tno,cno,tdate,classroom,sclass)
Primarykey(tno,cno)
Foreignkey(tno)
Foreignkey(cno)

(一)实验目标
通过“数据库系统概论”书本知识学****和“数据库原理与应用”课程教学所授知识对“教学管理系统”实验内容进行分析,建立相应的数据库、数据表、数据视图以及相应的界面程序,利用SQL结构化查询语言提供的数据操纵功能,编程设计实现对数据的定义、修改、删除、查询、更新以及控制等操作,并按照实验指导书的各项要求完成实验。
(三)实验内容
实验一:设计数据库、数据表和数据视图并编程实现
.目的要求
()这是一个验证性实验。
()利用所学E-R数据模型图概念,描述“学生管理”系统中数据表之间以及各数据项之间的联系。并按照课程教学大纲要求,转化相关E-R图为关系模型中对应的二维表,指出每个数据表中的关键字、索引项、外码以及表中需要满足完整性约束条件;
()对照关系模型中(:)、(:n)、(m:n)实体联系,指出各数据表实体属于哪一类联系。
()熟悉微软公司SQLServer的企业管理器(后台实验平台)和查询分析器(前台实验平台)内嵌的SQL编程环境,正确登录、退出和使用实验平台环境;
()熟练掌握SQL环境下的程序编辑和运行命令;
()建立一个教学管理数据库,即建立五个相关数据表。练****并掌握定义、删除和修改表的数据结构操作。建立数据库和数据表、数据视图并完成对各个数据表输入一定查询要求的模拟数据(模拟数据记录尽量多输一些且数据要能满足查询要求)的内容。
.实验内容
()根据实验建议所示,建立“学生管理”数据库,这里是以SQLServer为例来
()建立数据表的方法,建立五个相关的数据表。完成数据库的建立并定义各表的完整性约束条件。分别使用企业管理器和SQL语言来实现。
()熟练掌握并应用SQL中的数据表定义、删除和修改等操作命令;
()熟练掌握为各表常用字段建立索引,以提高数据检索效率。
建表的代码如下:分别为student,course,score,teacher,teaching表
usestudent_managment;
createtablestudent(snochar(),
snamechar(), sbirthdayDatetime,
ssexchar()constraintccheck(ssexin('男','女')),
sclasschar(), sremarkchar(),
addresschar(), zipcodechar(),
phonechar(), emailchar(),
constraintpk_studentprimarykey(sno)
);
createtablecourseifnotexists(
cnochar(), cnamechar(),
cpnochar(), ctimenumeric(),
creditnumeric(), scorenumeric(),
constraintpk_courseprimarykey(cno),
);
createtablescore(
snochar(),
cnochar(),
scorenumeric(),
primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno)
);
createtableteacher(
tnochar(), tnamechar(),
tsexchar(), tbirthdayDatetime,
positionchar(), departmentchar(),
tamountnumeric(,), experiencechar(),
primarykey(tno),
);
createtableteaching(
tnochar(),
cnochar(),
tdatedatetime, classroomchar(),
sclasschar(),
primarykey(tno,cno),
foreignkey(tno)referencesteacher(tno),
foreignkey(cno)referencescourse(cno)
);
实验二:设计数据插入、修改、删除、更新、查询和视图查询等操作并编程实现
.目的要求
()熟练掌握数据更新语句,灵活地操作插入数据、修改数据和删除数据;
()熟练掌握关系数据库中的完整性概念的应用;
()了解数据录入的方法和过程。
()掌握单表查询的基本方法;
()掌握连接查询的基本方法;
()熟练掌握以下练****并进行以下各类查询:
①选择表中的若干列、查询全部列、查询经过计算的值;
②选择表中的若干元组,即消除取值重复的行与查询满足指定条件的元组(包括:比较大小、确定范围、确定集合、字符匹配、涉及空值和多种条件查询);
③对查询结果排序;
④使用集函数;
⑤对查询结果分组
()熟练掌握以下练****并进行下列各类连接查询:
①等值与非等值连接查询;
②自身连接;
③外连接;
④复合条件连接;
()掌握嵌套查询的基本方法;
()掌握集合查询的基本方法;
()熟练掌握查询视图操作
()熟练掌握更新视图操作
()熟练关系的完整性概念,领会视图的用途
()练****以下各类查询:
①带有IN谓词的子查询;
②带有比较运算符的子查询;
③带有ANY或ALL谓词的子查询;
④带有EXISTS谓词的子查询;
⑤视图查询与更新操作;
.实验内容
()根据以下给定的数据表信息分别对student,course,score,teacher,teching表进行数据插入和修改,以完成给定的数据录入,同时要求输入班级同学名录模拟客观真实情况,给student、score表添加条以上记录,以便以后查询应用方便。
Student表:
Sno
sname
Sbirthday
Sclass
章海潮
..
信管系
王天力
..
电商系
董丞悟
..
电商系
马丽鹃
..
工商系
杨乾坤
..
会计系
刘抗日
..
会计系
丘海棠
..
旅游系
齐振国
..
旅游系
王晓悦
..
材料系
程伊莲
..
材料系
代码如下:
插入数据(条):
usestudent_managment;
insertintostudent(sno,sname,sbirthday,sclass)values
('','章海潮','','信管系'),
('','王天力','','电商系'),
('','董丞悟','','电商系'),
('','马丽鹃','','工商系'),
('','杨乾坤','','会计系'),
('','刘抗日','','会计系'),
('','丘海棠','','旅游系'),
('','齐振国','','旅游系'),
('','王晓悦','','材料系'),
('','程伊莲','','材料系'),
('', '娜迦', '', '电商系'),
('', '大娜迦', '', '电商系'),
('', '美杜莎', '', '天灾系'),
('', '影魔sf', '', '天灾系'),
('', '沙王', '', '电商系'),
('', '剑圣', '', '天灾系'),
('', '食人魔', '', '天灾系'),
('', '恶魔巫师', '', '近卫系'),
('', '潮汐猎人', '', '近卫系'),
('', '赏金猎人', '', '近卫系'),
('', '圣堂刺客', '', '近卫系'),
('', '隐形刺客','', '近卫系'),
('', '幻影刺客', '', '物流系'),
('', '沉默术士', '', '物流系'),
('', '遗忘法师', '', '物流系'),
('', '狼人', '', '敏捷系'),
('', '山岭巨人', '', '力量系'),
('', '大魔导师', '', '智力系'),
('', '秀逗导师', '', '敏捷系'),
('', '暗影恶魔', '', '敏捷系');
course表:
Cno
Cname
Cpno
Credit
Ctime
C
数据库原理
C
C
高等数学
C
管理信息系统
C
C
操作系统
C
C
数据结构
C
C
计算机文化基础
C
C语言程序设计
C
代码如下:
usestudent_managment;
insertintocourse(cno,cname,credit,ctime)values
('C', '高等数学', , ),
('C', '计算机文化基础', , );;
insertintocourse(cno,cname,cpno,credit,ctime)values
('C', '管理信息系统', 'C', , );
insertintocourse(cno,cname,cpno,credit,ctime)values
('C', '操作系统', 'C', , ),
('C', '数据库原理', 'C', , ),
('C', 'C语言程序设计', 'C', , ),
('C', '数据结构', 'C' , );
score表:
Sno
Cno
Score
C
C
C
C
C
C
C
C
C
C
代码如下:
usestudent_managment;
insertintoscore(sno,cno,score)values
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', ),
('', 'C', );
teacher表:
Tno
Tname
Tsex
Department
T
江承基

信息管理系
T
梁其征

信息管理系
T
徐茉莉

信息管理系
T
吴雅云

信息管理系
T
杨运铎

电子商务系
T
张昌盛

电子商务系
T
程力衡

电子商务系
代码如下:
usestudent_managment;
insertintoteacher(tno,tname,tsex,department)values
('T', '江承基', '男', '信息管理系'),
('T', '梁其征', '男', '信息管理系'),
('T', '徐茉莉', '女', '信息管理系'),
('T', '吴雅云', '女', '信息管理系'),
('T', '杨运铎', '男', '电子商务系'),
('T', '张昌盛', '男', '电子商务系'),
('T', '程力衡', '男', '电子商务系');
Teaching表
Tno
cno
tdate
classroom
sclass
T
C
--
西二
信管系
T
C
--
西二
电商系
T
C
--
西二
电商系
T
C
--

工商系
T
C
--

会计系
T
C
--
西二
会计系
代码如下:
insertintoteaching(tno,cno,tdate,classroom,sclass)values
('T', 'C', '', '西二', '信管系'),
('T', 'C', '', '西二', '电商系'),
('T', 'C', '', '西二', '电商系'),
('T', 'C', '', '主', '工商系'),
('T', 'C', '', '主', '会计系'),
('T', 'C', '', '西二', '会计系');
()将两个同学(数据自己临时设置,用后即删除)的两门课程的成绩以运行SQL语句插入的形式加入score表中。该题用以验证、理解和掌握关系模型的完整性规则;
insertintoscore(sno,cno,score)values
('', 'C', ),
('', 'C', );
()求每门课的平均成绩,并把结果存入average表;
insertintoaverage(cno,av_score)
selectcno,AVG(score)fromscore
groupbycno;
()将学生“马丽鹃”的出生日期改为“..”;
USEapple
UPDATEStudent
SETsbirthday='--'
WHEREsno='';
()将所有学生的zipcode属性列值填补上;
INSERTINTOStudent(zipcode)values('');
()将average表中的所有课程的平均成绩置零;
UPDATEaverageSETAvg_score=;
()删除average表中的课程号为‘c’的平均成绩记录;
DELETEFROMaverageWHEREcno='c';
()删除所有average表中平均成绩记录;
DELETEFROMaverage;
()建立一个临时学生信息表(tstudent),删除该表中的学号前六位为‘’的所有学生记录。
CREATETABLEtstudent
(sno Char(),
sname Char()constraintcnotnull,
sbirthday Datetime,
ssex Char()constraintccheck(ssexin(‘男’,‘女’)),
sclass Char(),
sremark Char(),
address Char(),
zipcode Char(),
phone Char(),
email Char(),
constraintpk_studentprimarykey(sno)
);
INSERTINTOtstudent
SELECT*FROMStudent;
DELETEFROMtstudent
()查询全体学生的学号与姓名;
USEapple
SELECTsno,sname
FROMstudent
()查询全体学生的学号、姓名、所属班级;
USEapple
SELECTsno,sname,sclass
FROMstudent
()查询全体学生的详细记录;
USEapple
SELECT*
FROMstudent
()查询全体学生的姓名及其年龄;
()查询全体学生的姓名、出生年份;
USEapple
SELETEsname,sbirthday
FROMstudent
()查询所有修过课的学生的学号;
USEapple
SELECTsnoFROMscore
()查询“信管系”班全体学生名单;
USEapple
SELETEsname
FROMstudent
WHEREsclass=’信管系’
()查询查询所有年龄在岁以下的学生姓名及其年龄;
selectsname,-YEAR(sbirthday)fromstudentwhereYEAR(sbirthday)>;
-----年龄小于岁就是出生年份大于减去即年就行了---
()查询考试成绩有不及格的学生的学号;
selectsnofromscorewherescore<;
()查询年龄在至岁之间的学生姓名、班级和年龄;
selectsname,sclass,-YEAR(sbirthday)fromstudentwhereYEAR(sbirthday)betweenand;
--同样把出生日期转化为年份,然后用年份算出年龄
()查询年龄不在至岁之间的学生姓名、班级和年龄;
selectsname,sclass,-YEAR(sbirthday)
fromstudent
whereYEAR(sbirthday)notbetweenand;
--同样把出生日期转化为年份,然后用年份算出年龄