– 使用数据库的优越性
– 生成 ACCESS表
– 数据库管理系统的功用
– 查阅和编辑数据
– 排序、搜索、过滤
– 表的查询
第三章 数据库管理系统
一、使用数据库的优越性
?为什么讲数据库?
– 80年代,戴维斯 ( Gordon B,Davis )等的
定义:“管理信息系统是一个利用计算机硬
件和软件,手工作业,分析、计划、控制和
决策模型,以及 数据库 的人 -机系统。它能
提供信息,支持企业或组织的运行、管理和
决策功能”
?数据库的用途
?数据存储方式的对比
二、生成 ACCESS表
1.涉及到的术语
– 表 Table:组织成行和列的数据集合
– 字段 Field:表中的单个信息单元,列
?字段名
?字段值
– 记录 Record:表的一行中所有字段值的集合
– 数据库 Database:所有用于管理数据的表和其
他对象(表单、查询、报表)的集合
2.对象命名规则,表、字段名、查询、表单、报表
– 最多 64个字符
– 可包括任何字母、数字和空格的组合
– 名称可包括除,! []之外的标点符号。
3.ACCESS数据类型
– Text
– Memo
– Number
?字节
?整型、长整型
?单精度型、双精度型
– Date/Time
– Currency
– Autonumber
– Yes/No
– OLE Object
4.定义字段属性
?重要的常规字段属性
– AllowZeroLength
– Caption
– DecimalPlaces
– DefaultValue
– Field Size
– Validation Rule
– Validation Text
5.设置主关键字段 Primary Key Field
– 唯一标识
– 能加速处理
?避免重复输入
?两个或以上表内容的联查
– 主关键字段
?一个字段
?两个或几个字段
– 外部关键字段
– 例
?学生( 学号,姓名,出生日期,学院,系,专业)
?选课 (学号,课程号,成绩 )
6.定义索引
?目的:加速字段的排序和查找
?索引:按某个字段排列的一个表,只有两

