360 likes | 523 Views
第 5 章 数据库基础. 主讲教师: Email :. 本章介绍. 数据库、数据库系统和数据库管理系统等相关概念; 如何使用 Access2003 创建数据库、数据表,如何创建关系和查询。. 5.1 数据库系统概述. 本节知识点: 理解数据、数据库、数据库系统和数据库管理系统概念以及之间的区别; 理解数据模型以及关系数据库的相关概念。. 从文件系统到数据库系统. 数据库系统( Database System )是在文件系统的基础上发展起来的。文件系统的主要缺点是: ( 1 )数据存在较大的冗余度; ( 2 )数据和应用程序之间的相互依赖程度过高;
E N D
第5章 数据库基础 主讲教师: Email:
本章介绍 • 数据库、数据库系统和数据库管理系统等相关概念; • 如何使用Access2003创建数据库、数据表,如何创建关系和查询。
5.1数据库系统概述 • 本节知识点: • 理解数据、数据库、数据库系统和数据库管理系统概念以及之间的区别; • 理解数据模型以及关系数据库的相关概念。
从文件系统到数据库系统 • 数据库系统(Database System)是在文件系统的基础上发展起来的。文件系统的主要缺点是: • (1)数据存在较大的冗余度; • (2)数据和应用程序之间的相互依赖程度过高; • (3)对数据缺乏统一的管理和控制。 • 数据库系统能够克服文件系统的这些缺点
5.1.1 数据库基本概念 • 什么是数据? • 数据是客观事物在计算机中的抽象表示,可以有数字、文字、图形、图像、视频、声音等不同形式; • 什么是数据库? • 是指具备特定的数据模型,有规则地存储在一起的数据集合; • 什么是数据库管理系统? • 属于系统软件,它为用户提供了建立、维护和查询数据库等核心功能 • 什么是数据库系统? • 计算机硬件、软件(如数据库管理系统)、数据库以及数据库管理员在内的一整套系统的总称。
5.1.1 数据库基本概念 • 以通讯录为例: • 每个人的信息都是“数据”; • 整个通讯录就属于一个“数据库”; • 为了借助计算机对通讯录进行排序/查询等操作,则需要计算机提供“数据库管理系统”以及相关软件。 • 计算机、软件、数据库管理系统、通讯录文件等组成一个“数据库系统”
5.1.2 数据库系统的特点 • (1)数据结构化:数据库系统对数据进行了有效地组织,实现了整体数据的结构化,是数据库系统与文件系统的本质区别。 • (2)数据的共享性高,冗余度低,易扩充:数据库系统从整体角度描述数据,可以被多个用户,多个应用共享使用。数据共享可以大大减少数据冗余,节约存储空间。另外,数据被多个应用共享使用,这就使得数据库系统弹性大,易于扩充,可以适应各种用户的要求。 • (3)数据的独立性强:数据独立性是数据库领域中一个常用术语,包括数据的物理独立性和数据的逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据是相互独立的,而逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。
5.1.3 关系数据库系统 • 常见的数据模型: • 层次数据模型 • 网状数据模型 • 关系数据模型(最为常用)
5.1.3 关系数据库系统 • 关系数据模型使用一系列二维表来描述现实中的事物以及事物之间的联系(如图所示) • 一行称为一条“记录”; • 每列的数据代表一个“属性”,用“字段”来定义; • 能够唯一区分记录的字段称为“主关键字(简称主键)”,如此表中的学号可以定义为主键,但姓名可能重名,往往不作为主键。 学生信息表
5.1.3 关系数据库系统 表1 • 两个表之间的关系分为: • “一对一”:如“学生信息表”与表1中的“学号”是”一对一”的; • “一对多”:但与表2中的学号是“一对多”的; • “多对多” :在我校的教务管理系统中,一个教师可以任教很多的学生,而同时一个学生也可以有很多的教师任教,这时“教师表”和“学生表”,并建立它们之间的关系,这种关系就是“多对多”关系了。 表2
5.2 Access 2003的基本应用 • 本节知识点: • Access数据库的创建和Access数据库的基本对象; • 表的创建和记录的输入; • 建立表之间的关系; • 查询的分类与创建。
5.2.1 Access数据库的创建和基本对象 • 一、数据库的创建 • 单击“开始”菜单——“所有程序”——“Microsoft Office”——“Microsoft Office Access 2003”,启动Access程序; • 选择“文件”菜单——“新建”,在打开的“任务窗格”中选择“空数据库”,选择相应的路径并填写合适的文件名保存。
5.2.2 Access 数据库中表的创建和使用 • 数据库中表的建立包括两部分 • 表的结构建立:一般通过“设计视图”建立 • 表的数据建立。一般通过“数据表对象视图”建立
5.2.2 Access 数据库中表的创建和使用 • 表的结构设计 • 选择表对象,单击“新建”按钮,选择“设计视图” ; • 输入与所设计的表相对应的相关字段名,确定每个字段的类型,设置相关属性; • 确定主关键字; • 保存表结构,输入表的名称。
5.2.2 Access 数据库中表的创建和使用 字段类型 • “学生信息”表的结构设计 字段属性
5.2.2 Access 数据库中表的创建和使用 字段的类型往往根据实际需要设定
5.2.2 Access 数据库中表的创建和使用 比较常用的字段的属性值
5.2.2 Access 数据库中表的创建和使用 • 表的数据建立 • 点击“打开”按钮或者双击创建的学生信息表,便可以进入数据表视图输入数据 • Access自动保存输入的数据 • 表的“设计视图”和“数据表视图 ”可以点击切换按钮 或者 来进行切换,或者选择“视图”菜单下相应的命令来切换。
5.2.2 Access 数据库中表的创建和使用 • 有效性规则 • 在输入字段时能够检查字段中的值是否有效,可以在该字段的“有效性规则”框中输入一个表达式,Access会判断输入的值是否满足这个表达式,只有满足规则才能输入。 • 比如要求“出生年月日”的字段值在1980年1月1日至2000年1月1日之间: • 进入设计视图; • 单击“出生年月日”字段的“有效性规则”对应项后面的“…”按钮 • 在弹出的“表达式生成器”中输入相关的表达式; • 在“数据表视图”中尝试输入“2001-1-1”,检查结果。
5.2.2 Access 数据库中表的创建和使用 • 表之间关系的创建 • 需要根据前面的方法,创建两张表 • 设计好表的结构 • 输入表的数据 班级表 学生信息表
5.2.2 Access 数据库中表的创建和使用 • 基本步骤: • 单击“工具”菜单——关系,系统会自动弹出“显示表”对话框中选择要定义关系的表,并单击“添加”; • 单击菜单“关系”——“编辑关系”命令,打开“编辑关系”对话框,并单击“新建”按钮,在“新建”对话框中选择相应的字段创建关系; • 若要在表间实施参照完整性,应选中“实施参照完整性”筛选框。
5.2.2 Access 数据库中表的创建和使用 • 基本步骤: • 单击“工具”菜单——关系,系统会自动弹出“显示表”对话框中选择要定义关系的表,并单击“添加”; • 创建关系: • 单击菜单“关系”——“编辑关系”命令,打开“编辑关系”对话框,并单击“新建”按钮,在“新建”对话框中选择相应的字段创建关系; • 也可以直接在一个表上按下鼠标左键拖动到另一个表,再编辑两个表之间的关系。 • 若要在表间实施参照完整性,应选中“实施参照完整性”筛选框。 • 最后保存“关系”; • 删除关系的方法是:单击关系线选中,按下键盘上的Delete键。
5.2.2 Access 数据库中表的创建和使用 • 实施参照完整性 • 指在定义表之间的关系时,为维持表之间的某种关系必须遵循的规则 • 比如已经实施了参照完整性: • 主表中没有相关记录,那么不能添加相关表中的记录 • 删除主表中的某条记录,则与该主键值对应的从表记录也会被删除,以保证两个表之间的一致性。 • 反过来,如果主表和相关表已经输入数据,从表里某些记录对应的外键值在主表里无相关的主键值存在,则无法创建 “实施参照完整性”的关系,因此需要反过来先检查数据是否正确。
5.2.3表的查询 • 查询就是对数据库中的表或其他查询结果的一组相关操作,比如在一张表中筛选出符合某种条件的记录或把某两张表中的部分记录和字段组合在一起建立一张新表。 • 查询的执行结果往往也是一张表,但这种表不会被存储,因为它是在执行查询时即时生成的虚拟表。 • 一般情况下,查询在设计视图中进行 • 在“数据库”窗口中单击“查询”对象,在“查询”对象页面中单击“新建”按钮,打开“新建查询”对话框,然后选择“设计视图”一项,再单击“确定”按钮,便会打开一个查询的设计视图 。
5.2.3表的查询 • 查询是基于表或其他查询之上的操作,因此有3个选项卡: • “表”选项卡:当前数据库中包含的所有表; • “查询”选项卡:当前数据库中包含的所有查询; • “两者都有”选项卡:包含了当前数据库中所有的表和查询。
5.2.3表的查询 • 查询的设计视图分为上下两部分,上半部分称为字段列表区,用来查看和管理此查询所要操作的表或其他查询。下半部分称为“设计网格”区,用来对查询结果的各个字段进行设计,如对字段进行排序、隐藏以及设置条件等。
5.2.3表的查询 • 查询的方法分为: • 选择查询 • 参数查询 • 交叉表查询 • 操作查询
5.2.3表的查询 • 选择查询: • (1)进入设计视图,在打开的“显示表”窗口中选择添加相应的表或查询; • (2)从“字段列表区”中拖动相应字段或双击字段名或直接在“设计网格区”的“表”和“字段”项进行选择,将字段添加到“设计网格”中的字段行中; • (3)选择菜单“文件”——“保存”命令或者点击工具栏“保存”按钮,输入查询名称; • (4)选择菜单“查询”——“运行”命令或者点击工具栏“!”运行按钮或切换到数据表视图查看查询结果。
5.2.3表的查询 • 参数查询: • (1)进入设计视图,在打开的“显示表”窗口中选择添加相应的表或查询; • (2)从“字段列表区”中拖动相应字段或双击字段名或直接在“设计网格区”的“表”和“字段”项进行选择,将字段添加到“设计网格”中的字段行中; • (3)如果需要对某个字段根据参数进行查询,在相应字段列的“条件”行中输入表达式,其中需要用户输入的部分格式为“[条件1]”,方括号不能省略,“条件1”是提示文字,可以根据需要填写;可以设置多个条件并使用运算符进行结合,详见后面的“表达式生成器”。 • (4)保存查询,选择菜单“查询”——“运行”命令或者点击工具栏“!”运行按钮或切换到数据表视图,会提示您输入参数值进行查询。
5.2.3表的查询 • 交叉表查询是将来源于某个表中的字段进行分组,一组列在交叉表左侧,一组列在交叉表上部,并在交叉表行与列交叉处显示表中某个字段的各种计算值。 • 方法: • 一、采用交叉表查询向导 • (1)在“数据库”窗口中单击“查询”对象,在“查询”对象页面中单击“新建”按钮,打开“新建查询”对话框,然后选择“交叉表查询向导”一项,再单击“确定”按钮。 • (2)选择所需的表或者查询表,单击下一步; • (3)选择字段作为“行标题”,单击下一步再选择字段作为“列标题”并单击下一步; • (4)选择字段以及相应的计算函数计算出交叉点的值,点击下一步; • (5)输入交叉表名称,单击“完成”。
5.2.3表的查询 • 二、采用设计视图创建交叉表查询 • (1)进入查询的设计视图,并添加所需的表; • (2)点击菜单“查询”——“交叉表查询”命令,将在“设计网格”区中增加“总计”和“交叉表”两行选项; • (3)选择相应的字段,在“交叉表”行处设置为“行标题”、“列标题”以及“值”作为交叉点。如果是行标题和列标题,“总计”行选择分组(即保持默认值)。只能有一个字段可以设置为“值”,并改变“总计”行的设置; • (4)如果要汇总字段信息,比如求字段的平均值、求和等,可以添加一个字段,并修改“总计”行的选项为“平均值”、“求和”等,并将“交叉表”行的设置修改为“行标题”。
5.2.3表的查询 • 操作查询,包括: • 生成表查询: • 能够将查询结果保存成数据表,使动态生成的查询结果转换为静态的数据表。 • 更新查询 • 更新查询可以批量修改记录,但更新后的记录无法使用撤销按钮恢复。 • 追加查询 • 可以将数据源中符合条件的记录追加到另一个表的尾部,必须保证数据源与被追加的表之间的各个字段类型一致。 • 删除查询 • 可以将数据源中符合条件的记录批量的删除,删除查询可以删除单个表的记录,也可以删除建立了关系的多个表的记录(注意多个表必须建立了参照完整性,并选择了级联删除选项)。
5.2.3表的查询 • 表达式生成器 • 与“有效性规则”中的“生成器”类似,也可以在查询条件项中单击鼠标右键选择“生成器”将弹出“表达式生成器”对话框。在该对话框中可以根据数据表中的字段、运算符以及函数进行各种运算生成表达式作为筛选条件
5.2.3表的查询 • 查询中的表达式可使用运算符连接,常见的运算符 • (1)算术运算符:+、-、*、/。 • (2)关系运算符:>、>=、<、<=、!=、==,true或-1表示“真”,false或0表示“假”。 • (3)逻辑运算符:not、and、or,运算结果是逻辑值。 • (4)连接运算符:+、&,用于字符连接 • (5)like,为文本字段设置查询模式,支持通配符。 如:like "李*",Like "*红*" • (6)in,指定一个值列表作为查询的匹配条件,不支持通配符。如:in("张三","李四","王五") • (7)between,指定数据范围,用and连接起始数据和终止数据。如:between 10 and 30,相当于:>=10 and <=30 • (8)is Null,查找为空的数据。 • (9)is not Null,查找非空的数据。
5.2.3表的查询 • 可以使用函数设置查询条件,常见的函数操作有: • (1)字符串函数 • 如:left,right, mid等函数 • (2)日期函数 • date,now,year,month,day等函数 • (3)统计函数 • sum,avg,count,max,min等函数
5.2.3表的查询 • SQL视图 • 可以使用SQL语言的方式来创建查询,语法: select 字段列表 from 表名 [where 查询条件] [order by 排序项] [group by 分组项] • 如查询学生信息表中性别为“男”,并且出生年月日在“1990年1月1日”之后的学生信息,并且结果按学号排序,SQL代码为: