数据库学习材料

2022-04-06 版权声明 我要投稿

第一篇:数据库学习材料

数据库学习总结

赵县职业中专学校:刘伟娟

转眼间对于数据库的学习结束了。刘老师殷殷的教诲让我感触很深。对于我来说数据库是一个新的概念,因此一开始对这门课程的第一印象就是很抽象,感觉学起来应该会很难很累。可是在学习这门课的过程中,在对数据库的了解过程中,慢慢对数据库有了感观,数据库这一词并不是很难想象,并不是像外人传的很神奇。通过对数据库的学习我明白了各行各业都离不开数据库,可见数据库这门课的广泛性。如果能够认真学好它将来必有成就感。我就抱着这种信念去学习, 我从起初对数据库的认识模糊到后来清晰,我认为我学到了许许多多的东西。现就其知识点及其掌握情况进行总结:

数据库主要知识点

我首先了解了数据库的概念,其中有几个重要的知识点,即数据库(DB),数据库管理系统(DBMS)数据模型,关系数据库,关系规范化,安全性,数据库设计等等。首先作为一个数据库管理系统:应该具备以下功能:数据库定义功能;数据库操作功能;数据库查询功能;数据库的控制功能;数据库的通信功能。

通过学习我掌握了创建数据库以及对数据库的操作的基础知识。 首先说数据库,简单的说就是建表格,然后把一张一张的表格和在一起,成为一大堆的数据集合。他是依照某种数据结构组织起来并存放二级存储器中的数据集合,基本分为三个层次,物理数据层,概念数据层和逻辑数据层。不同层次间的联系是通过映射来转换的。其次数

据库编程,这个是作为一个程序员的基本功,绝大多数软件开发公司数据库编程都是由程序员自己完成的,因为他的工作量不是很大,也不是很复杂。所以作为一个综合的程序员,学习数据库编程,像数据库四大操作,增删改查,还有触发、存储过程等的使用,这些都是基础的基础。我认为概况起来有以下几点:数据库是相互关联的数据集合,即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系;数据库用综合的方法组织数据,保证尽可能高的访问效率。即根据不同的需要按不同的方法组织数据;数据库具有较小的数据冗余,可供多个用户共享,即通过共享共用的数据,降低数据的冗余度,也能保证数据的一致性;数据库具有较高的数据独立性,即数据的组织和存储方法与应用程序互不依赖。数据库能够保证数据的安全、可靠。

通过这次培训学习我懂得了只要我从事计算机专业,就需要学习好数据库的基础知识,不论以后选择哪个方向,数据库的学习都不能放松。古人云:书到用时方恨少,知识学多了不会成为累赘,慢慢的积累,总有用到的时候。给自己明确一个目标,剩下的就是向着这个目标努力,无论遇到什么困难,克服它就向成功迈进了一步。

2013年8月

第二篇:数据库学习总结

XX班 姓名 学号

摘要:在当今信息化的社会里,数据库可以说已经融入到我们生活的方方面面中,如交通运输、银行金融、工商企业等等。只要有大量的数据要管理或者需要有大量数据支持的工作,都要使用到数据库,它为我们的生活带来了便捷。 关键词:数据库,功能、SQL Server的特点

在学习《数据库原理及应用》这门课之前,就和课本上提到的一个观点一样,认为它只是存放数据的仓库而已,但是现在我深深体会到这个观点是多么的片面。数据库是长期存储在计算机内,有组织、可共享的大量的数据集合,前者只能表达它的一方面而已。

数据库技术发展到今天已经是一门非常成熟的技术,它的技术水平、应用水平多比初始时都有了很大的改变,但是它的最基本的特征却没有变,概括起来有以下几个方面:

第一点:数据库是相互关联的的数据集合;即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系。

第二点:数据库用综合的方法组织数据,保证尽可能高的访问效率;即根据不同的需要按不同的方法组织数据,例如顺序组织方法、索引组织方法、倒排数据组织方法等。

第三点:数据库具有较小的数据冗余,可供多个用户共享;即通过共享共用的数据,降低数据的冗余度,这也能保证数据的一致性。

第四点:数据库具有较高的数据独立性;即令数据的组织和存储方法与应用程序互不依赖,降低应用程序的开发代价和维护代价。

第五点:数据库能够保证数据的安全、可靠;即拥有(1)、安全控制机制,这可以有效地防止数据库中数据被非法使用或非法修改;(2)、完整的备份和恢复机制,这能保证当数据遭到破坏时(软件或硬件故障引起的),能立刻将数据完全恢复,从而保证系统能持续、可靠地运行。

第六点:数据库允许并发地使用,能有效、及时地处理数据,并能保证数据的一致性和完整性;即当多个用户同时使用相同的数据时,数据库能够协调一致,保证不发生冲突和矛盾。 那么对于上面数据库的各种功能和特性是如何实现的呢?当然它不是数据库中的数据固有的,是靠管理或支持数据库的系统软件——数据库管理系统(DataBase Management System)提供的。下面我将结合我所学习的内容,谈谈关于数据库管理系统——Mircrosoft SQL Server。

Mircrosoft SQL Server是一个高性能的、多用户的关系型数据库管理系统,它专为客户/服务器计算环境设计,它提供的内置数据复制功能、强大的管理工具和开放式的系统体系结构为基于事物的企业级信息管理方案提供了一个卓越的平台。

首先作为一个数据库管理系统,Mircrosoft SQL Server应该具备如下功能:

1、数据库定义功能:可以定义数据库的结构和数据库的存储结构,可以定义数据库中数据之间的联系,可以定义数据的完整性约束条件和保证完整性的触发机制等;

2、数据库操作功能:可以完成对数据库中数据的操作,可以装入、删除、修改数据,可以重新组织数据库的存储结构,可以完成数据库的备份和恢复等操作;

3、数据库的查询功能:可以以各种方式提供灵活的查询功能,使用户可以方便地使用数据库中的数据;

4、数据库的控制功能:可以完成对数据库的安全性控制、完整性控制、多用户环境下的并发控制等各方面的控制;

5、数据库的通信功能:在分布式数据库或是提供网络操作功能的数据库中还必须提供数据库的通信功能。

其次是Mircrosoft SQL Server中系统数据库的作用,每个SQL Server实例包括四个系统数据库(master、model、tempdb和msdb)以及一个或多个用户数据库。下面是关于四个系统数据库的介绍:

1、master数据库:用于存储SQL Server系统的所有系统级信息,包括所有的其它数据库的信息、所有数据库注册用户的信息以及系统配置设置等。

2、tempdb数据库:用以保存所有的临时表和临时存储过程,还可以满足任何其它的临时存储要求,例如存储SQL Server生成的工作表。

3、model数据库:它是一个模板,当使用CREATE DATABASE命令建立新的数据库时,新的数据库的一部分总是通过复制model数据库中的内容创建,剩余部分由空页填充。

4、msdb数据库:用于SQL Server代理程序调度报警和作业等系统操作。 同时在安装SQL Server时,还建立了一个pubs数据库,这是一个用户数据库,是一个可以用于练习的示例数据库。在建立数据库时,每个数据库至少有两个文件:一个主文件(存储数据库的启动信息、用户数据和系统表,以.mdf为扩展名)和一个事物日志文件(用来保存恢复数据库的日志信息,以.ldf为扩展名)。

接下来是SQL Server的数据库结构:

在SQL Server数据库中,数据被组织为用户可以看得见的逻辑组件,主要包括基本表、视图、存储过程、触发器和用户等。SQL Server在发出CREATE DATABASE命令建立数据库时,会同时发出建立操作系统文件、申请物理存储空间的请求;当CREATE DATABASE命令成功执行后,在物理上和逻辑上都建立了一个新的数据库。这就可以在数据库库中建立各种用户所需的逻辑组件,如基本表、视图等。

然后是Mircrosoft SQL Server管理中的几个特点:

1、数据库镜像:通过数据库镜像,将自动失效转移建立到一个待用服务器上增强SQL服务器系统的可用性。

2、在线检索操作:即在指数数据定义语句(DDL)执行期间,允许对基地表格或集簇索引数据和任何相关的检索,进行同步修改。例如,当一个集簇索引正在重建时,可以对基低数据继续进行更新、查询。

3、快速回复:新的、速度更快的恢复选项可以改进SQL服务器数据库的可用性,管理人员将能够在事物日志向前滚动之后,重新连接到正在恢复的数据库。

4、快照隔离:通过快照隔离,使用者能够使用与传统一致的视野观看数据库,存取最后执行的一行数据,这也为服务器提供了更大的可升级性。

5、专门的管理员连接:即即使在一个服务器被锁住,或者因为其他原因不能使用时,管理员可以通过这个连接,接通这个正在运行的服务器。这一功能能让管理员,通过操作诊断或Transact-SQL指令,找到并解决发现的问题。 最后是关于学习过程中的体会,数据库能给我们生活带来便捷,但它的学习肯定不会那么一帆风顺,总会遇到问题。我想解决问题最好的方法是理解它,从多方面理解、掌握它。

首先是对概念的理解,例如关于游标的使用,最基本的操作语句如定义游标:DECLARE CURSOR、打开游标:OPEN、从游标中读记录:FETCH、关闭游标:CLOSE、释放游标:DEALLOCATE、执行:EXEC等,如果都不明白这些语句含义,如何掌握它?其次是对数据结构的理解,数据库就象房子,也有地基、承重墙(框架)、门、窗、内部家俱饰品等,对应到数据库里,一样可以找到相应的东东。地基就象数据库的系统表,不论以后要盖多少房子,多高多大的房子,都要在地基上开始;框架(承重墙)可以是每张表,也可以是每张表中的字段,是不可逾越而又相互交叉的;门窗就是数据库中的通道,就是索引、访问权限、视图等;内饰、家具就是最终的用户数据,是放在数据库这所房子里的东西。然后是在思维上的理解,东西方的思维方式上存在差异,比如在多表查询、数据库结构优化时需要多考虑这种理解和实施层面的“差异性”。

第三篇:ORACLE数据库学习心得大全

ORACLE数据库结课论文

一个好的程序,必然联系着一个庞大的数据库网路...

今年我们学习了 oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于 oracle数据库的一些知识。

1.ORACLE的特点: 可移植性 ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性 由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。

可联结性 对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。

2.ORACLE的总体结构

(1)ORACLE的文件结构 一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。

数据文件 一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。

日志文件 须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。控制文件 可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件 含有数据库例程起时所需的配置参数。

(2)ORACLE的内存结构 一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。

SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。

PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。

