数据库实验报告.docx
- 文档编号:10722762
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:18
- 大小:35.98KB
数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
数据库实验报告
实验1数据库设计
实验名称:
数据库设计
实验内容:
以所在学校选课和课程管理为实际应用背景,设计一个教学管理数据库。
假设至少包含以下需求:
学生信息管理:
课程信息管理:
教师信息管理;
学生选修课程及成绩信息管理;
教师负贯课程和讲授课程信息管理。
实验目的:
通过实践,掌握本章介绍的数据库设计方法。
学会使用PoweiDesigner来完成数据库设计过程。
实验方法:
(1)根据实验内容明确要完成的系统功能。
(2)运行PoweiDesigner创建概念数据模型转换成逻辑数据模型,建立实体、属性和联系。
对关键字、空值、域完整性等做出必要的描述,根据实际情况确定联系的类型。
(3)将检查无误的概念数据类型转换成逻辑数据模型,并对生成的逻辑数据模型作必要的修改。
(4)选择一个实际的DBMS软件根据逻辑数据模型生成物理数据模型,并对生成的物理数据模型作必要的修改。
实验要求:
使用PowerDesiger或其他建模工具完成本实验。
建立满足需求的概念数据模型,逻辑数据模型和物理数据模型。
提交实验报告(含完整的设计文档)。
实验过程、源程序、运行结呆及简单分析:
概念数据模型
课程名称Characters(20)
课程编号
学时Characters(10)
学为Characters(10)
课程编号<pi>
学生
(1(2(2(4仃
KJKJKJ000)0
帅名别
1>
>
M
\7\/\7
202010
(-/\/\
学号<pi>
逻辑数据
•pi,fi2>Characters(10) pi,fil>Characters(10)ZX 课程名称 Characters (20) pi Characters (10) 数师垢号 Characters (20) 学时 Characters (10) 学分 Characters (10) i更程城号 pi- 滦程 ft® Identifier^! pi> 授课 教师塢兮 Identifierlpi 物理数据模型 选课 丁ftW 性別Characters(10) 敦师编号5i> 课祝 课程名称char©0) 课程编号char(10) 李分char(10) char(10) 授课 教师編号char(20) ;char(10)^pk,fk2> 学生 char(10) char(20)char(4) char(10) 师名别 char(20) char(10: 总结: 经过对这个实验的制作,信息比较多,做表格有点复杂,涉及的框架知识多,对关键字、空值、域完整性做的描述基本熟练。 对概念数据模型、物理数据模型、逻辑数据模型的基本掌握。 开始对数据库的设计有了一定的了解。 实验2建立表和完整性约束 实验名称: 建立数据库、架构、表和定义完整性约束实验内容: 参见2.1.7数据库的CREATEDATABASE命令首先建立数据库,然后参照图5-1和表5-8建立表并定义完整性约束,可以在此基础上根据自己学校的实际情况增加表、字段和约束等。 实验目的: 熟练掌握表的建立和数据完整性约束的定义方法,实践DBMS提供的数据完整性功能,加深对数据完整性的理解。 实验方法: 用CREATEDATABASE命令建立数据库,使用CREATESCHEMA命令建立架构,用CREATETABLE命令建立表并定义数据完整性约束,用ALTERTABLE命令修改表结构。 实验要求: (1)用CREATEDATABASE命令建立数据库(自己命名数据库的名称)。 用CREATESCHEMA命令建立架构(自己命名架构名称)。 在定义的架构卜•参照图5-1所示的样本数据库和表5-8的具体要求使用CREATETABLE命令建立表并定义完整性约束。 用ALTERTABLE命令按如下要求修改表结构: 为学生表增加一个“平均成绩”字段,类型为短整数,默认是空值; 为课程表的“学时”字段重新定义约束: 取值为8的倍数,不允许为空值;将院系表的名称字段的类型修改为vaichai-(30)o 为教师表增加一个工资字段,类型为5位整数、2位小数的数值型。 实验过程、源程序、运行结呆及简单分析: 建立数据库 createdatabase教务信息 on(name=juxx_dat, filename=C'PiogmmFilesMvIicrosoftSQLSenTer\90\Tools\Buin\VSShell\Coiniiion7\林碧娴; size=10mb, maxsize=50mb, filegrowth=5mb) logon (name=juxx_log, filename=,C: \ProgramFiles\MicrosoftSQLSeiver\90\Tools,,Biiui\VSShell\Conmion7\lin\size=5mb, niaxsize=25mb, filegrox\lli=5mb) 建立架构 createschema教务信息 定义表及完整性约束 createtable教务信息.院系 (编号sniallintprimarykey, 名称char(20)notnull. 负资人char(10), 办公地点char(20)) createtable教务信息•学生 (学号chai(8)piiinarykey, 院系smallmtforeignkeyreferences教务信息•院系(编号), 姓名char(l0)notnull. 性别char (2)check(性别=労or性别=女), 生源char(6), 状态char(4)check(状态=,正常5状态=,留级'or状态休学5状态=泄学为 createtable教务信息.教师 (教师编号cliar(8)piiiiiarykey, 院系smallmtforeignkeyreferences教务信息•院系(编号), 姓名char(l0)notnull. 性别char (2)check(性别=男or性别=女), 职称char(6)check(职称-教授kr职称=,副教授职称讲师Pr职称=,助教? , 专业char(10)) createtable教务信息.课程 (课程编号cliai(8)piiiiiarykey, 课程名称char(20)notnull, 责任教师cliar(8)foieignkeyreferences教务信息.教师(教师编号),学时intnotnull. 课程性质char(10)check(课程性质=公共基础,or课程性质「专业基础,or课程性质=专业选修,or课程性质=,任意选修)) createtable教务信息.选课 (学号chai(8)piiinarykeyforeignkeyreferences教务信息•学生(学号),课程编'4cliar(8)foieignkeyreferences教务信息.课程(课程编号),成绩intcheck(成绩>=0and成绩<=100)defaultnull)修改表结构altertable教务信息.学生 add平均成绩smallintdefaultnull altertable教务信息.课程 addconstraintsbcheck(学时%8=0) altertable教务信息.院系 altercolumn名称varchar(30) altertable教务信息.教师 add工资numeric(7,2) 总结: 通过此次的实验,让我对使用CREATEDATABASE命令建立数据库有了更加熟练的认识,对CREATESCHEMA命令建立架构的基本掌握,学会了使用CREATETABLE命令建立表并定义数据完整性约束,也ALTERTABLE命令修改表架构。 学到了更多,懂得了更多。 实验3数据操作及完整性约束体验 实验名称: 数据操作及完整性约束体验 实验内容: 在实验2的基础上完成数据的插入操作,然后进行部分修改和删除操作,在这些操作中体会数据完整性约束的作用。 实验目的: 熟练掌握SQL的INSERT、UPDATE和DELETE命令,深刻理解数据完整性约束的作用以及约束时机。 实验方法: 在实验2的基础上首先用INSERT命令插入各个表的记录,然后使用UPDATE和DELETE命令对部分记录进行修改和删除操作。 实验要求: (1)读者自行设计各个表的记录,记录院系表至少10条记录、学生表至少30条记录、课程表至少10条记录、教师表至少10条记录、选课表至少50条记录。 (2)使用INSERT命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户完整性约束的插入操作,并分析原因。 (3)设计若干删除操作,体会执行删除操作时检查参照完整性规则的效果(要求涉及拒绝删除、空值删除、和级联删除等不同的处理方式)。 (4)设计若干更新操作,体会执行更新操作时检查实体完整性规则、参照完整性规则和定义完整性规则的效果。 (5)在实验报告中要给出具体的记录和设计的操作,并针对各种数据完整性检查给出具体的分析和讨论。 实验过程、源程序、运行结呆及简单分析: 插入数据 insertinto教务信息.院系values('0r;J^学院JE1丁二教? insertinto教务信息.院系values('02,»,财经学院;'E2;三教)insertmto教务信息.院系values('03';电气学院JE3;'四教)insertinto教务信息.院系values('O4',吐建学院JE4;'四教)insertinto教务信息.院系values('05\'医学院JE5;三教? insertinto教务信息.院系values(;06丁外语学院TE6J三教Jinsertinto教务信息.院系values('O7;'管理学院三教)insertinto教务信息.院系valuesCOS;'^山学院TE8丁五教Jinsertinto教务信息.院系values(Q9J汽车学院JE9丁六教)insertinto教务信息.院系values('10•: 生化学院;上10丁三教? insertinto教务信息.学生values('201200T,'01;淋一丁女;南宁丁正常丁801)insertinto教务信息.学生values('2012002;'02丁雷一女丁崇左丁正常丁90*)insertinto教务信息.学生values(2012003,,01,,莫一丁女;河池丁正常;*80')insertinto教务信息.学生values(,2012004\,05,;曹一丁女丁北海丁正常;*80')insertinto教务信息.学生values('2012005;'04;'董一女丁百色丁正常丁80)insertinto教务信息.学生values(,2012006,;07',W—女丁南宁丁正常;*80')insertmto教务信息.教师values('00r;0r;林二丁女丁教授;,统计学': 4000') insertinto教务信息.教师values('002,;02,;雷二;•男,,副教授丁信计学丁3000) insertinto教务信息.教师values('OO3','O3';莫二;女,讲师;,统计学\'4000*) insertinto教务信息.教师values('004\'05';曹二;•女;助教丁数应学丁2000,) iiiseninto教务信息.课程values('101','数学分析,,,001,;40y公共基础? insertinto教务信息.课程values('102','概率论','002;'40','专业基础') insertinto教务信息.课程values('103','数据库丁003丁24丁专业选修') iiiseninto教务信息.课程values('104',计量经济学,,'004,,'40,;任意选修') iiiseitmto教务信息.选课values('2012001','101'/SO') insertmto教务信息.选课values(,2012002\'102,,,70') iiiseitmto教务信息.选课values('2012003103'/SO') iiiseitmto教务信息.选课values('2012004','104',*60') insertmto教务信息.选课valuesC2012005T101J9(y) iiiseitmto教务信息.选课values('2012006',*103','80') 设计若干操作违反完整性约束的操作 insertinto教务信息.院系values(X)片职教院JE11;三教J 删除操作 delete教务信息.选课where学号=0012006' 更新操作 update教务信息.学生set学号=*2012002'where学号='2012007* 总结: 初次使用SQL软件的灵敏度的欠缺,也基本掌握了SQL的INSERT、UPDATE和DELETE命令,能理解数据完整性约束的作用以及约束时机。 各个表格的设计也偶尔出现了命令行出错,然后在进行解决。 实验4数据査询 实验名称: 使用SQLSELECT语句的数据查询操作。 实验内容: 在实验2和实验3的基础上完成规定的查询操作。 实验目的: 熟练掌握SQLSELECT的命令。 实验方法: 在实验2和实验3的基础上使用SQLSELECT命令完成实验要求中所规定的各种查询。 实验要求: 在实验2和实验3的基础上按要求设计查询,并用SQLSELECT命令查询。 1.一般简单查询 不带条件的查询指定字段。 查询某个表的全部信息。 使用单个条件的简单查询。 使用多个条件(AND关系)的简单查询。 使用多个条件(OR关系)大简单查询。 使用多个条件(AND和OR关系)的查询。 使用带NOT运算的查询。 使用EETWEEN...AND...的查询。 使用NOT...EETWEEN...AND...的查询。 使用LIKE运算符的字符串的匹配查询。 使用LIKE的模板匹配查询。 使用空值和非空值查询。 结果要求排序的查询。 查询结果按多列排序,并分别按升序和降序查询。 使用TOP显示前若干记录的查询。 使用TOP显示前若干记录的查询,如果有满足条件的记录一并列入。 连接查询 两个关系的简单查询。 带其他条件的两个关系的连接查询。 多个关系的连接查询。 两个关于的而广义笛卡儿积运算结果。 根据两个关系的广义笛卡儿枳运算结果得出两个关系自然连接结果。 查询教师-课程信息,结果包含教师姓名、职称、课程名称和课程性质等4个字段。 查询教师-课程信息,结果包含教师姓名、职称、课程名称和课程性质等4个字段,要求结果中列出所有教师信息。 查询教师-课程信息,查询结果中包含教师姓名、职称、课程名称和课程性质等4个字段,要求结果中能够反应目前没有确定责任教师的课程信息。 查询教师-课程信息,查询结果中包含教师姓名,职称,课程名称和课程性质的4个字段,要求结果中技既能反应目前不是责任教师的信息,有能反应目前没有确认责任教师的课程信息。 使用嵌套查询 使用IN运算符查询。 使用NOTIN运算符查询。 使用关系运算符查询。 使用ANY或SOME的简单嵌套查询。 使用ALL的嵌套查询。 查询院系名称为含“计算机”、职称为教授、所负责课程为必修课的教师姓名、职称、课程名称和课程学时等信息(分别用嵌套查询和连接查询完成,分析各自的效率)。 设计两个内外层互相关的嵌套查询。 使用EXISTS的嵌套查询。 使用NOTEXISTS的嵌套查询。 汇总和分组查询 使用COUNT统计数目的查询。 使用SUM计算合计的查询。 一次完成求和、计数、计算平均值大查询。 查询所有课程的成绩都大于60分的学生的平均成绩。 查询数据库的成绩大于70分的、所有课程平均分最高的学生信息。 查询每个学生的平均成绩。 查询每个学生的所有课程的最高成绩、最低成绩、平均成绩、和所考课 程的门数。 查询至少有10门必修课程考试成绩的每个学生的平均成绩。 设计2个使用COMPUTE..BY和COMPUTE的查询。 设计1个使用COMPUTE的查询。 设计一个使用COMPUT...BY的查询。 实验过程、源程序、运行结果及简单分析: 一般简单查询 select姓名,性别 from教务信息.学生 -查询学生的姓名,性别 select*fiom教务信息.选课 -查询选课表的信息 select姓名,院系 from教务信息.教师 where工资! 今000 -③使用单个条件的简单查询 select*fiom教务信息.教师 where匸资between2000and3000 -®使用多个条件(AND关系)的简单查询 select*fiom教务信息.教师 where工资=2000or工资=3000 -⑤使用多个条件(OR关系)人简单查询 select*fiom教务信息.教师 where工资between2000and3000or工资=4000 -©使用多个条件(AND和OR关系)的查询 select*fiom教务信息.教师 wherenot工资=2000or工资=3000 -⑦使用带NOT运算的查询 select*fiom教务信息.教师wherenot匸资between2000and3000 -使用NOT...BETWEEN...AND...的查询 select*fiom教务信息.院系where办公地点like,%三教%,-使用NOT...BETWEEN...AND...的查询 select*fiom教务信息.院系where编号isnotnull -使用空值和非空值查询 select*fiom教务信息.教师orderby匸资 -结果要求排序的查询 selecttop(3)*fiom教务信息.教师orderby工资 -使用TOP显示前若干记录的查询 selecttop(3)withties*from教务信息.教师orderby匚资 -使用TOP显示前若干记录的查询,如果有满足条件的记录一并列入 (2)连接查询 select姓名,专业,课程名称from教务信息.教师join教务信息.课程 on教师编号=贵任教师 where工资>2000 select姓名,专业,课程名称,院系.名称fiom教务信息.教师join教务信息.课程on教师编号=贵任教师 join教务信息.院系on教师.院系=院系.编号 where工资>2000 select*fiom教务信息.教师crossjom教务信息.院系 select姓名,职称,课程.课程名称,课程性质 from教务信息.教师join教务信息.课程 on教师编号=责任教师select姓名,职称,课程.课程名称,课程性质from教务信息.教师leftjom教务信息.课程on教师编号=资任教师 select姓名,职称,课程.课程名称,课程性质from教务信息.教师rightjoin教务信息.课程on教师编号=资任教师 select姓名,职称,课程.课程名称,课程性质 from教务信息.教师fiilljoin教务信息.课程on教师编号=资任教师 嵌套查询 select院系.编from教务信息.院系where编号in(select院系仕om教务信息.学生where平均成绩=80) select院系.编号from教务信息.院系where编号notin(select院系仕om教务信息.学生where平均成绩=80)select姓名fkom教务信息.学生where平均成绩=( select平均成绩仕om教务信息.学生where姓名=,林一・) selectdistinct姓名fkom教务信息.学生where平均成绩>=any( select平均成绩仕om教务信息.学生where院系=1) selectdistinct姓名fkom教务信息.学生where平均成绩=&11( select平均成绩仕om教务信息.学生where院系=1) select课程名称,学时,课程性质from教务信息.课程outa where学时=(selectniax(学时)fkom教务信息.课程where贵任教师ni(select教师编号fem教务信息.教师where教师编号=贵任教师)) select*fiom教务信息.院系wherenotexists(select*fiom教务信息.学生where院系=编号) selectsum(匸资),count(*),avg(匸资),max(匸资),min(匚资)from教务信息.教师 selectavg(平均成绩)fiom教务信息.学生 selectdistinctE资from教务信息.教师computecount(工资) select*fiom教务信息.教师orderby教师编号 computeavg(工资),sum(匸资)by教师编号 computeavg(匸资),sum(匚资) 总结: 通过实验,学会使用SQLSELECT的数据查询操作,对左连接、右连接、内连接全连接的掌握,对简单嵌套查询、条件查询等等各种查询的练习的基本熟悉,同时也对SQLSELECT查询命令的基本框架的熟悉与理解。 让自己的能力有了更好的提升。 实验5视图的应用 实验名称: 视图的建立和应用 实验内容: 在实验2和实验3的基础上定义视图,并在视图上查询以及插入、删除、和更新和操作。 实验目的: 掌握视图定义和应用方法,体会视图和基本表的异同。 实验方法: 在实验2和实验3的基础上用CREATEVIEW命令定义视图,然后使用SELECT命令完成查询,使用INSERT.UPDATE和DELETE命令分别完成插入、更新和删除操作。 实验要求: 在实验2建立的基本表的基础上,按如下要求设计和建立视图: 基于单个表按投影操作定义视图。 基于单个表按选择操作定义视图。 基于单个表按选择和投影操作定义视图。 基于多个表根据连接操作定义视图。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)