书城计算机办公软件高级应用
8915300000035

第35章 数据库应用(4)

Select MAX(奖学金)As最高值,MIN(奖学金)As最低值,AVG(奖学金)As平均值From学生where LEFT(学号,6)=“070211”。

(4)查询单表符合匹配内容。

例如,选择“学生”表中姓“陈”的而且是8月8日出生的所有学生。

Select*From学生Where姓名Like“陈*”And month(出生年月)=8And day(出生年月)=8例如,选择“070211”班和“070312”班所有学生的学号、姓名和出生年月。

Select学号,姓名,出生年月From学生Where LEFT(学号,6)In(“070211”,“070312”)本例也可以写为:

Select学号,姓名,出生年月From学生

Where LEFT(学号,6)="070211" Or LEFT(学号,6)="070312"(5)查询单表指定顺序内容。

例如,要将“学生”表中“070211”班的所有学生查找出来,并按照奖学金的降序排列的Select 语句为:

Select学号,姓名,出生年月,奖学金From学生

Where LEFT(学号,6)="070211"Order by奖学金Desc

(6)查询多表内容。

例如,查看所有学生的成绩(包括学号、姓名、课程名)。

Select成绩.学号,学生.姓名,课程.课程名,成绩.分数From学生,成绩,课程Where学生.学号=成绩.学号And成绩.课程号=课程.课程号。

说明:该查询涉及“学生”、“成绩”和“课程”表,需要对3张表实现关联,即语句中的“学生.学号=成绩.学号and成绩.课程号=课程.课程号”部分。

例如,查看所有良好成绩(大于等于80分)的所有学生的学号、姓名、课程名和分数。

Select成绩.学号,姓名,课程名,分数From 学生,成绩,课程

Where学生.学号=成绩.学号And成绩.课程号=课程.课程号And分数>=80

Order by成绩.学号

7.5.3SQL语言的其他常用语句

1.INSERT 数据插入语句

格式1:Insert Into 数据表名(字段列表)Select 源表字段列表From 表Where 条件说明:将一个或多个表(From 子句)中满足条件(Where 子句)的所有数据(Select 子句的源字段列表)添加到目标表(Insert Into 子句)中。

例如,先创建一个结构与“学生”表相同的表,取名为“Student”,取出“学生”表中所有获取奖学金的学生名单(包括学号、姓名、性别、奖学金),存入“Student”表中,用SQL语句可以写作:

Insert Into Student Select 学号,姓名,性别,奖学金From 学生Where奖学金>0

格式2:Insert Into 数据表名(字段列表)Values(取值列表)

说明:将数据值(Values 子句)添加到目标表(Insert Into 子句)中。

例如,向“学生”表中添加一条记录,学号、姓名分别为“070205005”和“林峰”,其余字段取值暂不确定,用SQL语句可以写作:

Insert Into学生(学号,姓名)Values("070205005","林峰")

2.DELETE数据删除语句格式:Delete[Table.*]From表Where 条件

说明:删除表(Delete子句)中满足条件(From 子句和Where子句)的所有数据。

例如,要将“学生”表中学号为“070205005”的记录信息删除,用SQL语句可以写作:

Delete学生.*From学生Where学号="070205005"

3.UPDATE数据更新语句

格式:Update 数据表名Set新值Where条件

说明:修改表(Update子句)中满足条件(Where子句)的所有记录,修改为由Set子句中所指定的取值。

例如,将“学生”表中原奖学金数额在50~100元的增加100元。

用SQL语句可以写作:

Update 学生Set 奖学金=奖学金+100Where 奖学金>=50And 奖学金<=100

7.6窗体设计

数据库将数据存储在表中,而表通常非常大。尽管可以直接输入或读取表数据,但这样做可能很麻烦,因为表越大,就越难确保数据位于正确的字段(列)和记录(行)中。为了更方便地输入和查看数据,可以使用窗体并进行自定义,将窗体看作我们访问数据库的窗口,从而提高数据库的应用价值和性能。

窗体基本上分为两大类:显示与数据库表信息的窗体界面和用于交互对话的窗体界面。

7.6.1显示表信息的窗体设计

