数据库实验报告_第1页
数据库实验报告_第2页
数据库实验报告_第3页
数据库实验报告_第4页
数据库实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验1 数据库设计实验名称:数据库设计实验内容:以所在学校选课和课程管理为实际应用背景,设计一个教学管理数据库。假设至少包含以下需求:学生信息管理;课程信息管理;教师信息管理;学生选修课程及成绩信息管理;教师负责课程和讲授课程信息管理。实验目的:通过实践,掌握本章介绍的数据库设计方法。学会使用PowerDesigner来完成数据库设计过程。实验方法:(1)根据实验内容明确要完成的系统功能。(2)运行PowerDesigner创建概念数据模型转换成逻辑数据模型,建立实体、属性和联系。对关键字、空值、域完整性等做出必要的描述,根据实际情况确定联系的类型。(3)将检查无误的概念数据类型转换成逻辑数据

2、模型,并对生成的逻辑数据模型作必要的修改。(4)选择一个实际的DBMS软件根据逻辑数据模型生成物理数据模型,并对生成的物理数据模型作必要的修改。实验要求:使用PowerDesiger或其他建模工具完成本实验。建立满足需求的概念数据模型,逻辑数据模型和物理数据模型。提交实验报告(含完整的设计文档)。实验过程、源程序、运行结果及简单分析:概念数据模型逻辑数据物理数据模型总结:经过对这个实验的制作,信息比较多,做表格有点复杂,涉及的框架知识多,对关键字、空值、域完整性做的描述基本熟练。对概念数据模型、物理数据模型、逻辑数据模型的基本掌握。开始对数据库的设计有了一定的了解。实验2 建立表和完整性约束实

3、验名称:建立数据库、架构、表和定义完整性约束实验内容:参见2.1.7数据库的CREATE DATABASE命令首先建立数据库,然后参照图5-1和表5-8建立表并定义完整性约束,可以在此基础上根据自己学校的实际情况增加表、字段和约束等。实验目的:熟练掌握表的建立和数据完整性约束的定义方法,实践DBMS提供的数据完整性功能,加深对数据完整性的理解。实验方法:用CREATE DATABASE命令建立数据库,使用CREATE SCHEMA命令建立架构,用CREATE TABLE命令建立表并定义数据完整性约束,用ALTER TABLE命令修改表结构。实验要求:(1)用CREATE DATABASE命令建

4、立数据库(自己命名数据库的名称)。用CREATE SCHEMA命令建立架构(自己命名架构名称)。在定义的架构下参照图5-1所示的样本数据库和表5-8的具体要求使用CREATE TABLE命令建立表并定义完整性约束。用ALTER TABLE命令按如下要求修改表结构:为学生表增加一个“平均成绩”字段,类型为短整数,默认是空值;为课程表的“学时”字段重新定义约束:取值为8的倍数,不允许为空值;将院系表的名称字段的类型修改为varchar(30)。 为教师表增加一个工资字段,类型为5位整数、2位小数的数值型。实验过程、源程序、运行结果及简单分析:建立数据库create database 教务信息on

5、(name = juxx_dat, filename = 'C:Program FilesMicrosoft SQL Server90ToolsBinnVSShellCommon7林碧娴', size=10mb, maxsize=50mb, filegrowth=5mb)log on (name=juxx_log, filename='C:Program FilesMicrosoft SQL Server90ToolsBinnVSShellCommon7lin', size=5mb, maxsize=25mb, filegrowth=5mb) 建立架构creat

