《数据库查询和视图.ppt》由会员分享,可在线阅读,更多相关《数据库查询和视图.ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库查询和视图 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望3.1 数据库的基本操作数据库的基本操作 数据库(DataBase)就是按一定的组织结构存储在计算机内可共享使用的相关数据的集合。在Visual FoxPro中,数据库包含有数据库表、视图等数据实体,又提供了数据字典、各种数据保护和数据管理功能,可将数据库看成是个收集表的“容器”。3.1.1 数据库的建立数据库的建立数据库的建立有两种方法:数据库的建立有两种方法:使用“数据库设计器”和使用建立数据库的
2、命令。1.用数据库设计器建立数据库用数据库设计器建立数据库 菜单【文件】【新建】打开“新建”对话框,选定“文件类型”为【数据库】选项按钮单击【新建文件】打开“创建”对话框,在“数据库名”文本框中输入所建的数据库名,单击【保存】按钮建立数据库,同时打开“数据库设计器”窗口。利用“数据库设计器”提供的工具或快捷菜单,可以方便的建立数据库表或建立视图,也可以将自由表添加到数据库中,成为数据库表,以及建立数据库表间的永久关联关系等数据库操作。例例3-1 利用“数据库设计器”,新建数据库rsgzk.dbc,并将表rsb.dbf、gzb.dbf、bmdm.dbf和zz.dbf添加到新数据库中,成为数据库表
3、。(1)按照表4-7和表4-8建立部门代码表(bmdm)和增资表(zz)结构,并输入记录数据。(2)建立数据库rsgzk.dbc。(3)添加表rsb.dbf、gzb.dbf、bmdm.dbf和zz.dbf。2.用命令方式建立数据库用命令方式建立数据库命令格式:命令格式:CREATE DATABASE 功能:功能:建立一个数据库同时打开它。例如建立gzk.dbc的命令如下:CREATE DATABASE gzk3.1.2 数据库操作命令数据库操作命令1.打开数据库命令打开数据库命令命令格式:命令格式:OPEN DATABASE 功能:功能:打开一个数据库。例如打开数据库gzk.dbc的命令如下:
4、OPEN DATABASE gzk2.关闭数据库命令关闭数据库命令命令格式:命令格式:CLOSE DATABASE ALL功能:功能:关闭当前的数据库和它的表。选择ALL表示关闭所有打开的数据库和它们的表、所有的自由表以及索引文件,返回1号工作区。例如关闭当前数据库gzk.dbc的命令如下:CLOSE DATABASE3.向数据库中添加表命令向数据库中添加表命令命令格式:命令格式:ADD TABLE 功能:功能:向当前数据库添加一个自由表。例如向数据库gzk.dbc添加自由表gzb1.dbf(它为gzb.dbf的复制表)和zz1.dbf(zz.dbf的复制表)OPEN DATABASE gzk
5、ADD TABLE gzb1ADD TABLE zz14.从数据库中移去表命令从数据库中移去表命令 命令格式:命令格式:REMOVE TABLE 功能:功能:从当前数据库中移去一个表。从数据库gzk.dbc中移出表zz1.dbf。OPEN DATABASE gzkREMOVE TABLE zz1&在确认对话框选“是”,移出数据库表zz15.删除数据库命令删除数据库命令命令格式:命令格式:DELETE DATABASE 功能:功能:从磁盘中删除一个数据库文件。从磁盘中删除数据库文件gzk.dbc。CLOSE DATABASE ALL&关闭所有打开的数据库DELETE DATABASE gzk.d
6、bc&在确认对话框选“是”,删除数据库 6.浏览数据库文件浏览数据库文件 浏览数据库rsgzk.dbc的命令如下:CLOSE DATABASE ALL&浏览前首先关闭.DBC文件USE rsgzk.dbc&打开数据库文件必须指明扩展名.DBCBROWSE3.1.3 数据词典数据词典 数据字典就是包含数据库中所有表信息的一个表。存储在数据字典中的信息称之为元数据,包括长表名、长字段名、有效性规则、触发器,表间永久关系以及数据库对象的定义等。使用数据字典,可以设置字段级和记录级的有效性检查,保证主关键字字段内容的唯一性。1.设置字段级规则设置字段级规则字段级规则主要包括显示属性、字段有效性和字段注
7、释三部分。“格式”文本框中输入格式化代码,确定该字段在浏览窗口、表单和报表中显示的格式,它是对字段格式进行整体控制的。字段级规则设置“输入掩码”文本框中键入掩码代码,输入掩码是按位来控制格式的。显示的标题改为自己希望的标题 字段有效性就是用于数据输入正确性的检验。说明该字段的用途、特性、使用说明等补充信息 2.设置记录级规则设置记录级规则记录级规则主要包括记录有效性、触发器的设置和表注释。“教授的基本工资要1650元,其他职工为:550基本工资3000 职称=教授.AND.基本工资=1650.OR.职称#教授.AND.(基本工资=550.AND.基本工资=3000)每逢星期一才可做插入、追加、
8、更新和删除记录的操作:CDOW(DATE()=Monday 3.建立表间永久关系建立表间永久关系永久关系是数据库表间的关系,它们存储在数据库文件中。利用“数据库设计器”来建立永久关系:在“数据库设计器”中,用鼠标从一个表的主索引或候选索引拖到另一个表的任一索引,当出现表间关联连线时就表示关系已建立。用鼠标右键单击连线,弹出快捷菜单,可以进行删除关系、编辑关系和编辑参照完整性操作。例例3-2在例3-1的数据库rsgzk.dbc中的各表建立永久关系。(1)建立各表的索引。(2)利用数据库设计器,画出表间关系连线。建立表rsb与表gzb的连线:形成一条一一关系连线 建立表rsb与表zz的连线:形成一
9、条一多关系连线建立表rsb与表bmdm的连线:形成一条多一关系连线 一一关系连线 多一关系连线 一多关系连线 4.参照完整性参照完整性 参照完整性是控制数据库中不同表的主关键字和外部关键字之间数据一致性的关系规则。参照完整性则属于表间规则。用户可以通过“参照完整性生成器”来进行规则设置,从而控制相关表的更新、删除和插入记录的数据完整性。打开打开“参照完整性生成器参照完整性生成器”窗口窗口 双击两表之间的连线,在“编辑关系”对话框中选定【参照完整性】按钮。设置更新、删除、插入三个规则设置更新、删除、插入三个规则 更新规则:更新规则:是指修改父表中关键字值时所使用的规则,包括级联、限制和忽略3种。
10、删除规则:删除规则:是指删除父表中的记录时使用的规则,包括级联、限制和忽略3种。插入规则:插入规则:是指在子表中插入新的记录,或更新已存在的记录时所用的规则,包括限制和忽略2种。更新更新规则规则删删除除规则规则插入插入规则规则级联级联当父表中的关键字值被修改时,系统用新的关键字值更新子表中所有相关记录当父表的记录被删除时,系统相应的删除子表中所有相关记录限制限制若子表有相关记录,则系统禁止父表中的关键字值被修改若子表有相关记录,则系统禁止父表的记录被删除若父表中不存在匹配的关键字值,则禁止在子表插入一个新记录或更新一个已存在的记录忽略忽略允许更新允许删除允许插入在浏览bmdm表时将计算机系的代
11、码修改为A04,则子表rsb中部门是计算机系的所有记录的部门代码字段值都被更新为“A04”。查询与视图视图查询顺序查询索引查询多表操作数据工作期表关联工作区统计求记录数求和求平均计算命令分类汇总SQL语言数据操纵数据查询数据定义视图操作视图建立3.2 查询命令查询命令1.顺序查询命令顺序查询命令 顺序查询是在表中按记录的物理顺序依次进行的查询。命令格式:LOCATE FOR WHILE 功能:在当前表的指定范围中搜索满足条件的第一条记录。(1)缺省表示ALL。(2)找到一条满足条件的记录后,要继续往下查找满足条件的其它记录就必须用CONTINUE命令。例3-3 在rsb.dbf中查找职称为“讲
12、师”的记录。USE rsbLOCATE FOR 职称=讲师DISPLAY&显示查找到职称是“讲师”的第一条记录CONTINUE&继续找下一条记录DISPLAY&显示查找的记录重复CONTINUE和DISPLAY命令就可以找到所有职称为“讲师”的记录。2.索引查询命令索引查询命令索引查询利用索引文件实现的快速查询。VFP提供了 SEEK和FIND两条命令进行索引查询。命令格式:SEEK 功能:在当前表的主控索引中按索引关键字搜索满足表达式的第一条记录。说明:SEEK命令按索引关键字搜索,若找到,记录指针指向该记录。FOUND()函数的值为.T.,表示查询成功。RECNO()函数返回当前记录号。若
13、找不到满足条件的记录,则记录指针指向文件结束处(即EOF()返回.T.值),FOUND()函数的值为.F.。RECNO()函数返回记录总数加1的值。例3-4 在rsb.dbf中查询姓名为陈宏的职工记录;查询出生日期为1969年7月5日出生的职工记录。USE rsbSET ORDER TO TAG xmSEEK 陈宏?RECNO()DISPLAYSET ORDER TO TAG csrqSEEK 1969/7/5?FOUND()DISPLAY3.3 统计命令统计命令1.记录数统计命令记录数统计命令命令格式:COUNT FOR WHILE ;TO 功能:计算指定范围内满足条件的记录个数。例3-5
14、统计rsb.dbf中“讲师”的人数。USE rsbCOUNT FOR 职称=讲师 TO jsrs?jsrs2.求和命令求和命令命令格式:SUM FOR ;WHILE TO|TO ARRAY功能:对当前表的各个数值表达式分别求和。例3-6 对表gzb.dbf的奖励工资字段和实发工资字段进行求和统计,结果分别存放到变量s1和s2中。STORE 0 TO s1,s2USE gzbSUM 奖励,实发工资 TO s1,s2?奖励,s1,实发工资,s23.求平均值命令求平均值命令命令格式:AVERAGE FOR WHILE TO|TO ARRAY功能:对当前表的各个数值表达式分别求平均值。例如,求基本工资
15、的平均值可用如下命令序列:USE gzbAVERAGE 基本工资 TO aversal?平均基本工资,aversal4.计算命令计算命令命令格式:CALCULATE FOR WHILE TO|TO ARRAY功能:分别统计当前表中表达式表的值。例3-7 统计gzb.dbf中基本工资的平均值和实发工资的总和,结果分别存放到av和su这两个变量中。USE gzbCALCULATE AVG(基本工资),SUM(实发工资)TO av,su?av,su5.分类汇总命令分类汇总命令 分类汇总是将数据表中的记录按某个字段进行排序分类,再对其它需要汇总的字段进行汇总统计。命令格式:TOTAL TO ON FI
16、ELDS FOR WHILE功能:对当前表进行分类汇总,汇总的结果存入一个新表。汇总时把值相同的一组记录汇总成一个记录,其中指定的数值型字段值取该字段的汇总值,其它字段取该组记录中的第一条记录。在新表中,记录按的取值进行排列。例3-8 对zz.dbf表的增资按编号进行分类汇总,来查询每位职工增加工资的总和,并将结果存入zzhz.dbf表中。USE zzINDEX ON 编号 TAG zzbhTOTAL ON 编号 TO zzhzUSE zzhzBROWSEUSE3.4 多表操作多表操作1.多工作区操作多工作区操作工作区:工作区:Visual FoxPro最多同时打开32767个数据表,每个打开
17、的表都在内存中开辟一个存储区域,这个存储区域就叫做工作区。Visual FoxPro规定在每个工作区上只能打开一个表,所以就有32767个工作区可使用,编号为132767。当前工作区当前工作区:系统任何时候只能选择一个工作区进行操作,当前正在操作的工作区称为当前工作区,在当前工作区打开的数据表称为当前表。别名别名 表别名表别名是VFP用来指定在一个工作区中打开的表的名称。打开一个表时,VFP自动使用文件名作为默认的表别名。系统将前 10 个工作区中指定的默认别名是A到 J,工作区 11 到 32767 中指定的别名是 W11 到 W32767。用户为表rsb.dbf指定一个别名rs:USE r
18、sb ALIAS rs 工作区的选择工作区的选择命令格式:命令格式:SELECT|功能:选择由工作区号或别名所指的工作区作为当前工作区。系统启动后默认1号工作区为当前工作区。说明:(1)工作区号取值为132767。函数SELECT()能够返回当前工作区的区号。(2)当工作区号为0时,即命令“SELECT 0”表示选取尚未使用的最低工作区。对非当前工作区的表的字段进行操作时,必须在该字段名前加上前缀,表示为:别名.字段名别名-字段名例3-9工作区操作示例。CLOSE ALL?SELECT()&显示当前工作区号1USE rsb ALIAS rs&在当前工作区打开表rsb,并指定其别名为rsGO 5
19、DISPLAYSELECT 0&2号工作区是未使用的最低工作区,选取2号工作区USE gzb&在2号工作区打开表gzbGO 2DISPLAY?编号,rs.编号2.数据工作期的使用数据工作期的使用“数据工作期”是一个用来设置工作环境的交互操作窗口。利用“数据工作期”窗口打开或显示表或视图、建立表间临时关系、设置工作区属性等操作。打开命令:SET VIEW ON关闭命令:SET VIEW OFF窗口组成如下图所示:打开的表或视图显示表间临时关系弹出“工作区属性”对话框,可以修改表的结构,选择索引文件和字段,并且定义数据筛选条件等多种操作 打开浏览窗口,供浏览或编辑 建立表间临时关系建立或取消两个关
20、联表的一多关系 例3-10 利用“数据工作期”窗口,完成下面操作:(1)分别打开rsb.dbf和bmdm.dbf表;(2)对rsb.dbf要求浏览查询未婚职工信息,并只输出未婚职工的姓名、性别、出生日期、职称和婚否五个字段内容。(3)以rsbgzq.vue保存上述工作环境。操作步骤:步骤一:打开数据工作期:选择菜单【窗口】【数据工作期】,出现“数据工作期”窗口。步骤二:打开表:单击【打开】按钮在“打开”对话框中选定rsb.dbf按【确定】返回数据工作期窗口。同样方法打开bmdm.dbf。步骤三:设置rsb.dbf属性:在“别名”列表框选定rsb表【属性】在“工作区属性”对话框(如图5-2所示)
21、进行下面设置:(1)设置数据过滤器:在“数据过滤器”文本框中输入过滤条件NOT 婚否,完成对未婚记录条件的设置。(2)设置字段筛选。步骤四:浏览rsb.dbf表 步骤五:选择【文件】菜单的【另存为】命令在“保存视图为”文本框中输入rsbgzq单击【保存】按钮。3.建立表间临时关联建立表间临时关联l关联的概念:所谓关联,就是使不同工作区的记录指针建立一种联动关系,当一个表的记录指针移动时,与它相关联的表的记录指针也随之移动。表间关联关系主要有4种类型:一一关系:是指父表A中的任何一条记录仅仅对应子表B中的一条记录,反之子表B中的任何一条记录亦对应父表A中的一条记录的关联。多一关系:是指父表A中的
22、多条记录对应子表B中的一条记录的关联。一多关系:是指父表A中的一条记录对应子表B中的多条记录的关联。多多关系:Visual FoxPro中支持前3种关联关系,对多多关系要将其中一个表分解,形成多一关系或一多关系。4.建立表间临时关联的建立表间临时关联的2种方法:种方法:l建立关联的命令建立关联的命令命令格式:命令格式:SET RELATION TO INTO,INTO ADDITIVE功能:功能:以当前表为父表与其它一个或多个子表建立关联。l利用利用“数据工作期数据工作期”建立关联建立关联操作步骤:步骤一:打开需建立关联的父表和子表。步骤二:建立子表关键字索引或选定主控索引。步骤三:选定父表为
23、当前表,然后建立与子表的关联(系统默认为多一关系),如果是一多关系,还要执行第4步。步骤四:建立关联的一多关系。例3-11设置rsb.dbf和gzb.dbf的一一关系和rsb.dbf和bmdm.dbf的多一关系,并浏览查询职工的编号,姓名,职称,岗位津贴,所在部门名称等信息。SELECT 1USE gzbINDEX ON 编号 TAG bhSELECT 2USE bmdmINDEX ON代码 TAG dmSELECT 3USE rsbSET RELATION TO 编号 INTO gzb,部门代码 INTO bmdmBROWSE FIELDS 编号,姓名,职称,gzb.岗位津贴,bmdm.部门
24、名称例3-12利用“数据工作期”建立rsb.dbf分别与bmdm.dbf的多一关系,与zz.dbf的一多关系,然后使用浏览命令查询所有职工编号、姓名、基本工资,部门名称和增资情况。操作步骤:步骤一:打开表:选择菜单【窗口】【数据工作期】,然后分别打开rsb.dbf、bmdm.dbf和zz.dbf。步骤二:设置子表索引:为子表bmdm.dbf按代码字段建立索引,或选定其为主控索引(已有索引存在),为子表zz.dbf按编号字段建立索引或选定其为主控索引。步骤三:以rsb.dbf为父表建立与bmdm.dbf子表的多一关系。步骤四:建立rsb.dbf与zz.dbf子表的一多关系。步骤五:使用下面的浏览
25、命令:BROWSE FIELDS 编号,姓名,基本工资,bmdm.部门名称,zz.增资3.5关系型数据库标准语言关系型数据库标准语言SQL SQL是一种综合的、通用的、功能强大的关系数据库语言,它包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)三大部分。数据定义语言:用于定义、修改和撤消数据库、表对象等。数据操纵语言:用于数据库中表记录的修改和检索等。数据控制语言:用于数据访问权限的控制等。3.5.1 SQL的数据定义命令的数据定义命令1.建立表建立表2.修改表的结构修改表的结构3.删除表删除表1.建立表:建立表:命令格式:命令格式:CREATE TABLE|DBF
26、NAME FREE(,)NULL|NOT NULL CHECK ERROR DEFAULT PRIMARY KEY|UNIQUEREFERENCES TAG NOCPTRANS,PRIMARY KEY TAG|,UNIQUE TAG,FOREIGN KEY TAG NODUPREFERENCES TAG,CHECK ERROR)|FROM ARRAY 数组名功能:功能:由给定的字段参数建立一个数据表。例3-13建立人事管理数据库rsgl.dbc,并用SQL命令建立rs.dbf(编号C(4),姓名C(8),身份证号C(18),性别C(2),出生日期D,基本工资N(9,2),简历M),表中编号字段
27、为主关键字。CLOSE DATABASES ALL&关闭所有数据库CREATE DATABASES rsgl&建立rsgl数据库CREATE TABLE rs(编号编号 C(4),姓名姓名 C(8),身份证号身份证号 C(18),性别性别 C(2),;出生日期出生日期 D,基本工资基本工资 N(9,2),简历简历 M)&在rsgl数据库中创建表rsMODIFY DATABASES&打开“数据库设计”窗口,显示rs表 2.修改表的结构修改表的结构(1)增加或修改字段)增加或修改字段 命令格式:ALTER TABLE ADD|ALTER COLUMN (,)NULL|NOT NULLCHECK E
28、RROR DEFAULT PRIMARY KEY|UNIQUEREFERENCES TAG NOCPTRANSNOVALIDATE功能:增加或修改字段 增加新的字段 修改原有的字段 例3-14 继续给上例表rs.dbf完成下列操作:(1)增加1个“籍贯C(8)”字段。(2)将原来的“编号”字段的宽度由4改为6。(3)修改“基本工资”字段的有效性规则,要求基本工资不小于200,出错信息提示为“最低工资额为200元”。(4)将“编号”字段设置成主索引字段。OPEN DATABASES rsglALTER TABLE rs ADD 籍贯籍贯 C(8)&增加字段MODIFY STRUCTURE&查看结
29、构的变化ALTER TABLE rs ALTER 编号编号 C(6)&修改字段的宽度MODIFY STRUCTURE ALTER TABLE rs ALTER 基本工资基本工资 n(9,2)CHECK 基本工资基本工资=200;ERROR 最低工资额为最低工资额为200元元MODIFY STRUCTURE ALTER TABLE rs ADD PRIMARY KEY 编号编号 TAG bh&设置成主索引字段MODIFY STRUCTURE CLOSE DATABASES ALL(2)设置字段属性设置字段属性命令格式:命令格式:ALTER TABLE ALTER|DROP COLUMN NULL
30、|NOT NULLSET DEFAULT SET CHECK ERROR DROP DEFAULTDROP CHECKNOVALIDATERENAME COLUMN TO 功能:功能:定义、修改、删除字段及有效性规则和默认值。修改字段 删除字段 例3-15 继续给表rs.dbf完成下列操作:(1)修改“性别”字段的默认值为“男”。(2)删除“基本工资”字段的有效性规则。(3)删除“籍贯”字段。(4)将“基本工资”字段改名为“工资”字段。OPEN DATABASES rsglALTER TABLE rs ALTER 性别 SET DEFAULT 男MODIFY STRUCTUREALTER TA
31、BLE rs ALTER 基本工资 DROP CHECKMODIFY STRUCTUREALTER TABLE rs DROP 籍贯MODIFY STRUCTUREALTER TABLE rs RENAME COLUMN 基本工资 TO 工资MODIFY STRUCTURECLOSE DATABASES ALL3.删除表删除表(1)将数据库表从数据库中移出将数据库表从数据库中移出 命令格式:命令格式:REMOVE TABLE|?DELETE RECYCLE功能:从数据库中移去表。例3-16 在rsgl数据库中移去rs.dbf表。OPEN DATABASES rsglREMOVE TABLE r
32、s&将表rs.dbf从rsgl.dbc中移去,成为自由表MODIFY DATABASES将表删除到回收站 表示从磁盘上删除数据表(2)将表从数据库和磁盘上删除的)将表从数据库和磁盘上删除的DROP TABLE命令命令 命令格式:命令格式:DROP TABLE|?RECYCLE功能:功能:从数据库和磁盘上将表直接删除掉。例3-17 将rs.dbf表复制rs1.dbf,然后将rs1.dbf添加到rsgl数据库中,然后再将其从数据库和磁盘中一起删除。CLOSE ALLUSE rsCOPY TO rs1&复制成表rs1.dbfOPEN DATABASES rsglADD TABLE rs1&添加表rs
33、1.dbf到rsgl.dbcMODIFY DATABASES&显示数据库DROP TABLE rs1&将表从数据库和磁盘上一起删除CLOSE DATABASESDIR*.dbf3.5.2 SQL的数据操纵命令的数据操纵命令SQL的数据操纵命令主要包括三个部分:记录的插入记录的更新记录的删除 1.插入记录插入记录命令格式:命令格式:INSERT INTO (,.)VALUES(,.)或或INSERT INTO FROM ARRAY|FROM MEMVAR功能:功能:在表的末尾追加一条新的记录。例3-18 向表rs.dbf表插入一条记录。OPEN DATABASES rsglINSERT INTO
34、 rs(编号,姓名,性别,出生日期)VALUE;(0101,李明,男,1965/05/06)LISTCLOSE DATABASES2.更新记录更新记录命令格式:命令格式:UPDATE SET =,=.WHERE 功能:功能:更新满足条件的记录,该记录指定字段值由相对应的表达式值来代替。例3-19 将表rsb.dbf复制成rsb1.dbf,然后对表rsb1.dbf中的职称为“讲师”的职工基本工资都增加35元。USE RSB LISTCOPY TO rsb1UPDATE rsb1 SET 基本工资=基本工资+35 WHERE 职称=讲师SELECT rsb1LISTUSE3.删除记录删除记录命令格
35、式:命令格式:DELETE FROM WHERE 功能:功能:逻辑删除表中满足条件的记录,即对做满足条件的记录删除标志。例3-20 将表rsb1.dbf中姓名是“陈宏”的记录删除。DELETE FROM rsb1 WHERE 姓名=陈宏“&做删除标记SELECT rsb1LISTPACK&彻底删除有删除标记的记录LISTUSE3.5.3 SQL的数据查询命令的数据查询命令Visual FoxPro有两种方式来实现SQL查询:一、使用命令操作二、界面操作一、使用命令操作一、使用命令操作命令格式:命令格式:SELECT ALL|DISTINCT TOP PERCENT.AS,.AS FROM FO
36、RCE!AS INNER|LEFT OUTER|RIGHT OUTER|FULL OUTER JOIN!AS ON INTO|TO FILE ADDITIVE|TO PRINTER PROMPT|TO SCREENPREFERENCE NOCONSOLE PLAIN NOWAITWHERE AND AND|OR AND|OR GROUP BY,HAVING UNION ALL ORDER BY ASC|DESC,ASC|DESC 功能:功能:从一个或多个数据表中检索一个记录集合(即表格),集合由指定的字段名组成,形成一个查询结果表。1.查询全部或者部分字段内容查询全部或者部分字段内容例例3-2
37、1 在rsb.dbf中查询显示所有职工编号、姓名、性别、年龄、职称和基本工资字段内容。SELECT 编号,姓名,性别,YEAR(DATE()-YEAR(出生日期)AS 年龄,;职称,基本工资 FROM rsb 例例3-22 查询bmdm.dbf中的全部字段以及所有记录,并将结果输出在屏幕上。SELECT*FROM bmdm TO SCREEN 例例3-23 查询表rsb.dbf中基本工资字段的最高值、最低值、平均值,合计值以及参与统计的人数。SELECT MAX(基本工资)AS 最高,MIN(基本工资)AS 最低,;AVG(基本工资)AS 平均,SUM(基本工资)AS 合计,COUNT(*)A
38、S 统计人数;FROM rsb2.按条件查询记录按条件查询记录例例3-24 查询表rsb.dbf中“陈”姓职工的记录,要求显示编号,姓名,性别,出生日期和职称字段。SELECT 编号,姓名,性别,职称,出生日期 FROM rsb;WHERE 姓名 LIKE 陈%“例例3-25 查询表rsb.dbf中基本工资在1500元2000元的职工记录,要求显示编号,姓名,职称和基本工资字段。SELECT 编号,姓名,职称,基本工资 FROM rsb;WHERE 基本工资 BETWEEN 1500 AND 2000例例3-26 从表rsb.dbf和gzb.dbf中查询职工的编号,姓名,职称,岗位津贴和奖励工
39、资。SELECT rsb.编号,姓名,职称,岗位津贴,奖励 FROM rsb,gzb;WHERE rsb.编号=gzb.编号 3.查询结果分组查询结果分组例例3-27 统计表rsb.dbf中各类职称的人数,并求出基本工资的最高、最低和平均值。SELECT 职称,COUNT(*)AS 人数,MAX(基本工资)AS 最高,;MIN(基本工资)AS 最低,AVG(基本工资)AS 平均;FROM rsb;GROUP BY 职称 例例3-28 按职称分组统计表rsb.dbf中基本工资的最高值、最低值和平均值,只显示基本工资平均值大于1000元统计结果。SELECT 职称,性别,MAX(基本工资)AS 最
40、高,MIN(基本工资)AS 最低,;AVG(基本工资)AS 平均;FROM rsb;GROUP BY 职称 HAVING 平均10004.查询结果排序查询结果排序例例3-29 查询表rsb.dbf中姓名,性别,出生日期和职称字段内容,结果按出生日期字段的降序排序输出。SELECT 姓名,性别,出生日期,职称;FROM rsb;ORDER BY 出生日期 DESC例例3-30 从表rsb.dbf和gzb.dbf中查询职工的姓名,性别,职称,基本工资和保险内容,先按性别字段升序,然后按职称字段降序,最后按保险字段的降序排序输出。SELECT 姓名,性别,职称,rsb.基本工资,保险;FROM rs
41、b,gzb WHERE rsb.编号=gzb.编号;ORDER BY 性别,职称 DESC,保险 DESC 5.嵌套查询嵌套查询例例3-31 列出部门代码是“A01”的职工的工资详细清单。SELECT*FROM gzb WHERE 编号 IN(SELECT 编号 FROM rsb WHERE 部门代码=A01)6.查询结果输出查询结果输出例例3-32 查询所有“讲师”的工资情况,结果按“实发工资”降序排列,分别保存到临时表js、表js1.dbf和文本文件js2.txt。SELECT*FROM gzb;WHERE 编号 IN(SELECT 编号 FROM rsb WHERE 职称=讲师);ORD
42、ER BY 实发工资 DESC;INTO CURSOR jsSELECT*FROM gzb;WHERE 编号 IN(SELECT 编号 FROM rsb WHERE 职称=讲师);ORDER BY 实发工资 DESC;TO FILE js22界面操作建立查询界面操作建立查询1.使用查询向导建立查询使用查询向导建立查询启动查询向导:选择菜单【文件】【新建】在“新建”对话框中选择“文件类型”中的【查询】选项,然后单击【向导】按钮。例例3-33 利用查询向导查询rsb.dbf中职称为“讲师”的记录,要求按出生日期的升序输出编号、姓名、性别、出生日期和职称5个字段内容,并以cx.qpr保存查询设置。操
43、作步骤:2.利用利用“查询设计器查询设计器”建立查询建立查询利用“查询设计器”建立查询的基本步骤如下:(1)启动“查询设计器”。(2)进行查询设置:包括添加被查询的表、设置输出字段、联结条件、记录筛选、输出排序、分组以及查询结果的去向等操作。(3)执行查询。(4)保存查询设置。例例3-34 从rsb.dbf和gzb.db中查询基本工资大于等于1000元的职工记录,要求输出编号、姓名、性别、职称、基本工资、岗位津贴字段,并按基本工资降序排列输出到表jbqg1000.dbf中,将查询设置保存为cx1000.qpr。3.6 视图的建立与使用视图的建立与使用 1.概念:视图是建立在数据库表之上的虚拟表
44、,它是由数据库表或其它视图的某些字段而构成的。视图中的数据存于数据库表中,本身不含数据,其数据是在打开视图时临时从源表中提取的。只有打开数据库,才能在数据库中建立和使用视图。2.优点:(1)视点集中(2)查询的简单性(3)提高数据的安全性(4)逻辑上的数据独立 3.6.1 建立视图的建立视图的CREATE SQL VIEW命令命令命令格式:命令格式:CREATE SQL VIEW REMOTE CONNECTION SHARE|CONNECTION 数据源名 AS 功能:功能:按照AS SQL-SELECT子句命令建立一个本地或远程的SQL视图,或打开“视图设计器”来建立SQL视图。例例3-3
45、5 建立一个用于统计数据库rsgzk.dbc中表rsb.dbf各类职称人数的视图,视图取名为zcst。OPEN DATABASE rsgzkCREATE SQL VIEW zcst AS SELECT rsb.职称,COUNT(*)AS 人数;FROM rsb GROUP BY 职称USE zcstBROWSE例例3-36 在数据库rsgzk.dbc中建立一个包含表rsb.dbf和表gzb.dbf的所有字段视图,视图取名rsgzst。OPEN DATABASE rsgzkCREATE SQL VIEW rsgzst AS SELECT*FROM rsb,gzb WHERE rsb.编号=gzb.编号USE rsgzstBROWSE3.6.2 通过视图设计器创建视图通过视图设计器创建视图例例3-37 在数据库rsgzk.dbc中利用视图设计器建立一个包含有编号、姓名、性别、职称、基本工资、岗位津贴和奖励字段的视图,视图取名st,并要求将岗位津贴设置为可更新源表字段,并将副教授的岗位津贴值由30改为35。3.6.3视图的其他操作1.修改视图的命令:MODIFY VIEW 2.删除视图的命令:DROP VIEW 3.视图更名的命令:RENAME VIEW 源视图名 TO 目标视图名
限制150内