在前面创建的“成绩查询1”的记录集中,包含了所有学生的所有课程的成绩信息,如果我们只关心某个学生或某门课程的相关成绩信息,或者需要对信息进行统计和汇总,就可以通过创建窗体来定位和浏览我们所关注的那部分信息。

完成这类窗体的设计,可以先通过“使用向导创建窗体”来完成其中一部分窗体的创建工作,再通过“在设计视图中创建窗体”调整部分布局并完成信息统计显示工作。

在窗体向导窗口中选择数据源记录集“成绩查询1”,将所有字段移动到选定字段列表中;接下来选择“通过学生”查看数据的方式,并选择“带有子窗体的窗体”;之后按照向导指示选择相应的设置并命名窗体和子窗体的名称,即可完成一部分创建工作。用类似的方法可以创建“通过课程”查看数据的窗体。接着再进入设计视图对部分布局效果进行修改完善并完成统计工作。

7.6.2对象驱动操作的窗体设计

学籍信息管理系统的登录口令验证界面与数据库表中的信息无关(当然口令也可以存储在数据库中,在此我们暂且不考虑),仅仅是一个交互对话框窗体。

用户输入的口令不以原口令字符形式显示。系统口令预存在VBA 代码中,系统自动验证口令正确与否。若正确,跳出欢迎的对话信息框,并将“进入系统”按钮设置为可用;否则,显示警告信息的对话框,但“进入系统”按钮仍然不可用。

7.7报表设计

虽然可以通过表、查询或是窗体来浏览和检索我们所需要的信息,但报表却是组织和显示数据库数据的最直观的方法。

想要根据“成绩查询1”生成一张成绩单统计报表,就可以通过“使用向导创建报表”结合“在设计视图中创建报表”来共同完成创建工作。

在报表向导中选择数据源记录集“成绩查询1”,并将所有字段移动到选定字段列表中;接下来选择“通过成绩”查看数据的方式;之后分别选择“学号”和“姓名”作为分组级别;下一步再设置“课程号”作为排序字段;然后按照向导指示选择相应的设置,即可完成一部分创建工作。

接着再进入设计视图对布局效果进行修改完善并设置统计显示方式等。

7.8整合应用示例

通过前面内容的学习,我们建立了数据库及表,并创建了若干个查询、报表和浏览信息的窗体。但是这些对象都是离散的,需要分别来运行,很不方便。

现在我们可以通过一个导航窗体来整合前面的零散对象,将分散的操作集中到一个窗体上通过命令按钮的点击来启动。

回到本章的第一节的数据库应用示例,回顾系统的功能与界面效果,通过Access 提供的“在设计视图中创建窗体”来完成整合工作。

进入创建窗体的设计视图,调整窗体的大小以满足界面空间所需,在工具箱中添加控件(1个标签、3个选项组和9个命令按钮)到窗体上,并在属性窗口设置控件相应的显示效果属性。

在添加命令按钮时,系统会跳出命令按钮向导,根据不同按钮要启动的不同对象,选择按钮产生的动作。

最后,将“登录口令验证”窗体设置为Access启动显示窗体,并关闭显示数据库窗口,这在一定程度上可以保护数据库的安全。

只要打开“学籍管理”数据库,系统就会自动跳出“登录口令验证”窗体,如果口令验证通过,就可以直接进入学籍管理系统的导航窗体,通过点击相应的命令按钮来启动对应的对象(表和查询最好事先创建成对应的窗体,这样界面操作比较方便),从而完成系统所要求的所有功能。

7.9习题

1.完成和实现本章的“学籍管理”数据库应用示例的所有功能。

2.将本章中SQL语言的语句示例在Access 的环境中实现,并观察运行结果。

3.设计并实现一个简单的商品销售管理系统,包括进货和出售以及库存等明细的存储、编辑、分类统计、查询、报表和窗体显示等功能。是部分功能实现的界面效果,其中“交易金额”、“库存增减数量”和“库存量”等字段的值会自动根据表达式生成,而不需要键盘输入。效果界面仅供参考,你可根据系统规模和功能自行添加表或字段,如客户和供应商等信息。

4.设计并实现一个简单的个人财务管理系统(可参考银行账户管理的模式),包括收入和开销等明细的存储、编辑、分类统计、查询、报表和窗体显示等功能,规模形式不限,可以自由发挥。