6、e schema 教务信息定义表及完整性约束create table 教务信息.院系(编号smallint primary key,名称char(20)not null,负责人char(10),办公地点char(20)create table 教务信息.学生(学号char(8)primary key,院系smallint foreign key references 教务信息.院系(编号),姓名char(10)not null,性别char(2)check(性别= '男' or 性别= '女'),生源char(6),状态char(4)check(状态= '

7、;正常' or 状态= '留级' or 状态= '休学' or 状态= '退学')create table 教务信息.教师(教师编号char(8)primary key,院系smallint foreign key references 教务信息.院系(编号),姓名char(10)not null,性别char(2)check(性别= '男' or 性别= '女'),职称char(6)check(职称= '教授' or 职称= '副教授' or 职称= '讲师'

8、; or 职称= '助教'),专业char(10)create table 教务信息.课程(课程编号char(8)primary key,课程名称char(20)not null,责任教师char(8)foreign key references 教务信息.教师(教师编号),学时int not null,课程性质char(10)check(课程性质= '公共基础' or 课程性质= '专业基础' or 课程性质= '专业选修' or 课程性质= '任意选修')create table 教务信息.选课(学号char(

9、8)primary key foreign key references 教务信息.学生(学号),课程编号char(8)foreign key references 教务信息.课程(课程编号),成绩int check(成绩>=0 and 成绩<=100)default null)修改表结构alter table 教务信息.学生add 平均成绩smallint default nullalter table 教务信息.课程add constraint sb check (学时% 8=0)alter table 教务信息.院系alter column 名称varchar(30)alte

10、r table 教务信息.教师add 工资numeric (7,2)总结:通过此次的实验,让我对使用CREATE DATABASE命令建立数据库有了更加熟练的认识,对CREATE SCHEMA命令建立架构的基本掌握,学会了使用CREATE TABLE命令建立表并定义数据完整性约束,也ALTER TABLE命令修改表架构。学到了更多,懂得了更多。实验3 数据操作及完整性约束体验实验名称:数据操作及完整性约束体验实验内容:在实验2的基础上完成数据的插入操作,然后进行部分修改和删除操作,在这些操作中体会数据完整性约束的作用。实验目的:熟练掌握SQL的INSERT、UPDATE和DELETE命令,深刻

11、理解数据完整性约束的作用以及约束时机。实验方法:在实验2的基础上首先用INSERT命令插入各个表的记录,然后使用UPDATE和DELETE命令对部分记录进行修改和删除操作。实验要求:(1)读者自行设计各个表的记录,记录院系表至少10条记录、学生表至少30条记录、课程表至少10条记录、教师表至少10条记录、选课表至少50条记录。(2)使用INSERT命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户完整性约束的插入操作,并分析原因。(3)设计若干删除操作,体会执行删除操作时检查参照完整性规则的效果(要求涉及拒绝删除、空值删除、和级联删除等不同的处理方式)。(4)设计若干更新

12、操作,体会执行更新操作时检查实体完整性规则、参照完整性规则和定义完整性规则的效果。(5)在实验报告中要给出具体的记录和设计的操作,并针对各种数据完整性检查给出具体的分析和讨论。实验过程、源程序、运行结果及简单分析:插入数据insert into 教务信息.院系values('01','理学院','E1','二教')insert into 教务信息.院系values('02','财经学院','E2','三教')insert into 教务信息.院系values('

13、;03','电气学院','E3','四教')insert into 教务信息.院系values('04','土建学院','E4','四教')insert into 教务信息.院系values('05','医学院','E5','三教')insert into 教务信息.院系values('06','外语学院','E6','三教')insert into

14、 教务信息.院系values('07','管理学院','E7','三教')insert into 教务信息.院系values('08','麓山学院','E8','五教')insert into 教务信息.院系values('09','汽车学院','E9','六教')insert into 教务信息.院系values('10','生化学院','E10',

15、9;三教')insert into 教务信息.学生values('2012001','01','林一','女','南宁','正常','80')insert into 教务信息.学生values('2012002','02','雷一','女','崇左','正常','90')insert into 教务信息.学生values('2012003','

16、;01','莫一','女','河池','正常','80')insert into 教务信息.学生values('2012004','05','曹一','女','北海','正常','80')insert into 教务信息.学生values('2012005','04','董一','女','百色','正常'

17、;,'80')insert into 教务信息.学生values('2012006','07','封一','女','南宁','正常','80')insert into 教务信息.教师values('001','01','林二','女','教授','统计学','4000')insert into 教务信息.教师values('002','

18、;02','雷二','男','副教授','信计学','3000')insert into 教务信息.教师values('003','03','莫二','女','讲师','统计学','4000')insert into 教务信息.教师values('004','05','曹二','女','助教','数应学'

19、;,'2000')insert into 教务信息.课程values('101','数学分析','001','40','公共基础')insert into 教务信息.课程values('102','概率论','002','40','专业基础')insert into 教务信息.课程values('103','数据库','003','24','专业选修

20、')insert into 教务信息.课程values('104','计量经济学','004','40','任意选修')insert into 教务信息.选课values('2012001','101','80')insert into 教务信息.选课values('2012002','102','70')insert into 教务信息.选课values('2012003','103&#

21、39;,'80')insert into 教务信息.选课values('2012004','104','60')insert into 教务信息.选课values('2012005','101','90')insert into 教务信息.选课values('2012006','103','80')设计若干操作违反完整性约束的操作insert into 教务信息.院系values('01','职教院',&

22、#39;E11','三教')删除操作delete 教务信息.选课where 学号= '2012006'更新操作update 教务信息.学生set 学号='2012002' where 学号='2012007'总结:初次使用SQL软件的灵敏度的欠缺,也基本掌握了SQL的INSERT、UPDATE和DELETE命令,能理解数据完整性约束的作用以及约束时机。各个表格的设计也偶尔出现了命令行出错,然后在进行解决。实验4 数据查询实验名称:使用SQL SELECT 语句的数据查询操作。实验内容:在实验2和实验3的基础上完成规定的查询

23、操作。实验目的:熟练掌握SQL SELECT 的命令。实验方法:在实验2和实验3的基础上使用SQL SELECT命令完成实验要求中所规定的各种查询。实验要求:在实验2和实验3的基础上按要求设计查询,并用SQL SELECT 命令查询。1.一般简单查询不带条件的查询指定字段。查询某个表的全部信息。使用单个条件的简单查询。使用多个条件(AND关系)的简单查询。使用多个条件(OR关系)大简单查询。使用多个条件(AND和OR关系)的查询。使用带NOT运算的查询。使用BETWEEN.AND.的查询。使用NOT.BETWEEN.AND.的查询。使用LIKE运算符的字符串的匹配查询。使用LIKE的模板匹配查

24、询。使用空值和非空值查询。结果要求排序的查询。查询结果按多列排序,并分别按升序和降序查询。使用TOP显示前若干记录的查询。使用TOP显示前若干记录的查询,如果有满足条件的记录一并列入。连接查询两个关系的简单查询。带其他条件的两个关系的连接查询。多个关系的连接查询。两个关于的而广义笛卡儿积运算结果。根据两个关系的广义笛卡儿积运算结果得出两个关系自然连接结果。查询教师-课程信息,结果包含教师姓名、职称、课程名称和课程性质等4个字段。查询教师-课程信息,结果包含教师姓名、职称、课程名称和课程性质等4个字段,要求结果中列出所有教师信息。查询教师-课程信息,查询结果中包含教师姓名、职称、课程名称和课程性

25、质等4个字段,要求结果中能够反应目前没有确定责任教师的课程信息。查询教师-课程信息,查询结果中包含教师姓名,职称,课程名称和课程性质的4个字段,要求结果中技既能反应目前不是责任教师的信息,有能反应目前没有确认责任教师的课程信息。使用嵌套查询使用IN运算符查询。使用NOT IN 运算符查询。使用关系运算符查询。使用ANY或SOME的简单嵌套查询。使用ALL的嵌套查询。查询院系名称为含“计算机”、职称为教授、所负责课程为必修课的教师姓名、职称、课程名称和课程学时等信息(分别用嵌套查询和连接查询完成,分析各自的效率)。设计两个内外层互相关的嵌套查询。使用EXISTS的嵌套查询。使用 NOT EXIS

26、TS的嵌套查询。汇总和分组查询使用COUNT统计数目的查询。使用SUM计算合计的查询。一次完成求和、计数、计算平均值大查询。查询所有课程的成绩都大于60分的学生的平均成绩。查询数据库的成绩大于70分的、所有课程平均分最高的学生信息。查询每个学生的平均成绩。 查询每个学生的所有课程的最高成绩、最低成绩、平均成绩、和所考课 程的门数。 查询至少有10门必修课程考试成绩的每个学生的平均成绩。设计2个使用COMPUTE.BY和COMPUTE的查询。设计1个使用COMPUTE的查询。设计一个使用COMPUTBY的查询。实验过程、源程序、运行结果及简单分析:一般简单查询select 姓名,性别from 教

27、务信息.学生-查询学生的姓名,性别select*from 教务信息.选课-查询选课表的信息select 姓名,院系from 教务信息.教师where 工资!<3000-使用单个条件的简单查询select*from 教务信息.教师where 工资between 2000 and 3000-使用多个条件(AND关系)的简单查询select*from 教务信息.教师where 工资=2000 or 工资=3000-使用多个条件(OR关系)大简单查询select*from 教务信息.教师where 工资between 2000 and 3000 or 工资=4000-使用多个条件(AND和OR关

28、系)的查询select*from 教务信息.教师where not 工资=2000 or 工资=3000-使用带NOT运算的查询select*from 教务信息.教师where not 工资between 2000 and 3000-使用NOT.BETWEEN.AND.的查询select*from 教务信息.院系where 办公地点like '%三教%'-使用NOT.BETWEEN.AND.的查询select*from 教务信息.院系where 编号is not null-使用空值和非空值查询select*from 教务信息.教师order by 工资-结果要求排序的查询sel

29、ect top(3)*from 教务信息.教师order by 工资-使用TOP显示前若干记录的查询select top(3)with ties*from 教务信息.教师order by 工资-使用TOP显示前若干记录的查询,如果有满足条件的记录一并列入(2)连接查询select 姓名,专业,课程名称from 教务信息.教师join 教务信息.课程on 教师编号=责任教师where 工资>2000select 姓名,专业,课程名称,院系.名称from 教务信息.教师join 教务信息.课程on 教师编号=责任教师join 教务信息.院系on 教师.院系= 院系.编号where 工资>

30、;2000select*from 教务信息.教师cross join 教务信息.院系select 姓名,职称,课程.课程名称,课程性质from 教务信息.教师join 教务信息.课程on 教师编号= 责任教师select 姓名,职称,课程.课程名称,课程性质from 教务信息.教师left join 教务信息.课程on 教师编号= 责任教师select 姓名,职称,课程.课程名称,课程性质from 教务信息.教师right join 教务信息.课程on 教师编号= 责任教师select 姓名,职称,课程.课程名称,课程性质from 教务信息.教师full join 教务信息.课程on 教师编号

31、= 责任教师嵌套查询select 院系.编号from 教务信息.院系where 编号in(select 院系from 教务信息.学生where 平均成绩= 80)select 院系.编号from 教务信息.院系where 编号not in(select 院系from 教务信息.学生where 平均成绩= 80)select 姓名from 教务信息.学生where 平均成绩=(select 平均成绩from 教务信息.学生where 姓名='林一')select distinct 姓名from 教务信息.学生where 平均成绩>=any(select 平均成绩from 教

32、务信息.学生where 院系=1)select distinct 姓名from 教务信息.学生where 平均成绩=all(select 平均成绩from 教务信息.学生where 院系=1)select 课程名称,学时,课程性质from 教务信息.课程outawhere 学时=(select max(学时) from 教务信息.课程where 责任教师in(select 教师编号from 教务信息.教师where 教师编号= 责任教师)select*from 教务信息.院系where not exists(select*from 教务信息.学生where 院系= 编号)select sum(工资),count(*),avg(工资),max(工资),min(工资) from 教务信息.教师select avg(平均成绩) from 教务信息.学生select distinct 工资from 教务信息.教师compute count(工资)select*from 教务信息.教师order by 教师编号compute av

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论