第十章查询与视图
一、利用查询向导建立查询文件
(1)执行系统“文件”/“新建”命令,从弹出的“新建文件夹类型”对话框中选择“查询”并单击“向导”按钮。
(2)在弹出的“向导选取”对话框中选择“查询向导”并单击“确定”按钮,将弹出“选取字段”对话框。
(3)在“可用字段”列表中双击“学号”、“姓名”、“性别”、“专业”、“出生日期”、“入学成绩”、“是否为党员”等字段,将其添加到“选定字段”列表中,单击“下一步”按钮,将弹出“筛选记录”对话框。
(4)在“筛选记录”对话框中的“字段”、“操作符”、“值”列表框中选择或输入“STUDENT.出生日期”、“大于”、{^1977-09-30}(下面图片中输入错误,请注意!),在下一行“字段”、“操作符”、“值”列表框中选择或输入“STUDENT.性别”、“等于”、“女”,并在两行之间的单选按钮组中选中“与”,单击“下一步”按钮,将弹出“排序记录”对话框。
(5)在“排序记录”对话框的“可用字段”列表中双击“STUDENT.学号”字段,将其添加到“选定字段”列表中,然后单击“完成”按钮,将弹出“完成”对话框。
(6)在“完成”对话框中选择“保存并运行查询”,单击“完成”按钮。
(7)在弹出的“另存为”对话框的“文件名”框中输入“学生查询”,并单击“保存”按钮,则完成了查询文件“学生查询.QPR”的建立,同时系统会自动运行该查询文件。
二、利用查询设计器设计查询
1.利用查询设计器建立基于单表的查询
(1)打开“Xsgl.DBC”数据库,执行“文件”菜单中的“新建”命令,将弹出“新建”对话框,在对话框中选择“查询”后单击“新建文件”按钮,将弹出“添加表或视图”对话框。
(2)在“数据库中的表”列表框中选择“STUDENT”,并单击“添加”按钮,将表“STUDENT.DBF”添加到“查询设计器”窗口,单击“关闭”按钮,将弹出“查询设计器”窗口。
(3)在“字段”选型卡的“可用字段”中双击“专业”字段将其添加到“选定字段”区;在“函数与表达式”框中输入“AVG(STUDENT.入学成绩)”,并单击右侧“添加”按钮,将其添加到 “选定字段”列表中。
(4)在“排序依据”选项卡的“选定字段”框中双击“AVG(STUDENT.入学成绩)”字段,将其添加到右侧的“排序条件”框中。
(5)在“分组依据”选项卡的“可用字段”框中双击“专业”字段,将其添加到右侧的“分组字段”框中。
(6)最后,在命令窗口中执行:
DO 平均成绩查询.QPR&&执行查询文件,运行查询的结果为:
利用查询设计器建立查询时,系统会根据用户所做的查询设置自动生成相应的SQL语言的查询语句。
SELECT Student.专业, AVG(Student.入学成绩);
FROM xsgl!student;
GROUP BY Student.专业;
ORDER BY 2
2.利用查询设计器建立基于多表的查询
(1)打开“Xsgl.DBC”数据库,执行“文件”菜单中的“新建”命令,将弹出“新建”对话框,在对话框中选择“查询”后单击“新建文件”按钮,将出现“添加表或视图”对话框。
(2)在“数据库中的表”列表框中依次选择“STUDENT”、“COURSE”和“SCORE”三个表,并单击“添加”按钮,将三个表添加到“查询设计器”窗口,单击“关闭”按钮,将弹出“查询设计器”窗口。
(3)在“字段”选项卡的“可用字段”中的“STUDENT.姓名”、“COURSE.课程名”、“COURSE.学分”和“SCORE.成绩”等字段添加到“选定字段”区。
(4)在“筛选”对话框中的“字段”、“操作符”、“值”列表框中选择或输入“STUDENT.姓名”、“等于”、“郭树甜”。
(5)单击“筛选”选项卡,观察系统默认的三个表之间额连接条件(无需修改)。
(6)在“查询设计器”窗口中执行“查询”/“运行查询”命令,或者单击“常用”工具栏上的叹号状按钮,观察查询的运行结果。
关闭查询运行后的“浏览”窗口,在“查询设计器”窗口中,执行“查询”/“查看SQL”命令,观察所弹出窗口中显示的SQL语句。
三、视图的设计与应用
1.利用“视图设计器”设计视图
利用“视图设计器”,在“Rsgl”数据库中创建一个包含“工资.编号”、“员工.姓名”、“工资.基本工资”、“工资.奖金”、“工资.补贴”、“工资.扣税”和“工资.实发工资”的工资视图,并能通过对视图的修改,更新“工资.DBF”表中的部分字段的数据。
(1)在“数据库设计器”中打开“Rsgl”数据库,用鼠标右键单击“数据库设计器”窗口的空白处,从弹出的快捷菜单中选择执行“新建本地视图”命令,根据提示将“员工”和“工资”表添加到“视图设计器”窗口中。
(2)在“字段”选项卡的“可用字段”列表中,将“工资.编号”、“员工.姓名”、“工资.基本工资”、“工资.扣税”和“工资.实发工资”等字段添加到右侧的“选定字段”框中。
(3)在“联接”选项卡中设置“员工”和“工资”表按“编号”字段实现内部连接(Inner Join)。
(4)切换至“更新条件”选项卡,在指定可更新表的列表中选择“工资”,在可更新“字段名”列表框中的“工资.编号”字段左侧的钥匙标记列下单击,设定“编号”为关键字段,然后分别在“工资.补贴”和“工资.实发工资”字段左侧的铅笔标记所在的列单击,将“补贴”和“实发工资”字段设置为可修改字段,并选中“发送SQL更新”复选框和“SQL UPDATE”单选项,设置更新条件。
(5)关闭“视图设计器”窗口,将所设计的视图保存好,视图名为“工资视图”,并返回“数据库设计器”。
(6)USE 工资视图&&打开工资视图
BROWSE&&浏览视图
运行结果为:
REPLACE ALL 补贴 WITH 补贴+100&&将表格中所有的补贴增加100元
BROWSE&&浏览此时视图的结果
运行结果为:
REPLACE ALL 实发工资 WITH 基本工资+奖金+补贴-扣税&&将实发工资变更为基本工资+奖金+补贴-扣税得到的数值
BROWSE&&查看结果
运行结果为:
CLOSE ALL&&关闭所有
USE 工资&&打开工资表
BROWSE&&查看表中结果是否发生变化
运行结果为:
2.利用命令设计视图
OPEN DATABASE Rsgl&&打开Rsgl数据库
CREATE SQL VIEW 工资查询 AS SELECT 员工.编号,员工.姓名,员工.部门代码,工资.实发工资;
FROM Rsgl!员工,Rsgl!工资 WHERE 员工.编号=工资.编号&&创建了一个名为工资查询的视图,该视图是从员工表和工资表中提取了编号,姓名,部门代码,实发工资字段,两张表的是依据编号字段相连接的。
运行结果为:
SELECT 部门代码,SUM(实发工资) AS "工资总和" FROM 工资查询 GROUP BY 部门代码&&计算各个部门的实发工资的总和。
运行结果为:
思考与练习






