中南财经政法大学《数据库及其应用》实验报告一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库及其应用》实验报告
实验序号:B0901000-02 实验项目名称:数据库设计及数据库创建与应用
本实验的操作步骤如下。
(
一) 数据库与表的设计与创建
1.给定如下数据分析,进行概念设计与逻辑设计。
即设计系统的E-R 模型并转换为关系模型。
E-R 模型
关系模型
学生(学号,姓名,性别,生日,民族,籍贯,简历,登记照,专业号)
专业(专业号,专业,专业类型,学院号)
学院(学院号,学院名,院长)
课程(课程号,课程名,学分,学院号)
成绩单(成绩,课程号,学号)
2. 数据库结构设计
指定数据库文件的名称,并为设计好的关系模型设计表结构。
数据库文件保存在“E:\教学管理\”文件夹中。
数据库文件名为“教学管理.MDB”,表包括学院名,专业名,学生,课程和成绩单
表一学院
3.定义数据库文件
定义存放路径,和数据库文件。
写出操作步骤。
可包括必要的截图。
步骤:
首先在E盘上建立“教学管理”文件夹,然后启动Access,单击“新建”按钮图标,出现“任务窗格”中单击“空数据库”超链接,出现“文件新建数据库”对话框,在对话框中找到“E: \教学管理”文件夹,然后在“文件名”下拉列表框中输入“教学管理”,单击“创建”按钮,创建完毕。
4.定义数据库中各表
根据事先设计好的结构,分别定义各表、字段名、字段属性。
步骤:
在“数据库”窗口中选择“表”对象栏。
在“表”对象栏窗口中双击“使用设计器创建表”选项,弹出表设计窗口,如图1-1所示。
在设计器中设计“学院表”。
根据事先设计好的结构,分别定义各字段名、字段属性。
然后单击工具栏中的“保存”按钮,弹出“另存为”对话框,如图1-2所示。
在“表名称”文本框中输入“学院”按钮,表对象创建完成。
依次建立“专业”表、“课程”表、“学生”表和“成绩单”表。
定义“学院”表结构↑
命名保存“学院”表对象↑
5.定义表之间的关系
当所有表都定义好后,定义各表之间的关系。
步骤:
当所有的表都定义好后,在工具栏中单击“关系”按钮,弹出关系定义窗口,并同时出现“显示表”对话框,如图1-3所示。
依次选中各表,并单击“添加”按钮,将各表添加到关系窗口中。
选中“学院”表的“学院号”字段,拖到“专业”表内的学院号上,弹出“编辑关系”对话框,选中“实施参照完整性”复选框,如图1-4所示。
单击“创建”按钮,创建“专业”表和“学院”表之间的关系。
类似方式建立“课程”和“学院”、“学生”好“专业”、“成绩”和“学生”及“课程”表之间的关系,得到整个数据库的关系,如图1-5所示。
“显示表”对话框↑定义表之间的关系↑
定义数据库表之间的联系↑
6.输入表记录
当所有表建立好后,可开始输入记录。
简要说明输入的操作。
步骤:
当一个数据库的所有表建立好后,可开始输入记录。
由于表之间存在联系,输入时,应该先输入被引用数据的表记录,然后再输入引用其他表数据的表记录。
这里输入的顺序依次是学院表、专业表、学生表和课程记录表,最后是成绩单表的记录。
在数据库表对象窗口中,双击“学院”表,出现“学院”表的“数据库”视图。
在该视图中依次输入各条记录。
如图1-6所示。
当数据库不再使用时,关闭数据库窗口及Acess。
学院表数据表视图输入记录↑
(二)、Access数据库窗口的基本操作
1.设置教学管理数据库窗口中表对象列表窗口的显示格式为“详细信息”
步骤:
在Acess中打开教学管理数据库,在“对象”栏中选择“表”,然后单击命令栏中的“详细信息”按钮,结果如图1-7所示。
设置数据库窗口对象显示效果↑
2.隐藏和重新显示教学管理数据库窗口
步骤:
选择“工具”→“启动”命令,弹出“启动”对话框。
取消对“显示数据库窗口”复选框的选择,如图1-8所示。
这样,下次再打开该数据库文件时,将不再显示相应的数据库窗口。
要想重新显示数据库窗口,在打开数据库后俺F11键,这时将重新显示数据库窗口。
然后在“启动”对话框中选中“显示数据库窗口”复选框。
3.定义一个“学生与成绩”组,将“学生”、“成绩”表放置到该组中
步骤:
在教学管理数据库窗口中,选择“编辑”→“组”→“新组”命令;或者在对象标签栏
中单击右键,从弹出的快捷菜单中选择“新组”命令,弹出“新建组”对话框。
在“新组名称”
文本框中输入组的名称“学生与成绩”,如图1-9所示,单击“确定”即可,该组显示在对像标签栏中的“收藏夹”下面。
选择“表”对象,然后分别选中“学生”表和“成绩”表单击右键,选择“添加到组”→“学生与成绩”命令即可。
(三)、创建表时的完整性设置
1.定义主键,实现实体完整性的操作
每个表都可以定义主键。
在Access中为教学管理数据库的各表定义主键。
步骤:
在Acess中打开教学管理数据库,进入数据库窗口的表对象窗口界面,选择学生表,单
击设命令,打开学生表的设计器。
可以看到,“学号”字段前有“主键”标识,“学号”字段学表的主键。
若某个表没有定义主键,在该表的设计器中选择可以作为主键的字段,单击工具的“主键”按钮即可。
定义主键后,主键字段不允许重复取值、不允许取空值。
主键可以作为外键的参照字段,实现参照完整性。
当一个表没有合适的字段作为主键时,一般会增加一个“id”字段。
试在“成绩”表中增加一个“成绩id”字段,并定义为“自动编号”型,然后定义其为主键。
2.进行设置参照完整性的操作
在定义的有关系的表上,为关系设置参照完整性。
步骤:
在表对象窗口,单击工具栏中的“关系”按钮,打开“关系”窗口,将所有表添加到窗口中然后将主键拖到发生联系的表的外键上,就会自动弹出如图1-4所示的“编辑关系”对话框然后进行设置即可。
3.通过不同方式实现用户定义的完整性的操作
用户定义的完整性,是指由用户规定的对于表中数据取值的约束。
在Access表定义时,除定义主键和关系外,通过多种方式设置用户定义完整性。
对教学管理数据库中必要的用户定义完整性进行设置和定义
步骤:
以教学管理数据库中的“学生”表为例
在“学生”表中,定义“姓名”等字段不允许取空值;定义“性别”的“有效性规则”为“男”
或“女”;为“学号”字段定义每位只能输入0~9的8位输入掩码等。
如图1-10所示。
定义字段的不重复索引可以限制该字段输入重复值;定义“查阅”控件可以使输入局限在给定的区域内。
(四)字段属性定义与应用
1. 字段显示格式设置
①使“学生”表中的“民族”字段以黄色显示。
步骤:
在“学生”表的设计视图中选中“民族”字段,然后设置“格式”字段属性值为:&&&&&&&&[色],如图所示。
②使“学生”的生日以中文方式、红色显示。
步骤:
在“学生”表设计视图中选中“生日”字段,然后设置“格式”字段属性值为:yyy y\年m\月d\日[红色]。
③使“成绩”表中成绩的显示为3位整数和一位小数,蓝色。
步骤:
在“成绩”表的设计视图中选中“成绩”字段,然后设置“格式”字段值为:###.0[蓝色]。
2.字段输入掩码设置
在定义“学生”表时,由于“学号”是8位文本,且每位都由0~9组成,因此,要在定义“学号”字段时规定每一位的输入都必须是数字。
步骤:
在“学生”表设计视图中选中“学号”字段,定义“输入掩码”字段属性值为00000000.其他如课程表的“课程号”字段、专业表的“专业号”字段等都可以定义类似的输入掩码。
其他如课程表的“课程号”字段、专业表的“专业号”字段等都可以定义类似的输入掩码。
3.定义字段查阅方法
查阅控件与字段绑定,可以提示字段的输入。
为“专业”表的“专业类别”定义查阅控件绑定。
步骤:
进入“专业”表的设计视图,选中“专业类别”字段,选择“查阅”选项卡,在“显示控件”
文本框中选择“列表框”在“行来源类型”文本框中选择“值列表”,在“行来源”下拉列表框中输入“经济学;法学;管理学;理学;工学;人文”。
如图所示。
单击工具栏中的“保存”按钮保存设计,然后单击“视图”按钮进入数据表视图,可以看到,输入“专业类别”时,可以从列表框中选择数据输入,也可以直接输入字符串。
为“专业”表的“学院号”字段设计“查阅”控件。
数据从“学院”表中来,显示“学院号”
和“学院名”两列数据,采用列表框。
如图所示。
(五)数据表视图下数据记录的显示与操作
1.输入操作
利用数据表视图进行输入操作,输入的数据应该满足完整性的要求。
而如果是有关系的表中的子表,外键输入时还要与主键值对应。
根据给定的数据,为数据库中各表(重点介绍一到两个表)输入记录。
为“专业”表增加新的专业记录
步骤:
进入“专业”表的数据表视图。
分别输入“专业号”、“专业”,从列表中选择“专业类别”,然后输入“学院号”,如图所示。
输入完毕后关闭。
2. 修改和删除操作
修改“课程”表,将“运筹学”所在记录的学分增加1分,将开设学院变为“工商管理学院(05)”。
步骤:
进入“课程”表的数据表视图,完成直接修改数据的操作。
删除“课程”表中“美术设计”课程。
3. 数据表视图中的设置
数据表视图是浏览表中数据的界面,可以做不同的设置,以获得不同的效果。
①数据表视图中父子表的展开。
步骤:
进入“学院”表数据视图,若需要展开“信息学院”记录的子表,单击记录左端的“﹢”。
由于“学院”表的子表有两个,因此会弹出“插入字数据表”对话框。
在其中选中“课程表”。
由于“课程”表有“成绩”表的子表,可以进一步单击有关课程的子表展开器“﹢”,这样又展开了下一层子表,如图所示。
②按照指定的字段排序浏览。
在“成绩”数据表视图中,按照成绩的大小排列。
步骤:在“成绩”数据表视图中,若按照成绩的大小排列,选中“成绩”字段,然后单击工具栏中的“降序排列”按钮,数据即重新排列显示。
③在学生表中只显示女生数据记录。
步骤:
在“学生”表的数据表视图中,选择“记录”→“筛选”→“按窗体筛选”命令,这时数据表视图变成“按窗体筛选”窗口,选择“性别”字段,从列表中选择“女”,如图所示。
这时,菜单中出现“筛选”菜单,选择“筛选”→“应用筛选/排序”命令,数据表视图就只显示女生信息。
如图所示。
如要取消筛选,选择“记录”→“取消筛选/排序”即可。
实验项目二:查询
(一)SQL视图中表达式练习
1.进入SQL视图及在不同视图间切换
在不同视图键的转化也是如此
2.不同类型数据的表达式运算
在SQL视图中分别输入以下命令并运行,对于参数自己输入数据。
查看并写出各表达式运算结果。
SELECT -5.12^2+(17 mod 3);
得到:28.2144
SELECT "Hello "+",World!",LEFT("清华大学出版社",2)+RIGHT("清华大学出版社",3);
SELECT "你毕业的年份是", V AL(LEFT([你的学号],4))+4;
SELECT "现在是"+STR(YEAR(DATE()))+"年","现在的时间是:"+CSTR(TIME());
SELECT "张三">"李四","ABCD"<"abcd",(DATE()-#1992-10-8#)>1000;同上操作
(二)SQL命令进行查询和操作
1.练习SQL查询的SELECT语句
启动教学管理数据库,在数据库窗口对象栏中单击“查询”,然后进入SQL视图。
在“SQL视图”中输入以下SELECT命令,查看执行结果,并仔细体会查询的实现。
①查询“学院”、“专业”、“学生”完整数据。
SELECT *
FROM ((学院INNER JOIN 专业ON 学院.学院号=专业.学院号)
INNER JOIN 学生ON 专业.专业号=学生.专业号);
②查询“工商管理”专业所有女生信息。
SELECT 专业,学生.*
FROM 专业INNER JOIN 学生ON 专业.专业号=学生.专业号
WHERE 专业.专业="工商管理" AND 学生.性别="女";
③查询平均成绩在80分以上的各位学生的学号、姓名和平均分。
保存为查询对象,对象名“优秀学生”。
SELECT 学生.学号,姓名,A VG(成绩) AS 平均分
FROM 学生INNER JOIN 成绩ON 学生.学号=成绩.学号
GROUP BY 学生.学号,姓名
HA VING A VG(成绩)>=80 ;
④查询没有学生数据的专业编号和专业。
SELECT 专业号,专业
FROM 专业
WHERE 专业号NOT IN (SELECT 专业号FROM 学生) ;
⑤查询“湖北”籍1988年以后出生的学生信息。
SELECT *
FROM 学生
WHERE 籍贯LIKE "湖北*" AND 生日>=#1988-1-1# ;
⑥查询选课人数最多的课程的课程号、课程名。
SELECT TOP 1 课程.课程号,课程名
FROM 课程INNER JOIN 成绩ON 课程.课程号=成绩.课程号GROUP BY 课程.课程号,课程名
ORDER BY COUNT(*) DESC ;
2.练习SQL的插入、更新、删除操作命令
①在课程表中插入一门新课,数据如命令所示。
INSERT INTO 课程
②将“法学院(04)”开设课程的学分增加1分。
UPDA TE 课程
SET 学分=学分+1
WHERE 学院号="04"
结果如下
③删除“信息学院(09)”开设的没有学生选修的课程。
DELETE FROM 课程
WHERE 学院号="09" AND 课程号NOT IN (SELECT 课程号FROM 成绩)
3.创建“教师”表,包括:工号、姓名、性别、生日、职称、基本工资、学院号。
写出创建命令。
CREATE TABLE 教师
(工号TEXT(6) PRIMARY KEY,
姓名TEXT(10) NOT NULL,
性别TEXT(2),
生日DATE,
职务TEXT(8),
基本工资MONEY,
学院号TEXT(2)REFERENCES 学院(学院号));
(三)选择查询操作
1.进入查询设计视图进行交互式选择查询设置
启动教学管理数据库。
①查询“专业”表,显示开设的所有专业涉及的学科门类。
②查询各专业学生的人数。
在QBE界面中字段栏中选择专业号和专业字段显示,然后单击工具栏上的总计按钮,在QBE 中增加总计栏。
将专业号和专业字段设置为分组,然后选择学生表的学号字段,设置其为计数最后在学号前加上人数,作为列名。
③查询没有选课的男学生学号、姓名,即成绩表中没有记录的学生数据。
选择学号姓名字段显示,在第三列出输入“注:尚未选课”,选中显示复选框。
然后在第四列中选择学号但不显示,只作为比较。
在条件栏中输入一个子查询“NOT IN(SELECT 学号FROM 成绩)”。
2.进行交叉表查询
将学生的“学号”和“姓名”作为行标题,“课程名”作为列标题,成绩作为交叉数据,生成交叉表。
添加学生,成绩,课程表进入设计窗口。
选择查询-交叉表查询命令。
然后在QBE表格中依次设置
3.进行参数查询
通过参数查询指定日期以后出生的某个民族的学生信息。
将添加学生表进入设计视图,在QBE界面中字段栏选择*表示输出所有字段。
然后选中生日字段,去掉显示行的复选框,在条件行输入>[SR];按同样方式设置民族字段。
然后选择查询-参数命令,弹出查询参数对话框,分别设置SR和MZ的类型,单击确定。
(四)动作查询操作
1.生成表查询操作练习
将“查询平均成绩在80分以上的各位学生的学号、姓名和平均分”的结果生成新表,表名“优秀学生名单”。
输入SQL命令后,选择查询-生成表,弹出生成表对话框,输入表名。
2.删除查询操作
删除“优秀学生名单”表中,平均分在85分以下的记录
进入设计视图,计入优秀学生名单表。
选择查询-删除查询命令,这是窗口改为删除查询,QBE栏目发生变化,出现删除栏,调整或撤销其他栏。
在字段栏中选择平均分,这时删除栏值默认为WHERE。
在条件栏中输入<85.单击运行。
3.追加查询操作
将平均分在80~85分之间的学生及成绩数据加入“优秀学生名单”表。
启动设计视图,添加学生和成绩表。
在字段设计栏设计学号姓名和成绩字段,单击工具栏上求和按钮,设置姓名学号字段为分组,设置成绩为平均值字段,在条件栏中输入>80AND<85。
执行查询-追加查询,选择优秀学生名单表,单击确定。
4.更新查询操作
将没有学生选修的课程的学分减少1分。
启动设计视图,添加课程表。
选择查询-更新查询命令,设计视图变为更新查询,QBE窗格中增加更新到栏。
选中学分字段,然后在更新到栏中输入“课程.学分—1.”。
选中课程号字段在条件栏输入“Not In(SELECT课程号FROM成绩)”,设计完成。
单击完成。
实验项目三:数据交换
(一) 导出操作
1.在“教学管理”数据库中创建一个查询并保存。
查询的名称为“学生成绩单”。
查询的结构为:学号、姓名、专业、课程号、课程名、成绩。
2.将“学生成绩单”查询导出为文本文件,字段值之间用逗号作为分隔符,文本型数据不要加引号。
文本文件要包括字段名。
3.将“学生成绩单”查询导出到桌面EXCEL文件“学生成绩表”中。
写出以上操作的主要过程。
(二)导入操作
1.将上面实验产生的文本文件导入教学管理数据库中作为表对象。
命名为“学生成绩单”。
并为各字段列指定合适的类型。
2.上面实验产生的EXCEL文件“学生成绩表”导入教学管理数据库中作为表对象。
命名为“学生成绩表”。
并为各字段列指定合适的类型。
产生表后,指定学号、课程号为主键。