(3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程 用来执行用户应用程序的。

②服务进程 处理与之相连的一组用户进程的请求。

③后台进程 ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。

SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON(Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。 ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事务恢复进程RECO和对服务进程与用户进程进行匹配的Dnnn进程等。

3.ORACLE的逻辑结构

构成ORACLE的数据库的逻辑结构包括: (1)表空间

(2)5种类型的段(segment)

①数据段;②索引段;③回滚(rollbock)段;④临时段;⑤自举(bootstrap)段。

段的分配单位叫范围(Extent)

表空间(Tablespace) 一个数据库划分成的若干逻辑部分称为表空间。一个数据库可以有一个或多个表空间,初始的表空间命名为SYSTEM,每一个逻辑表空间对应于一个或多个物理文件。DBA使用表空间做以下工作: 控制数据库对象,如表、索引和临时段的空间分配。为数据库用户设置空间配额。

利用个别表空间的在线或离线,控制数据的可用性。后备或恢复数据。

通过分配空间,以改进性能。

在每个数据库中都存在SYSTEM表空间,它在建立数据库时自动建立。在该表空间中,包含数据库的数据字典,其中存储全部数据库对象的名字和位置。 SYSTEM表空间总是在线的,像其它表空间一样,可以通过增加新的数据库文件来扩大。一个表空间可包含许多表和索引。但一个表和索引不能跨越表空间,可跨越组成表空间的文件。在DB的打开的情况下,DBA利用ALTER TABLESPACE语句,可以实施表空间的在线或离线。SYSTEM表空间必须在线。表空间离线有下列原因: 一般为了使部分数据库不能使用,而允许正常存取数据库其余部分。执行表空间离线备份。

一个离线的表空间,不能被应用用户读或编辑。

可以增加数据文件扩大已有的表空间,也可增加新的表空间使数据库容量增大,或分配空间给某个应用。使用ALFER TABLESPACE ADD FILE语句将另一个数据文件加入到已存在表空间中。使用CREATE TABLESPACE语句可建立一个新的表空间。段(segment) 表空间中的全部数据存储在以段划分的数据库空间中。一个段是分配给数据库用于数据存储的范围的集合。数据可以是表、索引或RDBMS所需要的临时数据。段是表空间的下一个逻辑存储的级别。一个段不能跨越一个表空间,但可跨越表空间内的文件。一个数据库最多需要五种段类型: 数据段 一个包含一个表(或聚集)的全部数据,一个表(或聚集)总有一个单个数据段。

索引段 一个索引段包含对一个表(或聚集)建立的一个索引的全部索引数据。一个表可以有一个、多个或者没有索引段,取决于它所拥有的索引个数。一个聚集必须至少有一个索引段,即在聚集码上建立聚集索引。

回滚段 每个DB有一个或多个回滚段。一个回滚段是DB的一部分,它记录在某一情况下被撤消的动作。回滚段用于事务控制和恢复。

临时段 在处理查询时,ORACLE需要临时工作空间,用于存储语句处理的中间结果,这个区称为临时段。

自举段 自举段在SYSTEM表空间中,在数据库建立时建立。它包括数据字典定义,在数据库打开时装入。

4.用户数据库对象

由用户建立的对象驻留在表空间中,含有真正的数据。数据库对象有表、视图、聚集、索引、伪列和序号生成器。

(1)聚集(Cluster) 聚集是存储数据的一种可选择的方法。聚集包括存储在一起的一组表,它们共享公共列并经常一起使用。由于内容相关并且物理地存储在一起,存取时间得到改进,存储空间可以减少。聚集是一种优化措施。

聚集对性能的改进,依赖于数据的分布和SQL操作的内容。特别是使用聚集对连接非常有利。可以明显地提高连接的速度。建立聚集命令的基本格式: SQL>CREATE CLUSTER〈聚集名〉(列定义[,…]);利用聚集建立表命令基本格式: SQL>CREATE TABLE〈新表名〉(列定义[,…]CLUSTER〈聚集名〉(聚集列); 在聚集码上必须建立一个聚集索引,对于每一数据块上每个聚集码值有一索引项。这个索引必须在DML语句对聚集表操作前建立。建立索引的语句是:CREATE INDEX索引名ON CLUSTER聚集名; (2)序号生成器 序号(SEQUENCE)生成器为表中的单列或多列生成顺序号。利用序号可自动地生成唯一主码。使用SQL语句定义序号,给出一些信息(如序号名、是升序或降序、每个序号间的间隔和其它信息)。所有序号存储在数据字典表中。

所有序号定义存储在数据字典的SEQUENCE表中。用户可以通过字典视图

USER-SE-QUENCES、ALL-SEQUENCES

和DBA-SEQUENCES查询和存取。建立序号生成器的语句是: CREATE SEQUENCE序号生成器名 其它选项。

一旦序号生成器S被定义。可用S.Currval来引用S序号生成器的当前值。用S.nextval产生下一个新的序号并加以引用。

(3)伪列 伪列的行为像表的一列,但不真正存在于表中,在查询时可引用伪列,但伪列不能插入、删除或修改。

5.数据字典

数据字典ORACLE RDBMS最重要的部分之一。数据字典含有一组系统定义的表,只能读,是关于数据库的引用指南。它可提供以下信息:ORACLE用户的用户名; 每个用户被授予的权限和角色;实体的名字和定义;完整性约束 为数据库实体分配的空间;通用的数据库结构;审计信息; 触发子程序等的存储。 数据字典是以表和视图构成的,像其它数据库数据一样,可用SQL语言查询数据字典。

数据字典在DB建立时建立。每当DB进入操作,数据字典就由ORACLE RDBMS负责修改。数据库建立时有两个默认DBA用户:SYS、SYSTEM。SYS持有基本表中的数据。数据字典包含一组基表和相关的视图,可分为以下几类: 类

描 述

DBA-××× 只有DBA可存取的视图,给出数据库中定义的任何实体的信息

USER-××× 对任何用户可用的视图,给出他们自己的实体的信息

ALL-×××

对任何用户可用的视图,给出用户可存取的所有实体的信息

其中×××代表表名或视图名

下面列出的是一些常用的表或视图的名称。 (1)DTAB 描述了组或数据字典的所有表。 (2)TAB 用户建的所有基本表、视图和同义词。 (3)COL 用户创建基本表的所有列的信息。

(4)SYNONYMS 用户可存取的同义名词、专用名和公用名。 (5)CATALOG 用户可存取的表、视图、同义词、序列。 (6)CONSTRAINTS 用户可存取的约束。 (7)INDEXES 用户可存取的表和聚集的序列。 (8)OBJECTS 用户可存取的对象。 (9)TABLES 用户可存取的表。 (10)USERS 查看当前全部用户。 (11)VIEWS 查看用户可存取的视图。

(12)SYSTABAUTH 用户对数据对象的使用权限。可以用SQL>SELECT*FROM〈字典表名或视图名〉WHERE〈条件〉来读取有关信息。

可以用SQL>DESCRIBE〈表名〉来查看表的结构定义。但是数据库字典的结构不可改。用DESCRIBE命令还可以查看视图及过程的定义。

6.ORACLE的SQL、PL/SQL与SQL*PLUS 作为ORACLE数据库核心的SQL语言是ANSI和ISO的标准SQL的扩充。用来存储、检索和维护数据库中的信息,并控制对数据库的存取事务。由于RDBMS执行SQL语句时,是一次只执行一条语句,它是非过程化的。这就使得单条的SQL语句使用方便,功能强大。用户只需说明操作目的,不必关心具体操作的实现方法。

但在实际数据库应用开发中,往往要依据前一步对数据库操作的结果或上一个事务提交的情况来确定下一步的操作。故ORACLE推出了一种PL/SQL工具,它扩充了SQL语句,使之具有可进行过程化编程的能力,如循环、分支功能。PL/SQL可支持变量和常量的使用。例如在SELECT查询语句的where子句中可以使用变量来书写条件表达式。 SQL*PLUS是ORACLE用来存储、查询、操纵、控制和报告数据库中信息的一个交互式工具。它是一种集编辑、调试、运行于一体的开发环境。在SQL*PLUS的这种运行环境下,既可以使用SQL命令、PL/SQL语句、及SQL*PLUS自己提供的命令,又可以运行由上述三类命令(或语句)编辑而成的命令文件。SQL*PLUS提供的附加命令主要用来编辑、运行上述三类命令及命令文件和对查询结果进行格式化输出等功能。

7.数据库系统的管理

ORACLE作为一个大型的数据系统,通常包含很多用户的数据。在应用开发过程中,有许许多多的各类人员进行开发和应用。所以必须要求有人对数据库系统进行临时管理,并进行数据的备份等工作。这种人被称为数据库管理员(Data Base Administrator)。他们必须理解数据库系统管理,清楚数据库包含的数据内容、运行状况等。

一般说来,DBA不是指具体的人,而是指对数据库可以行使DBA特权的用户。DBA具有如下责任: (1)ORACLE服务器和客户工作站软件的安装和升级; (2)创建基本的数据库存储结构(表空间); (3)创建基本的数据库客体(表、视图、索引); (4)修改数据库结构; (5)给用户授权,维护系统安全; (6)控制和管理用户对数据库的访问; (7)监视和优化数据库的性能; (8)计算数据库信息的后备和恢复; (9)后备和恢复数据库; (10)构造ORACLE服务器,如创建数据库链、客体同义词等。 而应用开发人员须完成: (1)应用程序设计; (2)应用的数据库结构设计和修改; (3)为DBA提供必要的信息; (4)完成应用程序的开发。

看了许多关于ORACLE的知识论坛,总算是对ORACLE有个整体的认识,不仅仅是拘泥于课堂上学习的知识而已,虽然自己对ORACLE学习并不是多么的透彻,但是总归多接触点新的东西总是好的。

这一个学期,也是临近毕业的时候了,很感谢贾老师的严格要求,让我在学习上有了很大的进步,同时也改掉了一些惰性,能积极的投入到学习中去了,不懂就大胆的问同学,请学习好的同学帮助讲解, 最后,真心的祝福贾老师工作顺利,身体健康!

第四篇:我学习ACCESS数据库的心得体会

刚接触excel,自以为就已经对数据的处理掌握到炉火纯青的地步了,诸不知,山外有山人外有人,自从学习了access,才发现,原来,数据的处理还真不是我们日常工作中所遇到的那么简单。

下面,俺就将个人学习access的心得体会,与您分享!

一、字段数据类型

数据库access中的字段的数据类型,足以让我顶礼膜拜! 刚开始学习excel的时候,总觉得那软件挺好的,操作起来也非常方便,但是,由于太灵活太过于自由,总觉得缺少了约束性! 如今,学习了access的数据类型,才发现,原来,计算机软件对数据的处理和管理,还真是那么的严格。

access数据表里面的数据字段,是规定好字段类型的,比如说文本型的、数值型的、是否型的或日期型的一旦设置好了字段的数据类型,那么,在该字段中的所有单元格,您是不能随便输入内容的,如果输入的内容不符合字段数据类型,那么,是输不进去的。

比如,日期型的数据,你输入我偏偏就输入其它的这么几个字,是不能输入的,而只能输入诸如:20xx-9-29这样格式的数据。

这就是字段的数据类型的约束性,可以说,是一种强制性;显然,约束性带来了数据管理的方便,解决了数据的分类与管理上的方便。

这种情况,我还头一次遇到,同时,被此功能震惊到瞠目结舌,果然不同凡响。

二、数据的查询

access里面的查询,不会对源数据表的数据造成影响。这是很好的一种分离模式;我们可以根据自己的查询,设置或构造简单的或复杂的查询条件,之后运用查询,就可以查询到所需要的数据的,但是,查询到的数据,对源数据表,即原始数据,不会造成任何的影响,这就带来了如下的方便: 即能找到所需数据,同时,又保留了原始数据的完整性。

另外,查询对象,还支持sql语言的使用,这就从根本上解决了数据查询的难度,提高了灵活性和使用性。

三、窗体的使用

原来我对别人开发出来的软件界面,觉得很好奇;哪怕是一个小小的对话框,都觉得很好,长期以来,还真不知道这样的界面,是如何制作出来的。

学习了access之后,才知道,这种界面,其实就是一种窗体! 窗体对象,可以这样简单的来概述:用来显示数据表数据的有别于查询的一种界面。

窗体对象中的用来显示数据的控件,我们可以灵活的自行设计,想拖哪个表的哪个字段到窗体里面,窗体就显示哪种数据,非常方便。

四、关系

从来就不曾注意过,数据表与数据表之间,有着关系这个概念。 学习了才知道,access里面的关系,其实就是两表或多表,相互之间存在的一种关联或依赖。 比如说,学生信息表,有id和姓名字段;而学生成绩表,有id、学科、语文、数学、英语、信息技术等学科的成绩;后者保存学生每年每学期不同学科的成绩; 这样一来,在学生成绩表里面对应于一个同学的记录,就有多条;而在学生信息表中,仅有一条记录; 那么,我们如何即要知道该同学的姓名,同时还要查询与之相对应的成绩呢?很显然,只有通过两表的操作,才能找到数据。

那么,又有什么样的依据,可以证明或表明,某个id的号码所对应的成绩,是属于哪个学生的呢?这个时候,就要使用到表间关系了。通过将学生信息表里面的id和学生成绩表里面的id,建立起关系,或者称为以此来穿针引线,那么,两表就存在关联了。这样,就可以根据信息表里面的id,以它作为参照对象,去寻找学生成绩表里面id号相同的,就为该学生的成绩记录了。

五、其它的

虽然学习access的时间不多,掌握得也是那么的粗浅,但是,其功能,比较于别于excel这样的软件,让我认识到了,什么是专业的数据管理,什么是数据库。

第五篇:罗斯文ACCESS数据库学习心得

罗斯文数据库简介

一、 罗斯文库是Access自带的示例数据库,也是一个很好学习教程。让我们一起来学习一下吧。通过罗斯文数据库的学习,能对数据库的表、关系、查询、报表、窗体、切换面板等内容有个全面的了解。

我们做数据库开发,应该来讲是现实生活中一种管理思路的体现与高度概括。那么要构思之前肯定要对整个流程有个清晰的了解。那我们就先来了解一下这个罗斯文公司的业务流程吧。罗斯文公司是一个虚构的商贸公司,该公司进行世界范围的食品的采购与销售,就是通常所讲的买进来再卖出去,赚取中间的差价。罗斯文公司销售的食品分为几大类,每类食品又细分出各类具体的食品。这些食品由多个供应商提供,然后再由销售人员售给客户。销售时需要填写订单,并由货运公司将产品运送给客户。

要打开“罗斯文数据库”,先启动Access,从“帮助”菜单选择“示例数据库”->“罗斯文数据库”即可。如你所安装的是精简版不带有示例数据库,那就从网上下载一个吧。

本帖隐藏的内容需要回复才可以浏览

下载 (10.28 KB) 2008-4-15 00:39

图一

注:本教程着重在实例讲解,不含最基本的一些概念及操作说明,如需学习基础的参见此教程或自己看书。

二、表设计思路及表的数据类型、字段属性

正 文: 首先要做的事是设计表,表的设计思路就是将数据分类,同一类的数据放在一个表中,并且有一个字段与其他表之间建立联系。而且要尽可能的细分,以最大限度的保证每个表中不存在重复的数据资料。

比如说销售订单吧,肯定要记录客户的具体资料如名称、地址、电话等方便联系;还要记录订单的日期,运费等;以及每张订单中都有哪些具体的产品、数量、价格等信息。如果我们把这么多信息记录在一张表里的话,那就要录入许多重复的信息,比如客户的资料,不仅很麻烦还很容易出错。

所以应该细分为客户表专门维护客户的信息;订单表记录订单的日期,运费;订单名细表记录具体的产品数量及价格;另外还需要产品表、供应商表、雇员表、运货商表及类别表。

第1页 共59页 “罗斯文数据库”中共有8个表,选中表,以详细信息的视图来查看各个表的说明,见图二。

下载 (21.79 KB) 2008-4-15 00:39

图二

关于数据库的基本组成表,查询,窗体等及表的基本组成字段,记录等概念就不用再讲了吧。其中一些常用的知识将在示例中一起讲解。在表设计中重点要掌握的是数据类型、字段属性的设置与应用。

三、数据类型的用法

1.文本

用于存储不需要计算的数字,文本、其他字符或组合内容。最多可存储255个汉字,英文或字符。

2.备注

用于存储长文本和数字。如注释或说明。最多可存储65536个汉字,英文或字符。

3.数字

用于存储要进行计算的数据。如库存量,销售数量等。

4.日期/时间

用于存储日期和时间,如出生日期,发货日期等。

要注意日期型数据要注意分隔符的正确使用。以“-”,“/”分隔年月日,如“2007-01-10”,而“2007.01.10”这种

格式是错误的。

5.货币

用于存储货币值,计算期间禁止四舍五入,精度较高。如单价。

6.自动编号

用于在添加记录时自动插入一个唯一不重复的编号,如员工编号等。一般用作主键。

7.是/否

用于存储二选一的数据,如“是/否”,“真/假”,“开/关”等。

8.OLE对象

用于存储一些用其他应用程序创建的对象,如WORD文档,EXCEL表格,图片等。如员工照片。

9.超链接

用于存储超链接。如网址,EMAIL地址。

10.查阅向导

第2页 共59页 查阅向导允许用户使用组合框或列表框选择来自其他表或来自值列表的数据。在表设计视图新增该数据类型的字段会启

动向导进行定义。

四、字段属性

字段属性是指字段拥有的一些特点,不同数据类型的字段,属性也不尽相同,常用的属性如下:

1.字段大小

文本型字段,默认的大小为50;数字型字段,默认大小为长整型;自动编号的字段,默认大小也是长整型。

2.格式

格式属性决定了单元格中数据的显示和打印方式,所看到的并不一定就是表中所存储的。

3.小数位数

小数位数属性决定了在单元格中显示几位小数。如设为0,将不显示小数。

4.输入掩码

输入掩码属性决定了数据输入和保存的方式。

5.标题

标题属性影响着字段的显示名称,默认情况下,标题与字段名相同,也可以输入不同内容,在数据表视图中打开表时,

将看到字段的列标题与标题属性相同。

6.默认值

在默认值中填入数据时,在新增记录时将自动将该值添加到相应的字段中。

7.有效性规则

有效性规则用于限制在字段中输入的数据,在数据录入后,自动检查是否满足有效性规则,如不满足则发出警告,不接受录入值。如在单价字段的在效性规则中填入:>0,即可防止忘记填写该数据,或误填入负数。

8.有效性文本

在用户录入时如违反有效性规则时,系统会发出警告,而如果有效性文本中填入了内容,则在提示时,对话框中会显示有效性文本中的内容,替代系统的提示内容。

9.必填字段

必填字段如果设为是,那么在录入数据时必须在该字段填入相应的数据。

10.允许空字符串

字符串的概念是以字符形式存储的数据,一般要在字符串的两端加上英文的双引号,如”abc”等,而在文本和备注型的字段中,无需加入英文双引号,录入数据会直接作为字符串处理。如果允许空字符串设为否,将不允许输入空字符串。这里要注意的是空字符中””与空格字符串是不同的” ”,前者双引号中没有空格。

11.输入法模式

输入法模式可以设为开启或关闭,根据字段中是否要输入中文字,做好设置,可以避免录入人员在中英文输入法之间做

切换。 12.索引

索引用于加快排序,查询和分组操作的速度。索引的值有3种,如果字段为主键,将自动设索引的属性为有(无重复),另外两种是有(有重复)和无。索引属性中只能设置单一字段的索引,如果要设置多字段索引,可在设计视图中,点击

第3页 共59页 工具栏的索引(或菜单视图-索引),在索引框中设置。

下载 (19.09 KB) 2008-4-15 00:42

图三

具体的用法及示例将结合罗斯文示例进行说明。

五、表的具体分析:

1、“供应商”表

供应商表记录的是为罗斯文公司提供货源的厂商记录

下载 (43.14 KB) 2008-4-15 00:47

第4页 共59页

选择 “供应商”表,单击“设计”按钮,进入表设计视图,表中的字段包括了常用的联系信息。

下载 (11.45 KB) 2008-4-15 00:47

图五

我们重点来关注一下“供应商ID”字段。这是一个自动编号类型的字段,在表中具有唯一性,一般的我们设计的表中都需要一个唯一的不重复的字段,我们可以把该字段设为主键,该字段将会用于与其他表之间建立关系。

表中的大部分字段都是文本类型,大小可以根据实际要输入的内容来设置,比如城市,地区的字段设为15,而地址的字段大小是60。采用合适的大小会尽可能的减少存储空间的占用。一般不需要进行数据计算的字段我们都用文本类型

来存储。

主页和Email之类的可以采用起超链接类型。

查看该表中的索引

下载 (16.83 KB) 2008-4-15 00:47

图六

可以发现公司名称和邮政编码字段的索引属性为有(有重复)也即唯一索引为否,主要是为了通过索引加快对这两个字段的查询等操作,有重复说明该字段中的数据是有可能重复的,比如两个公司在同一地区,那邮政编码就是一样的。 另外我们在常规属性中除了字段大小属性以外,还有其他的一些属性,可以在相应的栏内点F1,查看相应的帮助。

2、“类别”表

划分类别是表设计时的必须要考虑的,因为不同类别的产品可能由不同的部门负责销售,为了方便统计出各类

第5页 共59页 产品或部门的销售情况,须将产品进行分类。类别表中将产品分为8大类。

下载 (22.19 KB) 2008-4-15 00:49

图七

选择类别表,点设计,进入设计计视图

下载 (24.22 KB) 2008-4-15 00:49

图八

可以看到“类别ID”是自动编号类型,用作主键;

说明字段,数据类型为备注,在实际操作中如果要说明的字数不会超过255个字符,可以采用文本类型,这样

更节省空间。

图片字段的数据类型是OLE对象,OLE对象在表中不参直观地看到图片,如果要查看图片可以在字段上双击,如需插入,则在图片字段上单击右键,选择“插入对象”,再从对话框中选择“由文件创建”,浏览到所需图片,也可以链接对象,这样只是保存了链接地址,不会直接把文件插入数据库。

、“产品”表

产品表中保存了罗斯文公司销售的各种产品的明细数据。这个表清楚的记载了每个产品是属于什么类别,供应商

第6页 共59页 是谁,库存量,单价等信息,是填写订货单时的重要依据。

下载 (33.17 KB) 2008-4-15 15:22

图九

选中“产品”表,点设计,进入设计视图

下载 (24.03 KB) 2008-4-15 15:22

“产品ID”是自动编号类型的主键; 单价,库存量,订购量,再订购量字段中设置的有效性规则与有效文本性文本属性,可以学习一下; “中止”字段的数据类型是“是/否”型,这对于处理两选一的结果最为合适;

重点来关注一下“供应商ID”和“类别ID”,这两个字段都是数字类型,分别对应“供应商”表中主键和“类别”表中的主键。先来看下“供应商ID”,这个字段的标题属性中填的是“供应商”,这样在数据表视图中,看到的字段标题就会是“供应商”,而不是默认的“供应商ID ”。另外这两个字段都是查阅列,这是一个很有用的属性,我们对“供应商ID”作一下详细的讲解,“类别ID”与“供应商ID”的设置方法相同。

4、查阅列

我们在表中输入数据时,经常会遇到需要重复输入的内容,比如人员的性别为“男”或“女”,这是单表中的重复录入;比如产品表中需要输入“供应商”,而“供应商”字段在“供应商”表中已经录入过了,这属于跨表的重复录入。这些内容如果直接录入不仅花费了用户较多的时间,而且极容易出错。为了方便用户录入重复性的数据,可以借助ACCESS

第7页 共59页

提供的查阅列的功能。

下载 (13.6 KB) 2008-4-15 15:26

图11

首先来看下查阅列中的各项具体属性

1. 显示控件

下载 (7.83 KB) 2008-4-15 15:26

图12

从显示控件右侧的下拉框中可以看到该属性可以设为文本框,列表框或组合框。如果设为文本框,那数据就只有接受从文本框中的录入,查阅的其他属性都不可用。我们主要要掌掘的是列表框和组合框的使用。组合框和列表框的使用基本相同,只是列表框除了可以从列表中选择还可以接受录入,相当于是列表框各文本框的组合。

2.行来源类型

下载 (7.7 KB) 2008-4-15 15:26

图13

行来源类型是指控件中的数据来自于何处。共有三处选择,表/查询,值列表,字段列表。

如果选择“表/查询”,则列表框或组合框中的数据将来源于其他表或查询中的结果。如果要录入其他表中已经存在的数

第8页 共59页 据,或录入从几个表中查询得到的结果,用这个选项最为方便。

如果选择“值列表”,只需在行来源中直接输入列表中的数据,并用英文分号隔开即可。这种类型只适合于输入的内容固定在某几个值之间,如性别的值可以是“男”或“女”。

如果选择“字段列表”,该字段中将填入某个表中的字段名称信息。这种类型较少用到, “表/查询”的使用就包含了

这种简单的用法。

3.行来源

“行来源”中是列表框或组合框中将要列出的数据。

如果“行来源类型”是“表/查询”,可单击“行来源”右侧的下拉箭头,选择某个表或查询,以该表或查询中的数据作为列表框或组合框中的数据。如果没有直接的查询可用,也可以单击右侧的生成器515)this.width=515}" alt="" src="http:///img/image028.jpg"> ,在查询生成器中直接创建SQL语句。

如果“行来源类型”是“值列表”,直接输入即可,如“男;女;”

如果“行来源类型”是“字段列表”,可单击右侧的下拦箭头,选择某个表,以该表中的字段名称作为列表框或组

合框中的数据。

4.绑定列

在列表框或组合框中进行选择时,所显示出来的数据并不一定就是存储在该字段中的内容。在“绑定列”中设置的

列中的值才是表中真正存储的值。

5.列数

在列表框或组合框中所显示的列数,可以同时显示表中的多列。

6.列标题

用字段名称,字段标题或首行数据作为列表框或组合框中列的标题。如果在列表框或组合框中同时显示多列时,加

上标题方便识别各列的内容。

7.列宽

列表框或组合框中有多列时,可指定每列的宽度,每列宽度之间以英文分号分隔。如列数为3列,则可设列宽为:2;2;2,系统会自动加上cm单位;如果某一列无需显示,则列宽设为0即可。如:0;2;2。

8.列表行数

是指在组合框中一次最多可以显示的行数,其余的数据需拖动滚动条查看。

9.列表宽度

在组合框中,列表框部分的宽度,可以设为“自动”,也可以设为数值。

10.限于列表

在组合框中,如果允许输入除列表框中值以外的数据,则选择“否”。如果值必须为列表中的一项时,则选择“是”。

第9页 共59页

示例:

在“产品”表中,设置“供应商ID”字段的查阅列属性

1.在数据库窗口中,选择“产品”表,单击设计,进入设计视图。可以在最后一个字段的下面的第一个空白行,输入新字段名称“供应商2”,设置完相关属性后,可以与“供应商ID”字段进行比较。数据类型改为数字,在这里说明一下,在表中相关联的两个字段的数据类型必须相同,而且字段大小也要相同。在本例中因为在“供商表”,“供应商ID”字段是自动编号类型,自动编号的字段默认大小是长整型,所以在这里“供应商2”的数据类型必须为数字,字段大小为

长整型。

2.在下半部分窗口中选择“查阅”选项卡,将显示控件改为组合框。

下载 (28.21 KB) 2008-4-15 15:32

图14

3.在行来源类型中选择“表/查询”。

4.点击行来源右侧的生成器515)this.width=515}" alt="" src="http:///img/image032.jpg"> 按钮,在显示表中,选中“供应商”表,点添加后关闭。从表中选择字段供应商ID,公司名称,可以双击,也可以拖入下方的字段中。设置公司名称字段的排序为升序,代表组合框中的供应商按名称进行排序。