– 教材 P149 表 10-1(b)索引非顺序文件
– 通过使用折半查找法等方法加速查询
– 建立关于“数学”字段的索引
?增加或删除字段的索引
– 设计状态
– 单击要处理的字段名
– [字段属性 ]的 [常规 ]标签 -,index属性
?索引会减慢数据输入和编辑
?不是所有的数据类型都能索引
– 字段属性 General标签底部有 Index属性
7.实际建立一个表
8.定义表间关系
– 实体之间的联系
?一对一 1,1 班级 班长
?一对多 1,n 班级 学生
?多对多 m,n 学生 课程
?( 1)一对一联系( 1,1)
– 如果实体型 A中的任意一个实体,至多对应
实体型 B的一个实体;反之,实体型 B中的
任意一个实体,至多对应实体型 A中的一个
实体,则称实体型 A与实体型 B有一对一的
联系。
乘客
车票
1
1
P-T
病人
病床
P-B
1
1
另:
教材 P162
?( 2)一对多联系( 1,n)
– 如果实体型 A中至少有一个实体对应于实体
型 B中的一个以上实体;反之,实体型 B中
的任意一个实体,至多对应实体型 A中的一
个实体,则称实体型 A与实体型 B有一对多
的联系。
– 教材 P162,P163
?( 3)多对多联系( m,n)
– 如果实体型 A中至少有一个实体对应于实体
型 B的一个以上实体;反之,实体型 B中也
至少有一个实体对应实体型 A中一个以上的
实体,则称实体型 A与实体型 B有多对多的
联系。
– 教材 P162,P163
– 表间关系:
?教材 P164
– 图书管理中的实体联系
– 联系两个表的操作
?[工具 ]-,[关系 ]
?显示要定义的表
?主表的关键字段拖动到关系表中的对应字段
?实施参照完整性
9.设计视图和数据表视图
10.修改表结构
– 插入新字段
– 删除字段
三、数据库管理系统 (DBMS)的功用
?Data Base
?Database Management System
?无须介入硬件细节、操作细节
?DBMS分类
– 微机型,ACESS,PARADOX,Foxpro
– 企业级:
?Oracle
?SQL Server
?DB2
?Sybase
?Informix
四、查阅和编辑数据
1.数据表视图和窗体视图
– Datasheet View
– Form View
– F11将数据库窗口迅速推向前台
2,选择和安排数据表行和列
– 重排数据表的列
– 调整行高
– 改变列宽
– 隐藏列
– 冻结和解冻列
?记录选择器、字段选择器
3.将数据加入表中
– 窗口底部转移条上
?第一个记录、上一记录、下一记录、最后记录、新记录
– 加入数据的要诀
?复制上一记录的字段数据,Ctrl+’或 Ctrl+”
?插入当前日期,Ctrl+;
?插入当前时间,Ctrl+Shift+;
– 删除数据、记录
– 备注字段的特殊方法
?生成表单
?shift+F2,打开一个缩放框
五、排序、搜索、筛选
?1.数据排序
– 快速便捷的排序
– 排序中的排序
– 将记录返回原有的顺序
?2.寻找某个记录
– 通配符
??任何单个字符 sm?th匹配 smith,smyth,smath等
?* 零或单个字符 sm*匹配 smith,smithereens,sm
?# 任何单个数字
?3.替换多个记录中的数据
?4.筛选所要的数据
– 按输入筛选
– 按选择(排除)筛选
– 按表单筛选
– 高级筛选 /排序
?按输入筛选
– 操作
?右单击要用作筛选字段中除字段头以外的任一位置
?在筛选目标中输入表达式
– >t
– ca*
– >200 and <250
?按选择(排除)筛选
– 状态条显示 筛选,表示正在筛选数据
– 设置表或表单的筛选属性
– 多个筛选准则
?按表单筛选
– 可以从字段列表中选择要搜索的字段值
– 可以在字段中键入所需的值
?查找某一字段为空的记录 is null
? 非空 is not null
– 可以在字段中键入表达式
– 窗口底部“或”选择卡
?高级筛选 /排序
– 打开要过滤的表
– [记录]-, [筛选]-, [高级筛选/排序]
– 将字段添加到设计网格
– 在准则单元格,输入需要查找的值或表达式
?QBE网格 query by example
?使用运算符和通配符
?比较运算符
= =“工程师” =工程师
> >500
< <1/1/67 <#1/1/67#
>=
<=
<>
between between 500 and 600
in in(北京,上海,天津,重庆 )
is null
is not null
like like,张 *”
?逻辑运算符
– and >200 and <250
– or 北京 or 上海
– not not like,张 *”
?通配符
–?
– *
六,表的查询
?作用:
– 按所要的顺序查阅所要的数据
– 完成数据的统计、计算
?基本查询
– 选择查询
– 累计查询
– 交叉表查询
– 动作查询
– 参数查询
?动态集 (dynanet)
?速成 (snapshot)
?1.选择查询
– 操作
?设计视图
?简单查询向导
– 默认选择查询
– 展开输入编辑区
?shift+F2
?右单击鼠标 ->显示比例
– 使用计算字段
?表达式生成器
?改变计算字段的属性
– 显示顶值
– 查询背后的 SQL语句
?SQL
– structured query language 结构化的查询语言
– 具有定义、查询、操纵、控制四方面功能
– SQL查询语句格式:
select <表达式 1>,<表达式 2>,…,< 表达式 n>
from <关系 1>,<关系 2>,…,< 关系 n>
where <条件表达式 >;
– 例:查找职称为工程师的所有职工
SELECT zhigong.*
FROM zhigong
WHERE zhigong.职称 =“工程师”;
– 例:查找职称为工程师且在车间工作的职工
SELECT zhigong.*
FROM zhigong
WHERE (((zhigong.职称 )=“工程师” ) AND
((zhigong.部门 )=“车间” ));
– 例:查找职称为工程师或在车间工作的职工
SELECT zhigong.*
FROM zhigong
WHERE (((zhigong.职称 )="工程师 ") OR
((zhigong.部门 )="车间 "));
– 例:查找职称不是工程师的所有记录
SELECT zhigong.*
FROM zhigong
WHERE (((zhigong.职称 )<>“工程师” ));
– 例:查找工资大于 100且小于 150元的职工
SELECT zhigong.*
FROM zhigong
WHERE (((zhigong.工资 )>100 And (zhigong.工
资 )<150));
– 例:查找姓张的职工
SELECT zhigong.*
FROM zhigong
WHERE (((zhigong.姓名 ) Like "张 *"));
?2.累计查询
– 生成速成 (snapshot)
– 排序累计字段
?3.生成交叉表查询
– 表中某个字段的总结值
– 只能有一个字段为列标题
– 若干个行标题
– 数据
?4.生成动作查询
– 修改查询
– 添加查询
– 删除查询
– 生成表查询
?5.参数查询
?上机练习:
( 1)建立两个表:职工、工资
职工:
职工号 姓名 性别 出生日期 婚否 工资 职称 部门 简历
1002 胡一民 男 60-1-30 -1 ¥ 112.00 助工 技术科
1004 王一 男 39-10-5 -1 ¥ 158.84 技师 车间
1005 张小华 女 58-10-12 0 ¥ 126.77 工程师 设计所
1010 宋文彬 男 63-12-14 0 ¥ 140.44 技术员 技术科
1011 张三 男 63-12-14 0 ¥ 190.10 工程师 设计所
1015 黄小英 女 48-8-17 -1 ¥ 134.77 工程师 车间
1022 李红卫 女 48-8-17 -1 ¥ 160.05 工程师 技术科
1031 丁卫国 男 49-4-12 -1 ¥ 112.27 工程师 设计所
工资:
职工号 姓名 基本工资 工龄工资 补贴 房电费
1002 胡一民 ¥ 85.00 ¥ 3.50 ¥ 10.00 ¥ 3.50
1010 宋文彬 ¥ 96.94 ¥ 3.00 ¥ 10.00 ¥ 0.50
1031 丁卫国 ¥ 112.27 ¥ 14.00 ¥ 10.00 ¥ 12.00
1005 张小华 ¥ 112.27 ¥ 4.00 ¥ 10.00 ¥ 0.50
1022 李红卫 ¥ 123.45 ¥ 12.00 ¥ 10.00 ¥ 14.60
1015 黄小英 ¥ 112.27 ¥ 12.00 ¥ 10.00 ¥ 0.50
1011 张三 ¥ 146.26 ¥ 15.50 ¥ 10.00 ¥ 18.34
1004 王一 ¥ 128.34 ¥ 20.00 ¥ 10.00 ¥ 0.50
( 2)将职工表的“部门”字段名称更名为“所
属部门”
( 3)将职工表中的“部门”字段值“技术科”
更名为“技术支持部”
( 4)对职工表,按出生日期从早到晚排序,出
生日期字段值相同时按工资值由小到大排序
( 5)取消排序
( 6)显示姓“张”的职工记录,用尽可能多的
方法。
( 7)显示职称是“工程师”的记录,显示职称
不是“工程师”的记录,用尽可能多的方法。
( 8)显示每个职工的基本工资与工龄工资之和
( 9)定义职工和工资表之间的关系
( 9)将职工表中“工资”字段值更新为工资表中
的基本工资与工龄工资之和
( 10)将职称为“工程师”的职工的基本工资增加
100元
( 11)显示各部门工资和、平均工资、人数
( 12)生成一个新表 test,内容由职工表中在车间
工作的职工记录组成
( 13)删除 test表中在车间工作的职工的记录
( 14)建立职工表中关于出生日期字段的索引
( 15)生成参数查询 1,允许用户输入要查询记录
的所属部门的前几个字符
( 16)生成参数查询 2,允许用户输入要查询记录
的姓氏