设有一个职工工资数据库
gz.dbc
,存放于
visual foxpro
的默认工作目录下,其中包括有三个数据表,分别是工资表
gz.dbf
、职工表
zg.dbf
、单位代码表
dw.dbf
。
工资表
gz.dbf
:
单位
|
编号
|
固定工资
|
活工资
|
津贴
|
应发合计
|
房租
|
水电气
|
应扣合计
|
实发工资
|
1
|
0001
|
489
|
273
|
34
|
0
|
50
|
12
|
0
|
0
|
1
|
0002
|
801
|
448
|
43
|
0
|
65
|
35
|
0
|
0
|
6
|
0003
|
691
|
386
|
51
|
0
|
39
|
61.01
|
0
|
0
|
6
|
0004
|
529
|
296
|
73
|
0
|
54
|
45
|
0
|
0
|
3
|
0005
|
585
|
327
|
39
|
0
|
61
|
65
|
0
|
0
|
2
|
0006
|
324
|
181
|
54
|
0
|
43
|
21
|
0
|
0
|
3
|
0007
|
546
|
305
|
63
|
0
|
52
|
34
|
0
|
0
|
6
|
0008
|
789
|
441
|
29
|
0
|
35
|
31
|
0
|
0
|
1
|
0009
|
579
|
324
|
43
|
0
|
46
|
53
|
0
|
0
|
2
|
0010
|
814
|
455
|
67
|
0
|
54
|
29
|
0
|
0
|
职工表
zg.dbf
:
编号
|
单位
|
姓名
|
性别
|
出生日期
|
职称
|
0001
|
1
|
张三
|
男
|
1966-5-21
|
副教授
|
0002
|
1
|
李四
|
男
|
1967-4-30
|
副教授
|
0003
|
6
|
王五
|
女
|
1968-9-21
|
高工
|
0004
|
6
|
陈六
|
男
|
1970-7-23
|
讲师
|
0005
|
3
|
何七
|
女
|
1972-4-29
|
讲师
|
0006
|
2
|
李明
|
女
|
1966-5-4
|
副教授
|
0007
|
3
|
王阳
|
男
|
1972-8-1
|
会计师
|
0008
|
6
|
张红
|
男
|
1976-4-1
|
统计师
|
0009
|
1
|
陈洋
|
女
|
1980-2-1
|
助教
|
0010
|
2
|
成实
|
女
|
1978-10-28
|
助教
|
单位代码表
dw.dbf
:
单位
|
名称
|
1
|
办公室
|
2
|
财务科
|
3
|
人事部
|
4
|
理学院
|
5
|
文学院
|
6
|
法学院
|
问题:
1.
写出“打开数据库
gz.dbc
”的
vfp
命令(或命令序列)
2.
写出“计算工资表中的应发合计、应扣合计、实发工资”的
vfp
命令
3.
写出“统计实发工资不低于
800
元的职工人数”的
vfp
命令
4.
写出“求出实发工资最高的职工姓名”的
vfp
命令
5.
写出“统计每个单位的职工人数的
sql select
命令,查询结果中应包含单位代码、单位名称、职工人数,并将结果存入
c:\ABC.dbf
中”的
vfp
命令
6.
写出“产生包含每个单位的单位名称、最高实发工资、最低实发工资、实发工资总计、平均实发工资
5
项数据的查询结果,并将结果存入从
c:\ABC2.dbf
中”的
vfp
命令
7.
写出“产生包含每个职工姓名、所在单位名称、实发工资
3
项数据的查询结果,并将结果存入
c:\ABC1.dbf
中”的
vfp
命令
8.
写出“产生包含字段
TJ1
、
TJ2
的表
ABC3.dbf
,其中
TJ1
表示实发工资低于
800
元的职工人数,
TJ2
表示实发工资不低于
800
元的职工人数”的
vfp
命令。
9.
写出“将工资表首先单位排序,在同一单位内按实发工资降序排序,并将结果以浏览表格的形式显示”的
vfp
命令
10.
写出“工资表中增加一个
三八节另发(数值型,
8
,
2
)的字段”的
vfp
命令
11.
写出“对于男职工三八节另发字段的值为
100
元,对于女职工三八节另发字段的值为
200
元,并产生一个包括字段职工姓名、性别、三八节另发的表
ABC4.dbf
”的
vfp
命令
12.
写出“删除工资表中的水电气字段”的
vfp
命令。
答案:
1.
写出“打开数据库
gz.dbc
”的
vfp
命令(或命令序列)
Open database gz.dbc
2.
写出“计算工资表中的应发合计、应扣合计、实发工资”的
vfp
命令
Use gz.dbf
Replace all
应发合计
with
固定工资
+
活工资
+
津贴
Replace all
应扣合计
with
房租
+
水电气
Replace all
实发工资
with
固定工资
+
活工资
+
津贴
-
房租
-
水电气
3.
写出“统计实发工资不低于
800
元的职工人数”的
vfp
命令
方法一:
Select count(
编号
) from gz where
实发工资
>=800
方法二:
count for
实发工资
>=800 to x
?
x
4.
写出“求出实发工资最高的职工姓名”的
vfp
命令
方法一:
Select max(
实发工资
) from gz into array x
Select zg.
姓名
,gz.
实发工资
from zg,gz where zg.
编号
=gz.
编号
and ;
gz.
实发工资
=x
方法二:
Use gz
Index on
实发工资
tag abc
Go bottom
Select
姓名
from zg where
编号
=gz.
编号
5.
写出
”
统计每个单位的职工人数的
SQLSELECT
命令
,
查询结果中应包含单位代码、单位名称、职工人数
,
并将结果存入
C:\ABC.DBF
中
”
的
vfp
命令
.
Select dw.
单位
,dw.
名称
,count(zg.
编号
) from dw,zg where dw.
单位
;
=zg.
单位
group by zg.
单位
into dbf C:\ABC.DBF
6.
写出“产生包含每个单位的单位名称、最高实发工资、最低实发工资、实发工资总计、平均实发工资
5
项数据的查询结果,并将结果存入从
c:\ABC2.dbf
中”的
vfp
命令
Select dw.
名称
,max(gz.
实发工资
),min(gz.
实发工资
),;
sum(gz.
实发工资
),avg(gz.
实发工资
) from gz,dw ;
where gz.
单位
=dw.
单位
group by gz.
单位
into dbf c:\ABC2.dbf
7
.
写出“产生包含每个职工姓名、所在单位名称、实发工资
3
项数据的查询结果,并将结果存入
c:\ABC1.dbf
中”的
vfp
命令
Select zg.
姓名
,dw.
名称
,gz.
实发工资
from zg,dw,gz ;
Where zg.
编号
=gz.
编号
and zg.
单位
=dw.
单位
;
into dbf C:\ABC1.DBF
8
.
写出“产生包含字段
TJ1
、
TJ2
的表
ABC3.dbf
,其中
TJ1
表示实发工资低于
800
元的职工人数,
TJ2
表示实发工资不低于
800
元的职工人数”的
vfp
命令。
方法一
:
Use gz.dbf
Count for
实发工资
<800 to x1
Count for
实发工资
>=800 to x2
Create table ABC3(TJ1 N(2),TJ2 N(2))
insert into ABC3(tj1,tj2) values(x1,x2)
注意:这里不可使用
replace
……
with
……语句
方法二
:
Select sum(iif(
实发工资
<800,1,0)) as tj1,sum(iif(
实发工资
<800,0,1));
as tj2 from gz into table c:\abc3
9
.
写出“将工资表首先单位排序,在同一单位内按实发工资降序排序,并将结果以浏览表格的形式显示”的
vfp
命令
SELECT * FROM GZ ORDER BY
单位
,
实发工资
desc
10
.
写出“工资表中增加一个
三八节另发(数值型,
8
,
2
)的字段”的
vfp
命令
Alter table gz add
三八节另发
N(8,2)
11.
写出“对于男职工三八节另发字段的值为
100
元,对于女职工三八节另发字段的值为
200
元,并产生一个包括字段职工姓名、性别、三八节另发的表
ABC4.dbf
”的
vfp
命令
方法一
:
Select zg.
姓名
,zg.
性别
,gz.
三八节另发
from zg,gz where ;
zg.
编号
=gz.
编号
into dbf ABC4
USE ABC4.DBF
Replace all
三八节另发
with 100 for
性别
=”
男
”
Replace all
三八节另发
with 200 for
性别
=”
女
”
方法二
:
Select zg.
姓名
,zg.
性别
,gz.
三八节另发
from zg,gz where ;
zg.
编号
=gz.
编号
into dbf ABC4
update abc4 set
三八节另发
=iif(
性别
=”
男
”,100,200)
12
.
写出“删除工资表中的水电气字段”的
vfp
命令。
ALTER TABLE GZ DROP
水电气