第10页 共59页

下载 (22.13 KB) 2008-4-15 15:32

图15

点关闭按钮,跳出提示窗口

下载 (11.57 KB) 2008-4-15 15:32

图16 点“是”

5.在绑定列中填入1,代表该字段存储的值是查询结果中第一列“供应商ID”中的值。要求这两者的数据类型必须相

同,本例中都为长整型。 6.在列数中填入2,代表有两列。

7.列标题选“否”。

8.列宽中填入0;2。罗斯文示例中,第2列的宽并没有填入,这是因为列表宽度设为了自动,不隐藏的宽度都会根据字

段的大小自动显示出来。 9.列表行数默认为8。

10.列表宽度为自动,限于列表选“是”。

下载 (17.06 KB) 2008-4-15 15:32

图17

11.关闭设计视图并保存修改,切换到数据表视图,体会查阅列的用法。

客户表及运货商表

“客户”表记录的是罗斯文公司的客户信息,类似于“供应商”表。

第11页 共59页

下载 (37.64 KB) 2008-4-15 15:53

通过对“客户”表设计视图的查看可以发现表中的“客户ID”字段与前几个表中的ID字段不同,没有采用自动编号的数据类型,而是用了文本类型,长度为5。这个“客户ID”字段也是作为主键的,也就是说不允许在该表中输入重复的客户代码。在“客户ID”字段中还设置了“输入掩码”的属性,“>LLLLL”,“>”是将所有输入的字符自动转为大写,这样在输入时就不用理会大小写,“L”代表字母A-Z,是必选项。这样设置的意思就是在“客户ID”字段中必须输入5个字母,不能输入其他的字符或者少一位。

“输入掩码”可以帮助客户准确地输入数据,避免不必要的错误。比如可以用“000000000000000999”来作为身份证的输入掩码,既可以输入15位数字,也可以输入18位数字,这里的0和9都是输入掩码的常用控制字符,0代表必选的数字项,9代表可选的数字和空格。如果想了解有关更多的输入掩码,可以把光标放在这一属性栏里,按F1查看帮助,

学会用帮助可是个好习惯哦。

另外“格式”属性也是对字段的格式作的规范,要注意两者的区分。“输入掩码”是控制输入和保存方式的,而“格式”属性是控制输出和打印方式的,如在“输入掩码”中使用“>”代表的是不管输入字符是大写还是小写,在数据库中保存的都会是大写的字符,而如果在“格式”中使用“>”代表的是在该字段中显示为大写,而不管实际存在数据库中字符的大小写。如果一个字段既定义了“格式”属性又定义的“输入掩码”属性,则在显示数据时,“格式”属性优先于“输入掩码”属性,而在保存数据时则相反。

“客户”表中其他字段都采用文本类型。

“运货商”表记录的是帮助罗斯文公司运送货物的公司的联系信息。这个表中没有新的知识点,不再进行细讲。

第12页 共59页

雇员表

“雇员”表记录的是罗斯文公司的雇员信息。

下载 (23.81 KB) 2008-4-15 15:59

雇员的姓氏和名字分别用两个字段来代表,这样设计是考虑到能把信息拆分的更细,方便对更细的信息进行处理,比如可以按照姓氏来进行统计等等,当然如果没有这种必要的话,完全可以用姓名一个字段来处理。本例中对地址

和电话都进行了拆分的处理方法。

下载 (45.91 KB) 2008-4-15 15:59

选中“雇员”表,单击设计按钮,进入表设计视图。

“雇员ID”是自动编号的主键,“出生日期”是“日期/时间”类型,它的“格式”属性是“yyyy-mm-dd”,表示

第13页 共59页 显示时的格式,“有效性规则”属性是“

疏忽而输入比当天还大的出生日期。

“照片”字段采用的是“文本”类型,查看一下记录会发现,记录的只是照片的文件名字而已,这和“类别”中的“图片”字段是有区别的,这也是一种记录图片信息的方法,将来图片在窗体中的显示可以通过加载文件路径的方式来处理。这样处理要求存放图片的路径与图片名称不能发生改变,一旦改变在窗体中就会无法显示出照片,这是与OLE类型的对

象不同的地方。

“上级”字段记录的是某个雇员的上级主管是谁。由于上级主管本身也是公司雇员,因此上级主管的信息也会记录在“雇员”表中。为了避免录入时的重复输入,在此字段也设置了“查阅”属性,并且字段的数据类型是“数字”,说明在这一字段保存的是“雇员ID”的信息,查看“上级”字段的“查阅”选项卡,显示控件为组合框,在录入时让用户以组合框的形式进行选择。单击“行来源”右侧的生成器按钮,进入查询生成器,

下载 (27.41 KB) 2008-4-15 15:59

在示例中有4个字段,“雇员ID”是作为绑定字段的,“姓名”字段是个表达式,它用了一个“&”字符串连接运算符,将“姓氏”和“名字”连在一起成为新的字段。另外还有两列“姓氏”和“名字”,显示的属性未打勾,代表并不显示,只是作为排序的依据。在此处其实可以直接按“姓名”来排序,而不用选择“姓氏”与“名字”字段,效

果是一样的。

下载 (10.58 KB) 2008-4-15 15:59

订单表

“订单”表记录的是客户订货的主信息表,记录了订单ID,客户,雇员,运货商,运费,及相关的订购日期,到

第14页 共59页 货、发货日期,表中还有6个字段用来记录货主的联系信息。

下载 (19.18 KB) 2008-4-15 16:09

初看上去,好象这并不符合数据库设计的规范,这主要是由于罗斯文公司的客户每次订货时收货地址很少重复,而是订货时才指定,因些无法记录下确定的货主信息。一般我们通常用得比较多的情况是客户一般就是收货的货主,客户确定下来后,收货人的相关信息也就定下来了,这时后面的6个字段都是可以省略的。

下载 (41.83 KB) 2008-4-15 16:09

查看“订单”表的设计视图,“订单ID”是自动编号的主键,“客户ID”、“雇员ID”、“运货商”字段分别是客户表、雇员表和运货商表中的主键,都设置了查阅属性,以组合框的形式提供选择。这个表中也没有什么新的知识

点。 订单明细表

第15页 共59页 “订单明细”表是对“订单”表中“订单ID”的具体的产品订购信息的补充说明。包括产品的名称、单价、数量和折扣。

下载 (17.47 KB) 2008-4-15 16:12

下载 (25.45 KB) 2008-4-15 16:12

查看“订单明细”表的设计视图,发现表中的主键设置与其他表不同,是用“订单ID”和“产品ID”联合起来作为主键的。也就是说同一份订单中有多种产品,而每一种产品可能会出现在不同的订单中,只有“订单ID”和“产品ID”同时

确定的记录才是唯一的。

设多字段主键时,需先选中多个字段,然后单击工具栏上的主键按钮 即可。

“产品ID”字段来自“产品”表中的主键,设置了查阅属性,“订单ID”与“订单”表中的主键“订单ID”保持一致,这里并没有设置查阅属性,这是由于考虑到以后采用来主子窗体的形式来记录两个表中信息,而作为链接字段的“订单

ID”是自动同步的,不用输入。

单价、数量、折扣字段中设置了相应的格式、默认值、有效性规则与有效性文本,可以在实际设计时参考其中的设置,

其中单价的格式可改为货币形式即可。

到此所有的表都学完了,表设计是整个数据库开发中的基础,是非常重要的。要合理的划分各表,设置好表中的主键与

第16页 共59页 索引,同时要多站在客户的角度,在录入方面作好细节的设置,如查阅属性的设置,输入法的开关,有效性规则的设置,

有效性广本的提醒等。

表之间关系:

ACCESS数据库是关系型数据库,与其他的关系型数据库一样,也具有三种常用关系:一对一关系、一对多关系和多对多

关系。

一对一关系是指两个表之间的记录是一一对应的关系,这种关系用的比较少。

一对多关系,是指A表中的一条记录,可以与B表中的多条记录相对应。如“类别”表中的“类别ID”与“产品”表中的“类别ID”就是一对多的关系,一个类别对应多个产品。

多对多关系是指A表中的一条记录,可以与B表中的多条记录相对应,同时,B表中的一条记录也可以与A表中的多条记录相对应。一般的建立多对多关系时,需要一个中间表,通过中间表同时与两个表A、B之间产生一对多的关系,从而实现A与B之间的多对多关系。如“订单”表与“产品”表就是多对多的关系,一份订单中有多种产品,一种产品会同时出现在多种订单上,中间表就是“订单明细”表。

建立了一对多关系的表之间,一方中的表叫“主表”,多方中的表叫“子表”;两表中相关联的字段,在主表中叫“主

键”,在子表中称“外键”。

在建立了关系之后,打开表时,会发现最左侧多了一列“+”,单击“+”号,可以展开另一个数据表,这就是主表中关联的子表。如果子表中还有对应于它的子表,则还可以进一步一层层的展开。这种关系应用在窗体中便是主子窗体。

下载 (34.01 KB) 2008-4-15 16:24

第17页 共59页 要查看或编辑表中关系,可以点击工具栏上的关系按钮,或从菜单栏“工具-关系”中进入关系界面。

下载 (32.22 KB) 2008-4-15 16:24

在关系连接线上双击,或单击右键选择编辑关系,可以查看已经建立的关系,或者进行修改,如果要删除,直接选中删

除即可。

关系的另一个重要的功能便是能保持各个表数据之间的完整性。

下载 (18.52 KB) 2008-4-15 16:24

我们在“订单”表与“订单明细”表的关系编缉窗口,可以在窗口的下半部分看到关系的相关属性。“实施参照完整性”是指不能在相关表的外键字段中输入不存于主键中的值,在例中表现为在“订单明细”表中,不能录入“订单”表中不存在的“订单ID”。“级产删除相关记录”,是指在主表中删除记录时会把相关子表的数据也一起删除,避免出现数据混乱,如在“订单”表中删除每个“订单ID”的记录时,“订单明细”表中所在有关“订单ID”的记录也会一起删除。

第18页 共59页 “级联更新相关字段”是指主表中的主键修改,子表中的相关字段会自动更改。如我们在“客户”表中修改了“客户ID”,那么“订单”表中的“客户ID”会自动更新。在罗斯文数据库中,只有“客户”表与“订单”表中的关系用到了级联更新,基他主表中的主键都是自动生成ID号,不存在修改情况,所以也用不着级联更新

查询的具体分析:

一般的在表设计完成阶段以后就可以进行窗体的设计,然后再根据需要完善报表功能。在窗体与报表设计过程中会较多的使用到查询,一般的可以要据需要随时建立。不过为了先让大家都查询有个系统的了解,所以我们把罗斯文数据

库中的查询放到前面来看。

查询一般可以分为五种基本类型:选择查询,参数查询,交叉表查询,操作查询和SQL查询。用得最多的应是选择查询。可以结合罗斯文中的实例一起来学习一下。罗斯文数据库中共有21个查询,这些查询分别为窗体和报表提供了

数据源,我们挑选其中的一些来学习。

1.订单查询:

订单查询是为“订单”窗体提供数据的,包含订单表中的全部字段和客户表中的部分字段。一般我们在设计查询时用的最多的是用设计视图创建查询。由于订单查询是一个比较简单的查询,所以我们通过该查询来学习一下怎样通过简单查询向导来创建最简单的查询,然后再利用设计视图来查看和修改。

在数据库的查询对象窗口,双击“使用向导创建查询”

下载 (6.9 KB) 2008-4-15 16:47

或者单击“新建”按钮,在跳出的“新建查询”的窗口中选择“简单查询向导”

下载 (7.37 KB) 2008-4-15 16:47

第19页 共59页 在“表/查询”中选择“表:订单”,选中该表中的所有字段加入到“选定的字段”中

下载 (25.04 KB) 2008-4-15 16:47

再从“表:客户”中选择字段公司名称,地址,城市,地区,邮政编码,国家

下载 (7.55 KB)

第20页 共59页

2008-4-15 16:47

单击“下一步”,选择“明细”;如果要在查询中实现将记录进行分组,计数、求和、求平均值等计算,则要在这一步选择“汇总”进入“汇总选项”进行相应的设置。

下载 (22.15 KB) 2008-4-15 16:47

选择“下一步”,给查询起名“订单 查询”,单击“完成”,自动打开查询,显示查询结果。

第21页 共59页

下载 (31.8 KB) 2008-4-15 16:47

如果要对查询进行查看或修改可以进入设计视图中,从菜单“视图”中选择“设计视图”,即可进入设计视图界面。当然工具栏也有“视图”按钮。

下载 (16.46 KB) 2008-4-15 16:47

设计视图分为上下两上窗口,在上面显示查询中要用到的数据源来自于哪些表或查询,在下面列出的是查询结果中需要用到的字段,该字段来自哪个表,哪个字段需要设置排序方式,是否需要显示该字段,以及查询条件等。

很多查询只需查询出满足条件的记录,并不需要全部的记录,这样就需要在“条件”中输入条件,一般用表达式来表示,只有满中表达式的记录才被显示出来。因此我们需要了解一下表达式。

表达式:

表达式是许多 Microsoft Access 运算的基本组成部分。表达式是可以生成结果的运算符号和操作数的组合。例如,可以在窗体或报表的控件中使用下列表达式来显示“小计”和“运货费”控件的数值总和:= [小计] + [运货费] 常见的运算符如算术运算符“=”,“+”,“-”,“*”,“/”;比较运算符“>”,“<”,“>=”,“<=”,“<>”,“=”;逻辑运算符“and”,“or”,“not”;连接运算符“&”,“+”;及常用的!和.(点)运算符。

常见的操作数如字符串,日期/时间值,常量,变量,函数及引用窗体或报表中的字段值,控件值或属性等。

常见表达式示例: 数学及比较运算表达式

表达式 =[数量]*[价格] =[到货日期]-[发货日期] >2500

日期表达式

表达式

说明

第22页 共59页

说明

计算数量与价格的乘积,可以得出总价

计算两个日期之间的天数

比2500大的数 Between #1997-01-01# And #1997-12-31# <#2007-12-30#

在1997-01-01各1997-12-31之间的数据

2007-12-30以前的数据 30天以前的数据

计算年龄 3月份出生的人

逻辑运算表达式

表达式

“北京” or “上海”

Is Not Null “性别”= “男” and “年龄”>30

= “中国” & “北京”

通配符表达式

表达式 Like “张*” Like “张?”

聚合函数表达式

表达式 Sum([数量]*[价格]) Avg(费用) Count(*)

2.“当前产品列表”查询

当前产品列表统计出未被中止的产品。

在数据库的查询对象窗口,双击“在设计视图中创建查询”或单击“新建”按钮,在跳出的“新建查询”的窗口中选择“设计视图”,进入设计视图界面,从显示表中添加“产品”表。选中“产品ID”,“产品名称”,“中止”三个字段(注:选中字段可以把字段从设计视图界面的上方拖到下方,也可以双击字段名称),去掉“中止”下面“显示”的勾,在条件一栏输入“no”,代表只查询出未被中止的产品,但只要显示产品的ID和名称就行了,是否中止的状

第23页 共59页

说明

城市为北京或上海的数据

不为空

大于30岁的男性数据 值为 “中国北京”

说明 以张开头的数据

以张开头后面还有一个字的数据

说明

求数量和价格相乘后的和

求费用的平均值 计算记录条数 态不用显示出来。我们还想将输出的结果按照产品名称进行排序,在“产品名称”下面的“排序”栏里选中升序。这样查询就完成了,点保存,给查询起个名字就可以了。

下载 (22.38 KB) 2008-4-16 11:15 我们打开罗斯文数据库中的当前产品列表查询,会发现数据源是“产品列表”,不是“产品”表,这里是用到了表的别名,一般的我们在查询中为了方便,经常会给比较长的表名取个短一些的名称,更方便引用表。方法是在显示的表上点击鼠标右键,选择属性,在别名中填上合适的别名就行了。

下载 (4.38 KB) 2008-4-16 11:15 3.“各类产品”查询

各类产品查询为各类产品报表提供数据源,在查询对象中选中“各类产品”,单击“设计”按钮,

第24页 共59页

下载 (22.38 KB) 2008-4-16 11:22

我们发现默认的是按SQL视图显示的,这时从“视图”中选择“设计视图”即可显示设计视图,当然要再切换到SQL视图,再从“视图”中选择“SQL视图”即可。通过在“设计视图”中设计查询,再切换到“SQL视图”中查看SQL

语句也是我们学习SQL语句的方法。

下载 (22.67 KB) 2008-4-16 11:22

查询的数据来自“类别”表和“产品”表,“类别名称”字段和“产品名称”字段的“排序”都是升序,查询结果将先按类别名称排序,当类别名称相同时再按照产品名称排序。中止条件为“no”,结果只包含未被中止的产品。

4.“按汉语拼音顺序的产品列表”查询

这个查询是为“按汉语拼音顺序的产品列表”报表提供数据源的。双击查询即可运行并显示查询的结果,在查询结果中并未按拼音顺序来排列,这个功能是在报表中实现的。

进入设计视图

第25页 共59页

下载 (21.01 KB) 2008-4-16 11:22

这个查询的数据来自两个表,“类别”表和“产品”表。查询的结果中只包含未被中止的产品,因此在产品字段上设置了条件,这里0代表“否”,在ACCESS中用0代表“否”,FALSE,“假”,而用-1代表“是”,TRUE,“真”

5.十种最贵的产品

进入设计视图:

下载 (28.69 KB) 2008-4-16 11:31

查询的数据来自于表“产品”,选用的字段只有产品名称和单价两个,如果要给选择的字段另外取个名称,可以给这个字段前面添加名称,中间用英文状态的冒号“:”隔开,如上图。

要查询出十种最贵的产品,只要将产品按产品单价降序来排列再取前十种即可。在单价字段上设好“降序”排列,在工具栏上的上限值列表框515)this.width=515}" alt="" src="http:///img/clip_image0027.jpg"> 中输入10即可。双击查询查看运行结果,体会在设计视图中设置的作用。

6.季度订单

这个查询列出了在1997年度有订单的客户,不是某个季节的记录,而是含盖了全年度的记录,这个结果用于给“季度订单”窗体提供数据源,在窗体中再具体实现按四个季度显示统计结果。

进入设计视图:

第26页 共59页

下载 (19.56 KB) 2008-4-16 11:31

这个查询的数据来自于“客户”表和“订单”表,“订单”表中用到的订购日期只是作为一个条件项,不用被显示出来,条件里是一个表达式,代表的含义是订购日期介于1997年1月1日到12月31日之间的,这里用到“between„and„”这种语法。日期型的数据应该在两侧加上“#”号。接下来我们还要考虑到有些客户可能在1997年度有多次订货,而我们希望的结果是每个客户只出现一次。这时可以在查询视图的上半部分窗口的空白处右击鼠标,从浮动菜单中选择“属性”,也可直接在工具栏上选择“属性”

下载 (35.85 KB) 2008-4-16 11:31

第27页 共59页

设置查询属性中的“唯一值”属性为“是”即可。设置了这个属性就能保证每组中的重复数据只会列出一个。 在这里还要提一下的是要注意一下选择表的联接类型,在联接线上双击可以显示联接属性,联接属性分为三种,可以根

据要求选择。

下载 (20.53 KB) 2008-4-16 11:31

一般默认的联接类型为1,只包含两个表中联接字段相等的行,在本例中改成联接类型为3,包含订单表中的所有记录,在SQL语句方面分别体现为内联接,左联接和右联接,这是有区别的,可以参考运行结果体会联接的作用。

7.扩展订单明细

扩展订单明细为窗体“客户订单子窗体2”提供数据源,查询中带有计算字段,查询出每个订单每种产品的一些明细信息。

进入设计视图:

下载 (19.99 KB) 2008-4-16 11:36

查询的数据来自于“产品”表和“订单明细”表,查询结果按订单ID升序排列。

第28页 共59页 查询中的字段总价是个计算字段,总价为该字段的名称,计算表示用“订单明细”表中的“单价”乘以“数量”后再乘以(1相当于算出了打过折后的总价。字段中用到一个CCur()转换函数,它的作用是将数据转换为货币类型,另外表达式中用了先再乘以100的做法。查了相关帮助,CCur()转换函数应是精确到小数点后面4位,这样先在转换函数中除以100,然后再乘当把数据还原,同时小数点后面保留两位小数。不过我试了直接用CCur([订单明细].[单价]*[数量]*(1-[折扣])),得到的结

位的?欢迎共同讨论。

8.订单小计

订单小计统计出每个订单上各种产品的销售金额的总计金额,为汇总销售额等多个查询提供数据。

进入设计视图:

下载 (24.6 KB) 2008-4-16 11:36

查询的数据来自于“订单明细”表,选用的字段只有一个“订单ID”,小计字段是个计算字段,小计是这个字段的名称,后面是计算表达式。计算方法同“扩展订单名细”查询中的“总价”字段,这里由于只有一个表,所以[订单明细].[单价]可以直接写成[单价],该字段为:小计: CCur([单价]*[数量]*(1-[折扣])/100)*100。本例到这里只是计算出了每个订单ID中每种产品的总价,而我们要统计出的是每个订单ID中所有产品总价的和,所以我们要对订单ID进行分组,要用到“总计”行的功能,“总计”行默认是不显示的,可在设计窗体的下半部分右击鼠标,选择“总计”,或者单击工具栏上的按钮∑,这样都会多出一行总计来,在总计行,可从下拉框中对每个字段选择相应的操作,可以作为分组依据或条件字段也可以选择聚合函数或其他函数来对字段进行计算,如果要自己写表达式,则选择表达式。在本例可以把“订单ID”字段设成分组字段,对“小计”字段要进行求和,只要选成“总计”就可以了。罗斯文的示例中并没有选用“总计”的功能,而是对“小计”字段设成了“表达式”,而在表达式中加上了求和函数Sum(),大家可以比较一下,用这两种方法生成的查询运行结果都是一样的,而SQL查询的语句也是一样的。

对于表达式如果一开始觉得写起来有些困难的话,可以借助于生成器来生成,生成器中有数据库中的各种对象,操作符以及函数,只要进行选择再修改一下就可以了。方法是在字段上右击鼠标,从中选择“生成器”,在生成器的下方

第29页 共59页 选择相关参数,计算符等,表达式生成在上方可进行修改。

下载 (8.65 KB) 2008-4-16 11:39

下载 (29.97 KB) 2008-4-16 11:36 9.按年度汇总销售额

“按年度汇总销售额”查询为“按年度汇总销售额”报表提供数据,另外“按季度汇总销售额”查询与本查询完全一样,也就是本查询也能为“按季度汇总销售额”报表提供数据源,按季度的功能是在报表中实现的。本例要统计出已经发货的各订单的计单ID号及各订单小计金额。

第30页 共59页

进入设计视图:

下载 (29.54 KB) 2008-4-16 12:05

查询的数据来自于查询“订单小计”及“订单”表,取“订单”表中的发货日期字段,并按该字段升序排列,另外该字段还设了条件,为“Is Not Null”,这个表达式代表数据不为空,没有填写过发货日期的记录则为空,代表尚未发货,

并排除在外。

10.按金额汇总销售额

“按年度汇总销售额”查询统计了1997年订单的小计金额在2500元以上的订单,为“按金额汇总销售额”报

表提供数据。 进入设计视图:

下载 (25.79 KB) 2008-4-16 12:05

查询的数据来自于“客户”,“订单”表及“订单小计”查询。对小计字段另取名称为“销售金额”,加上条

第31页 共59页 件“>2500”,表示只要订单小计在2500元以上的记录;发货日期加上条件“Between #1997-1-1# and #1997-12-31# ”表示只要发货日期在1997年的记录。两个条件在同一行表示要求同求满足。

11.各国雇员销售额

“各国雇员销售额”查询统计各国雇员的销售情况,为“各国雇员销售额”报表提供数据。

进入设计视图:

查询的数据来自于“雇员”,“订单”表及“订单小计”查询,发货日期字段的条件为“Between [起始日期] And [终止日期]”,因为表中并没有[起始日期]字段,所以运行时,ACCESS会将它看作一个参数,并跳出提示框,[终止日期]同理,在运行时输入正确的参数,并会得到查询结果。

12.各年销售额

“各年销售额”查询统计某一年的每个订单的销售情况,为“各年销售额”报表提供数据。

进入设计视图:

查询的数据来自于“订单”表及“订单小计”查询,年份是个计算字段,用了一个Format()函数,这是一个文本格式函数,具体参数及用法请查看帮助。重点来看发货日期的条件设置,这个条件由两部分组成,中间用“And”联结,表示要同时满足前后两个条件,前面一半为“Is Not Null”代表发货日期不能为空,后面一半为“Between [Forms]![各年销

第32页 共59页 售额对话框]![起始日期] And [Forms]![各年销售额对话框]![终止日期]”,这也是一个“Between and ”的用法,只不过里面引用了两个窗体中的参数,[Forms]![各年销售额对话框]![起始日期]代表“各年销售额对话框”窗体中的“起始日期”中的值,[终止日期]同理,在运行中,如果“各年销售额对话框”窗体是打开的并能读取到相关参数,则直接给出运行结果,否则象“各国雇员销售额”查询中一样,跳出提示框要求输入。事实上好多报表都会从窗体或报表中读取一些数据作为报表的计算依据,我们要熟悉这种参数的设置方法。

13.发货单

“发货单”查询详细统计出每个订货单的详细信息,包括订单情况,货主情况等,为“发货单”报表提供数据。

进入设计视图:

这个查询选择的表很多,其实在设计时方法还是一样的,分别选择如上图的6个表,根据需要选择相应的字段,其中销售人字段是个计算字段,把[姓氏]和[名字]联在一起显示,用到一个联接运算符,总价字段也是一个计算字段,与前面例中的计算方法相同。对于表中设置的一些属性会在查询中直接带过来,如在相联接的两个表“客户”和“订单”表中有相同的两个字段“客户ID”,如选择“客户”表中的“客户ID”显示的是ID号,而选择“订单”表中的“客户ID”显示的是客户名称,这是由于“订单”表中的该字段设了查阅属性的缘故,不过字段中实际存储的值都是一样的,只是影响显示,可根据需要从相关表中选择相应字段。在这个查询中在“总计”行对每个字段都采用了“分组”,其实这样的效果和排序是一样的,如不用“分组”而对每个字段依次进行排序,运行的结果也是一样的。当然如果需要分组计算

时,则是不可替代的。

14.各类销售额

“各类销售额”查询为“各类销售额”报表提供数据,统计了1997年各类产品的销售情况。

进入设计视图:

第33页 共59页

下载 (25.97 KB) 2008-4-16 12:09

这个查询的数据来自于3个表及一个“扩展订单明细”查询,查询中对类别及产品名称进行了多级分类,再对分类后的产品求出销售总金额。所以在查询中“类别ID”,“类别名称”及“产品名称”字段的“总计”行都设为分组字段,总价字段是计算字段要进行求和,所以设成“总计”,另取名称为“产品销售额”。在这种多级分类统计的查询中一样可以设置条件,本例中的订购日期,不要显示,只是作为条件字段,所以“总计”行设为“条件”,条件为“Between

and ”的名型,查询出1997年的数据。

15.1997年产品销售额

“1997年产品销售额”查询统计出不同类别的产品在不同季度的销售额,为“1997年各类销售总额”查询提供

数据。 进入设计视图:

下载 (25.41 KB) 2008-4-16 12:09

查询的数据来自于上图中的四个表,其中“发货季度”字段是个计算字段,用到了一个日期函数DatePart(),具体的参数和用法可以查看帮助,在本例中取日期中的季度,结果为1-4中的一个值,后面加上一个联接字符串,现加上季度,可以形成“1季度”这样的字符串。在“总计”行:需要分组的字段“类别名称”,“产品名称”,“发货季度”设成“分组”,而且分类应是有先后的,大类放在前面;需要设置条伯的字段“发货日期”设成“条件”;需要计算的计算的字段“产品销售额”设成“表达式”。

16.1997年各类销售总额

“1997年各类销售总额”查询以“1997年的总销售额”查询为数据,进一步查询出每种类别的销售总额,比较简单,详

第34页 共59页

见设计视图:

下载 (27.86 KB) 2008-4-16 12:19

其实本例也不一定非要通过“1997年的总销售额”查询来产生。也可以如下图设置生成,运行结果也是完全一样的。

下载 (36.6 KB) 2008-4-16 12:19

17.高于平均价格的产品

“高于平均价格的产品”查询,以产品平均价格作为衡量依据,统计出比平均价格高的产品。

第35页 共59页

进入设计视图:

下载 (27.08 KB) 2008-4-16 12:19

这个查询的数据来自于“产品”表,选择的字段也很简单,只有两个“产品名称”与“单价”,这个查询的关键在于设置“单价”字段的条件,并不是所有的产品都显示出来,单价大于平均价的才显示出来,条件中用到比较运算符“>”,平均价格哪里来呢,在本例中用了一个SQL查询语句,也叫子查询。象这种在条件中包含SQL语句的查询叫嵌套查询,可以进行多层嵌套。用“Select AVG([单价] From 产品”来求出产品表中所有单价的平均值。本例的条件中如果不用子查询,改用函数也是可以的,可以改成“>DAvg("单价","产品")”。

18.各城市的客户和供应商

“各城市的客户和供应商”查询是一个联合查询,它将“客户”表和“供应商”表的信息联合在一起,查询出每个城市的客户及供应商。联合查询由多个Select语句组成,各语句之间用关键字“UNION”联接起来。要求在第一个查询语句中就要列出所有的字段,字段名也以第一个查询中的为准,后面各查询语句中所用的字段的个数,数据类型,顺序都要与第一个查询中相同。本例中的查询语句如下:

Select 城市, 公司名称 , 联系人姓名, "客户" AS [关系]

FROM 客户

UNION Select 城市, 公司名称, 联系人姓名, "供应商"

FROM 供应商

ORDER BY 城市, 公司名称; 前两行中是第一个查询语句:从“客户”表中选择“城市”、“公司名称”、“联系人姓名”,另加一个字段“关系”,以字符串“客户”作为“关系”字段的值。第三每四行中包含“UNION”关键字及第二个查询语句:从“供应商”表中选择“城市”、“公司名称”、“联系人姓名”,另加一个字段,以字符串“客户”作为字段的值,这里字段名省略,因为默认会取第一个查询语句中的字段名。最后一行是个将查询出来的结果按照城市和公司名称的升顺来进行排序。

第36页 共59页

19.各种产品的季度订单

“各种产品的季度订单”查询是一个交叉表查询,它以行列交叉的行形列出不同产品,不同客户在1997年的各个季度中所有的订购额。为“季度订单”子窗体提供数据。

一般简单的交叉表查询可以利用“交叉表查询向导”来生成,不过本例中的数据来源于多个表,还有计算字段,因此需

要在设计视图中创建。

进入设计视图:

下载 (24.95 KB) 2008-4-16 12:24

查询的数据来自于“订单”,“订单明细”,“产品”表。要实现交叉表查询,需要从菜单“查询”中选择“交叉表查询”,这样就会在设计视图的下半部分多出“总计”行及“交叉表”行而少了一行“显示”。因为交叉表需要在行列的交叉处显示汇总结果,而这个结果则是根据行列的多重分组计算出来的。然后选择相应的字段,在“交叉表”行及“合计”行中对各字段进行设置:本例中“产品名称”,“客户ID”,“订购年份”作为行标题,其中“订购年份”字段中用到“Year()”函数,代表取订购日期中的年份的值;订购年份后面一个字段用来作为列标题,该字段也是一个计算字段,用到一个“DatePart()”函数,及“&”联合运合符。显示的结果为"第1季度","第2季度","第3季度","第4季度"四个中的一个;“产品金额”设置为“值”是个计算字段,计算方法同前面的查询;对于分组计算来说,交叉表中的行与列是分组依据,值是计算结果,即总计行的设置是:“产品名称等前4个字段设成“分组”,“产品金额”设为表达式。“订购日期”是个条件这段,并不显示,条件为1997年的数据。

可双击查询查看运行结果,对照生成的结果来查看设置的具体效果。

到这里查询也全部结束了,只有少数几个没看,没有新的知识点,所以略过了。

报表分析

报表的具体分析:我个人的操作习惯,一般的在表设计阶段完成以后,我就直接进入到窗体设计阶段,根据需要建立查询,报表功能放在最后完善。因为在窗体的设计中有调用到报表,所以我们在学完查询后,再先来学习一下报表,把窗

体的制作放在最后来学吧。

第37页 共59页 窗体主要是为了实现数据的采集,而报表则是用于数据的显示输出或打印,在数据展示方面具有特长,可以对数据进行

分组和汇总显示。

报表的构成:报表由控件和节组成,节又可分为主体节与页眉、页脚节。而页眉页脚根据对象的不同,再进行细分为报表页眉页脚、页面页眉页脚、组页眉页脚。如果有多个分组时,则按照分组级别进行嵌套。

主体节是报表的核心部分,凡是希望按顺序列出的数据,都应以控件形式放在主体中,一般用得最多的控件便是文本框了。而如果希望作为标题、分类依据、汇总信息等则应该以控件的形式安排的页眉或页脚。

这里重点要了解各种不同的页眉页脚的控制范围是不同的。报表页眉是指在整个报表的开头出现一次,报表页脚则是指在整个报表末尾出现一次。页面页眉与页脚是指报表有很多页,那么每个页面的最上面与最下面出现的便是页面页眉与页面页脚了。组页面页脚的作用范围,便只在自己分组的范围内了,如果按部门分组,会有好几个部门,那么在部门页眉页脚中设置的内容,在每个部门的分组页面与页脚中都会重复出现。

了解了这些基本构成后,我们还是结合罗斯言文实例来看吧。

1.“按汉语拼音顺序的产品列表”报表

“按汉语拼音顺序的产品列表”报表是按产品名称的第一个字来进行分组显示产品信息的报表。在报表中除了产品名称外,还列出了类别名称,单位数量和库存量的数据。

首先我们还是来学习一下如何用向导来创建报表,然后再利用设计视图来查看和修改,以后的实例将直接在设计视图中

进行学习。

在数据库的报表对象窗口,双击“使用向导创建报表”

下载 (17.57 KB) 2008-4-16 13:15

或者单击“新建”按钮,在跳出的“新建报表”的窗口中选择“报表向导”

下载 (13.04 KB)

第38页 共59页

2008-4-16 13:15

选择报表的数据来源表或查询为:“按汉语拼音顺序的产品列表”查询

下载 (27.06 KB) 2008-4-16 13:15

选择需要的字段,点下一步:

下载 (17.7 KB) 2008-4-16 13:15

第39页 共59页

选择查看数据的方式为通过产品,点下一步:

下载 (20.18 KB) 2008-4-16 13:15

添加分组级别:产品名称,并点击“分组选项”对分组间隔进行设置

下载 (12.58 KB) 2008-4-16 13:15

第40页 共59页

我们选择按“第一个字母”,设好以后点“下一步”

下载 (27.32 KB) 2008-4-16 13:15

下载 (13.51 KB) 2008-4-16 13:15

选择排序字段为“产品名称”,在这里还有一个“汇总选项”,在本例中用不到,在需要分类汇总数据时,就从这里进

第41页 共59页

行设置。点“下一步”

下载 (28.56 KB) 2008-4-16 13:15

选择报表的布局,每种布局的显示方式可以选中看左边的示例。在这里我们选择“分级显示2”,点“完成”。 自动打

开报表,显示报表的显示结果。

下载 (29.7 KB) 2008-4-16 13:15

接下去我们进入设计视图进行修改,从菜单“视图”中选择“设计视图”,即可进入设计视图界面。当然工具栏也有“设计”按钮515)this.width=515}" height=25 alt=""

第42页 共59页 src="http:///userfiles/tigermali/Image/200833118405981902.jpg" width=38>。

下载 (46.48 KB) 2008-4-16 13:15

设计设图中“报表页眉”、“页面页眉”、“产品名称页眉”、“主体”、“页面页脚”代表各个节的名称,在节的节面有个小方框按钮一样的东东是节选择器,用鼠标点击可以选择相应的节。

首先看下“报表页眉”中是一个标签控件,我们把文字内容改为“按汉语拼音顺序的产品列表”,选中标签,把字体设

成宋体,12号,加粗。

下载 (13.31 KB) 2008-4-16 13:15

调整位置,在标签的下方加入一个文本框,把文本框的“控件来源”属性设置成:“=Format(Date(),”yyyy-mm-dd”)”,其中Date()函数用于获取系统的当天日期,Format函数将改变日期的显示格式为“2008-03-01”这样的格式。

其他的比如水平线之类的只是依据个人的爱好来设置,如果不要就删除掉,如果要的话,可以从控件中找到直线工具,直接画出一条即可。具体的显示效果可以通过在设计视图和预览视图中切换来观察设置的效果。 报表中的分组设置通过“排序与分组”来实现,从视图菜单中选择“排序与分组”,或在工具栏上找到

515)this.width=515}" alt=""

第43页 共59页 src="http:///userfiles/tigermali/Image/2008331184322560119.jpg">。

下载 (19.03 KB) 2008-4-16 13:15

在这个页面可以设置排序字段,也可以设置分组字段,具体得可以选中这一行,在下面的组属性中查看,如果组页眉与组页脚的属性都为否,就说明这只是一个排序的字段。否则说明这是一个分组字段。在这里分组形式可以根据分组的字段不同,提供一些常用的分组方法,如果是文本型的提供按前辍字符进行分组,如果是日期型的,还可以设置成按年,月,季等进行分组。保持同页的设置用于控制这一个分组中的数据要不要显示在同一页,可以改为整个组。

组页眉的标题中是一个文本框,用到一个Left$函数,这里已经自动生成了,我们可以发现罗斯文中有到的是Left函数,这两个函数的作用是相同的,只是与LeftB相区别,具体可查看帮助。

页面页脚上有页码显示,可以从插入菜单中选择页码命令,也可以直接加一个文本框,在控件来源属性中设置。这里[page]

代表当前页,[pages]代表总页数。

第44页 共59页

2.“按季度汇总销售额”报表

“按季度汇总销售额”是显示各年同一季度销售额的汇总报表。在设计视图中打开“按季度汇总销售额”报表。

下载 (67.48 KB) 2008-4-16 13:34

在左上角的报表选择器上双击,跳出属性窗口,首先看一下报表的记录源是“按季度汇总销售额”。

报表页眉中有一个标签,一个文本框,文本框的值为“=Format(Date(),"yyyy-mm-dd")”,按格式显示系统的当天日期。

页面页眉中只有一条水平线,每页的顶端都会打印一条水平线。 看一下这个报表的排序分组会发现本报表进行了二层的分组嵌套。

下载 (20.3 KB) 2008-4-16 13:34

第一个分组字段为一个表达式“=DatePart("q",[发货日期])”,这个函数的意思为取发货日期中的季节,也即是按季节

第45页 共59页 分组。第二个分组字段为发货日期,但分组形式不是每一个值,而是年。这里分别给我们演示了两种不同的用法,其结果是一样的。也就是说第一个分组字段,我们也可以设为发货日期,然后把分组形式设成季即可。

“=DatePart("q",[发货日期])”页眉中有一个文本框,值为“=DatePart("q",[发货日期])”,代表季节,另个设置了几个标签。还加了四条直线作为分隔。发货日期的页眉为空,主体也为空,因为主体中一般列出的是满足分组条件的明细记录,在这里我们只要每一年度的一个合计数,所以内容在发货日期的页脚中。发货日期页脚中有三个文本框,内容分别为“=DatePart("yyyy",[发货日期])”:将发货日期转换为4位的年份数;“=Count([订单ID])”:用Count函数计算同每一年的订单ID数目;“=Sum([小计])”:用Sum函数计算各订单小计的合计数,也即是各年销售额。

“=DatePart("q",[发货日期])”页脚中只有一条水平线,用于标识本组的结束

页面页脚中只包含页码内容,居中显示。

报表页脚无。

3. “按年度汇总销售额”报表

“按年度汇总销售额”报表是显示每年各季度的销售额汇总报表,与“按季度汇总销售额”报表非常近似。只是在分组的层次上顺序不一样而已。“按年度汇总销售额”报表是先按年分组,在同一年份中的数据再按季度分组。“按季度汇总销售额”报表是先按季度分组,再统计出各个季度中不同年度的销售额。我们可以对照报表预览对比这两个报表的不

同之处。

4.“发货单”报表

第46页 共59页 “发货单”报表提供在单独的页面打印每张发货单。进入设计视图

下载 (112.85 KB) 2008-4-16 13:34

报表的记录源是“发货单”查询。

第47页 共59页 页面页眉中有罗斯文公司的名称,公司LOG,报表名,公司地址、电话、传真,还是日期信息,它会在每一页的顶端显示。

下载 (20.74 KB) 2008-4-16 13:34

“订单ID”页眉是组页眉,分组形式为“每一个值”,表示同一个订单ID的信息会显示在同一组中,排序次序为降序代表我们在预览或打印时,最先出来的一份订单是订单号最大的一份订单。订单ID页眉中放置的内容为每一个订单中的唯一信息有收货者和收单者的信息,由两个标签和一些文本框组成。文本框的控件来源来自报表数据源中的字段值。其中用到一个很长的表达式“=IIf([地区] Is Null,[城市] & " " & [邮政编码],[地区] & " " & [城市] & " " & [邮政编码])”,这是一个IIF函数,把它分解成三部分来看即可,每一部分是条件,满足条件显示第二部分的内容,如不满足则显示第三部份的内容,具体的可查看帮助。

而对于每份订单中产品的具体内容,在这里需要列出明细,这部分内容适合在主体中进行显示,本例中包含产品ID、产品名称、数量、单价、折扣、总价字段。

“订单ID”页脚为分组页脚,这里适合显示每个组中的数据汇总信息。在这里计算出了一份发货单的小计金额等于各产品的总价和“=Sum[总价]”,发货单合计金额等于发货单小计加上运货费“=[发货单小计]+[运货费]”。

当然在这个报表中我们也会学习到如何利用有颜色的水平线及矩形来对数据加以分隔,从而达到美化报表的作用。可结合报表预览体会设置方法。

.“各类产品”报表

“各类产品”报表是按类别显示库存量,是个比较简单的报表,这里最大的特点是分列打印,这是通过页面设置实现的。

第48页 共59页 从“文件”菜单中选择“页面设置”,设置打印方向为横向。

下载 (29.14 KB) 2008-4-16 13:41

在“列”选项卡中,设置列数为3,表示每页分3列,列间距表示每列之间的距离。列尺寸中的宽度代表每列的宽。在设置时,要参考选择的纸张的大小,来设置节的宽度,而如果分多列设置的话,这里每列的宽度乘以列数再加上所有的列间距的宽度不能大于纸张的宽度。这里的高度设置没发现起什么作用。列的布局中选择先列后行,表示每个分组中的数据先从新的一列开如,一列显示不下才在第二列显示。先行后列的效果可参见下一个“客户标签”报表。

进入视计视图

下载 (67.29 KB)

第49页 共59页

2008-4-16 13:41

在设计页面安排控件时要按照设置的列宽来布置,具体可参看标尺。

报表的数据源是“各类产品”查询。

报表页眉中包含一个标签显示的标题及日期。并用灰色作为节的背景色。

类别名称页眉是一个组页眉,在排序与分组中设定“类别名称”字段分组,并显示组页眉和组页脚。组页眉中含组标题“类别名称”,及为主体节数据提供标题的标签“产品名称:”和“库存量:”,另外还有两条粗水平线,用于分隔。查看组页眉的属性,在格式页面的新行或新列属性中设成了“节前”。表示在一组显示完后,在下一列中显示下一组的数据。要是设成无,则下一组的数据会接着本组的数据后面显示。可以更改设置并预览,体会这个设置的作用。

主体节中含“产品名称”和“库存量”,这是明细信息,在主体中显示。

类别名称页脚设置了一个标签及产品数目文本框,控件来源为:“=Count([产品名称])”, Count是一个计数函数。这里在每个分组的结果划上一条水平线,并在下面统计出这一分组类别中的产品数量。

页面页脚中包含页码信息。

报表页脚无。

6.“客户标签”报表

“客户标签”报表按3列显示客户信息。在报表的页面设置中指定列数为3,列布局选择按“先行后列”的布局。进入视

计页面

下载 (21.66 KB) 2008-4-16 13:41

报表的记录源为“客户”表。

报表只有一个主体节,主体节中包含4个文本框,控件来源中加入了Trim函数,去除数据两端的空格再显示。

7.“按金额汇总销售额”报表

“按金额汇总销售额”报表按金额降序显示销售额,并在第一页只显示10个最大的客户。以销售金额相差1000为一个分组,每个分组之间以横线隔开,在每页的页脚中显示每页的销售金额合计数。这是一个让我们学习宏运用的示例,本

示例中没有任何代码。

第50页 共59页

第六篇:数据库课程学习的收获和心得体会

在大二的下学期刚学了数据库这门课,对这门课的第一印象是书本蛮厚的,感觉学起来应该会很难很累。在学习这门课的过程中,在对数据库的了解过程中,慢慢对数据库有了感观。数据库这一词并不是很难想象,并不是像外人看来很神奇。作为计算机专业的学生,这样的专业术语或者专业知识是最基本的。

学习的时候没有想象中的那么难,只要上课能听懂就基本还可以。但是问题还是出在书本有点厚,有的时候上课的内容都要找很久才能找到,甚至有的时候老师讲的知识书本上是找不到的,是另外补充而且是相当重要的内容。有的时候开小差,没有听到老师讲的知识点,这就导致了以后的学习无法顺利进行,使得学习起来十分困难。所以在数据库这门课的学习中,上课一定要听牢,就像老师说的那样,这样的专业课如果想凭考试前几天突击是行不通的,必须是日积月累的知识才能取得好成绩。

通过对数据库的学习,我也明白了各行各业都离不开数据库,就算是一个小型的超市也离不开它。可见数据库这门课的广泛性,如果能够认真学好它将来必有成就。我就是抱着这种信念去学习数据库的。第一次接触数据库,第一次接触SQL语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习SQL语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。后来学了单表查询和连接查询后,就慢慢发现越学越困难了,每个题目都要思考很久,并且每个题目基本上不止一个答案,所以必须找出最优的答案。后面的删除、插入、修改这些题目都变化蛮大的,书本上的例题根本无法满足我们,好在老师给我们提供了大量的课件,通过这些PPT,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。

除了老师布置的一些基本作业外,还有一份大作业。就像我们小组的是杂货店的销售管理系统,在完成这一作业的过程中,我们可以通过网络实现一家杂货店。过程是很复杂的,杂货店需要员工,还有百来种商品,不仅需要大量的数据,还要完成需求说明,数据词典,还有E-R图等,虽然想象起来并不是很难,但是要转化成文字,转化成人们能够读懂的文字就显得十分困难。特别是一个完整的销售系统,对我们来说都是第一次接触,在做大作业的时候经常是前面改改,后面改改,因为一些数据不能很好地对应起来,经常会遗忘一些,所以出现了这样的情况。一个完整的数据库系统也就是在这样修修改改的状态下完成的,也给了我很大的反思。第

一、一个数据库的完成一定要考虑各方面的因素,包括现实因素。第

二、在完成这类作业时,修修改改是很正常的,不要因此而厌倦。第

三、一个完整的数据库一定不能出现错误,否则会在现实生活中带来不必要的麻烦。

通过本学期数据库的学习及大作业的完成,很有去作项目的冲动,但深知自己的能力水平有限,还需要更多的学习。

吴曼菱 18:20:41 本学期开设的《数据库系统及应用》课程已经告一段落,现就其知识点及其掌握情况以及对该门课程的教学建议等方面进行学习总结。

一、数据库主要知识点

我们首先从第一章绪论了解了数据库的概念,其中有几个较为重要的知识点,即数据库系统DBS、数据库管理系统DBMS的概念以及数据库管理员DBA的职责。此外本章还介绍了数据库发展的三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。

第二章介绍了数据模型和三层模式数据库。本章要求我们理解实体-联系方法,并学会绘制E-R图。此外还应掌握概念数据模型的意义和传统的三大数据模型,以及数据独立性和数据库三层模式结构。

接着开始着重讲述现在普遍使用的关系数据库。包括关系数据模型的数据结构和基本术语,关系模型的完整性约束和关系代数运算。重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运算。最后介绍了关系数据库系统的三层模式结构。

第五章系统讲述关系数据库的标准语言SQL的定义功能、查询功能、操作和控制功能。重点在于数据查询功能。另外还介绍了视图的用法和动态SQL中定义、操作和查询功能。 第六章知识点有:存储过程的创建和执行过程、修改和删除;触发器的基本概念,建立,插入和删除视图,插入、删除和更新类触发器。最后介绍了数据完整性。

第七章介绍安全性,包括安全性措施的层次、数据库管理系统的安全功能等,用户管理和角色管理,权限管理。其他的安全问题包括:数据加密、审计、统计数据库和用户定义的安全性措施。

事务管理这一章首先介绍了事务的概念、性质以及SQL对事务的支持。并发控制——干扰问题、可串行性、封锁、死锁、隔离级别、封锁与隔离级别;恢复——故障类型、备份类型、日志的概念、恢复模型、备份转储、还原。 第九章为关系数据理论:函数依赖术语和符号;函数依赖的公理系统——Amstrong公理的内容及其正确性、逻辑蕴含和闭包、公理的完备性、闭包的计算、函数依赖集的等价和最小化;规范化——1NF、2NF、3NF、BCNF;模式分解。

第十章:数据库设计。完善E-R模型中的概念——弱实体,依赖关系,强制联系;数据库设计的过程主要掌握其建立的步骤。 第十一章介绍面向对象数据库:新的数据库应用和新的数据库类型;面向对象的数据模型——对象与类;对象的属性、方法和状态、对象的交互和消息、类的确定和分化、封装、继承、多态;对象关系数据库与对象数据库;面向对象数据库的研究。

十二章“数据库应用的结构和开发环境”并非重点,而第十三章的内容在软件工程课程中就已经掌握,所以这两章的知识点就略过了。

第十四章分布式数据库与分布式数据管理:概念;分布式数据库的分布方式;分布式数据库特点和目标——更新传播、分布式查询处理、目录表管理、分布式事务管理;SQLServer的复制及其术语、复制模型。

十五章数据仓库:概念;结构;数据仓库系统;建立数据仓库系统;实现数据仓库的数据库模型;数据仓库与决策支持。

最后,数据库研究和应用的新领域这一章中掌握知识库的知识即可。

二、学习数据库的收获

SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

查询和更新指令构成了 SQL 的 DML 部分: SELECT更新数据库表中的数据 DELETE向数据库表中插入数据

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。 SQL 中最重要的 DDL 语句: CREATE DATABASE修改数据库 CREATE TABLE变更(改变)数据库表 DROP TABLE创建索引(搜索键) DROP INDEX - 删除索引 数据库有保持数据的独立性,所谓数据独立,是指存储在数据库中的数据独立于处理数据的所有应用程序而存在。也就是说,数据是客观实体的符号化标识,它就是一个客观存在,不会因为某一项应用的需要而改变它的结构,因此是独立于应用而存在着的客观实体。而某一项应用是处理数据获取信息的过程,也就是应用程序,它只能根据客观存在着的数据来设计所需要的数据处理方法,而不会去改变客观存在着的数据本身。数据库的传统定义是以一定的组织方式存储的一组相关数据的集合,主要表现为数据表的集合。 根据标准,SQL语句按其功能的不同可以分为以下6大类: 数据定义语句(Data-Definition Language,DDL);

数据操作语句(Data-Manipulation LanguageSQL Server2005 功能,DML); 操作管理语句(Transaction-Management Language,TML); 数据控制语句(Data-Control Language,DCL); 数据查询语句(Data-Query Language,DQL);

游标控制语句(Cursor-Control Language,CCL)。 这门课中仍然有许多不太懂的地方,还需要以后进一步学习。

三、对数据库课程教学的建议

1、精讲多练,自主学习。集中精力对基础知识,基本原理和重点内容精心组织,精心讲授,引导学生建立系统的知识结构。精讲必须多练,从能力培养着眼,注重讲、练结合,保证练的比重,加强技能训练,培养学生自主学习,增强分析问题和解决问题的能力。

2、互动式教学法,每一堂实验课均很好的“设计问题”、“引导思考”、“假设结论”、在实验中“探索求证”。使不同程度的学生可以在不同层次上举一反三。这样,使得课堂学生生气勃勃,师生互动,具有启发性。

上一篇:数一数教案下一篇:述职评议考核情况汇报