可以将“性别”字段定义为逻辑型字段因为逻辑型字段只有两个取值,可以用.T.代表男.F.代表女,定义为字符型也可以只要输入数据的时候保证只能输入“男”和“女”就可以。定义为数值型也可以,比如可以用1代表男2代表女。 4. 修改表的结构有哪些方法?它们有何区别?
有两中方法第一种是先打开表,然后在命令窗口输入modify structure 命令打开表设计器来修改表的结构。第二中方法是先打开表然后在视图菜单中打开表设计器来对表的结构进行修改,这两中方法的实质都是用表设计器来修改表的结构,不同的只是打开表设计器的方法不同而已。
5. 如何对浏览窗口进行分割?如何设置同步?如何设置数据显示方式?
浏览窗口左下角有一黑色小方块,可用于窗口的分割。用鼠标将小方块向右拖动,便可把窗口分为两个分区。两个分区显示同一表的内容。 分区后同一记录可以在两个分区同时看到。“表”菜单项中的链接分区命令可以选择恢复或者解除这种同步(消除该命令前的“√”)。
浏览窗口中的数据有浏览和编辑两种显示方式,用“显示”菜单中的“编辑”命令(在浏览方式时)或“浏览”命令(在编辑方式时)可在两种显示方式之间切换。 6. DISPLAY和LIST命令有何异同?
两个命令的作用基本相同,区别仅在于LIST是连续显示,当显示的内容超过一屏时,自动向上滚动,直到显示完成为止。DISPLAY是分屏显示,显示满屏时暂停,待用户按任一键后继续显示后面的内容。
7. 一个表用ZAP命令删除后,该表还存在吗? 该命令与DELETE和PACK有何异同?
一个表用ZAP命令删除后该表还存在只不过表中的记录没有了。而delete命令只是逻辑删除表中的某些记录并没有实际删除还可以恢复。而pack命令是物理删除那些被逻辑删除的记录不能恢复。
8. 排序与索引有何区别?索引有哪几种?如何建立索引文件?
排序是改变表中记录的实际物理顺序,而索引是为该表建立一个索引文件设置一个逻辑顺序,索引可分为下列4种类型:主索引,候选索引,惟一索引,普通索引。建立索引文件有两种方法:1. 用命令建立索引,2. 在表设计器中建立索引。
9. 在已打开的表中有“姓名”字段,此外又定义了一个内存变量“姓名”。要把内存
变量“姓名”的值赋给当前记录的“姓名”字段,应使用什么命令? 姓名=m.姓名
10. 设txl.dbf有10条记录,在命令窗口执行下列命令后,表的当前记录是什么?
USE txl
GO 5
LIST NEXT 3 SKIP –2 第6条记录。
11. 在不同工作区之间切换用什么命令?如何访问别的工作区中的表?
可以用 SELECT 〈工作区号〉|〈别名〉|0 命令来在不同的工作区之间切换。
6
在当前工作区中可以访问其他工作区中的表的数据,但要在非当前表的字段名前加上别
名和连接符,引用格式为:别名.字段名或别名->字段名 12. 什么叫关联?如何建立关联? 所谓关联,就是当前表记录指针的移动,能引起别的表按某种条件相应地移动记录指针。建立关联后,称当前表为主文件,与主文件建立关联的表为子文件。
建立一对一的关联可以用命令:SET RELATION TO [〈关联表达式1〉] INTO 〈工作区号1〉|〈别名1〉
建立一对多的关联可以用命令:SET SKIP TO [〈别名1〉[,〈别名2〉?]
13. 就学生表,写出实现下列操作的命令: (1) 显示第5号记录; go 5 display
(2) 显示第5号至第10号之间的全部记录; go 5
list next 6
(3) 连续列出1980年以后出生的学生的姓名与出生年月; list for year(出生日期)>=1980 fields 姓名,出生年月
(4) 显示在1985年1月1日至1983年12月31日之间出生的学生记录; list for 出生年月>={12/31/1983} and 出生年月<={01/01/1985} (5) 在表的顶部增加一个新记录; go top
insert before
(6) 修改最后一个记录; go bottom edit
(7) 将16岁以下的少数民族学生入学成绩提高20分;
replace 入学成绩 with 入学成绩+20 for year(date())-year(出生年月)<=16 and 少数民族=.t.
(8) 将学生表原样复制为xsda.dbf,并物理删除xsda.dbf中记录号为偶数的记
录;
copy to xsda.dbf
delete for int(recn()/2)=recn()/2 (9) 显示入学成绩前5名的记录; index on 入学成绩 list next 5
(10) 统计1985年出生学生的人数,并把它存入变量number中; count for year(出生年月)=1985 to number (11) 分别求男、女学生的平均年龄; average for 性别=’男’ average for 性别=’女’
(12) 查找并显示出第一位少数民族学生; locate for 少数民族=.t.
7
display
(13) 建立一个结构复合索引文件,其中包括两个索引:记录以学号降序排列;记录
按出生年月升序排列; index on 学号 tag a desc index on 出生年月 tag b
(14) 查询年龄最小和最大的学生; calculate min(出生年月) to a display for 出生年月=a calculate max(出生年月)=b display for 出生年月=b
(15) 按性别对入学成绩进行汇总。 index on 性别 tag c
total on 性别 fields 入学成绩 to xbhz
14. 按图1.5建立选课表,然后通过“学号”索引建立学生表与选课表之间的关联,分
别在一对一和一对多关联下显示学号、姓名、课程号和成绩,分析输出结果的差异。
第五章
1. 什么是永久关系?如何设置表间的永久关系?
表之间的永久联系是基于索引建立的一种永久关系,这种联系被作为数据库的一部分而
保存在数据库中。
建立永久关系的操作方法是:在数据库设计器对话框,首先,用鼠标左键选中父表中的主索引字段,保持按住鼠标左键,并拖至与其建立联系的子表中的对应字段处,再松开鼠标左键,数据库中的两个表间就有了一个连线,其永久关系就已建立完成。
2. 设置字段的显示标题、字段的注释信息、字段的默认值、字段的有效规则会给数据
库中表的操作带来什么好处?
(1) 数据库表可以使用长表名和长字段名;
(2) 可以为数据库表中的字段指定标题和添加注释; (3) 可以为数据库表的字段指定默认值和输入掩码; (4) 数据库表的字段有默认的控件类;
(5) 可以为数据库表规定字段级规则和记录级规则;
所有这些都是为了能够让用户更方便的输入数据,减少数据出错的几率,并且保证数据的完整性。
3. 字段级规则和记录级规则有何区别?如何设置?
字段有效性用于对当前字段输入数据的有效性、合法性进行检验。记录有效性验证指建立一规则对同一记录中不同字段之间的逻辑关系进行验证。这两种规则都可以在表设计器里面来进行设置。
8
4. 触发器有哪几种?各有什么作用?
触发器包括插入触发器、更新触发器和删除触发器。这些触发器用于保证当对数据库表进行插入(包括追加)、更新和删除时,不会违反那些已经设置好的有效性规则,只有当规则成立时才能进行相应操作。主要是用于保证记录和数据的完整性。
5. 订货管理数据库有4个表: 仓库(仓库号,城市,面积) 职工(仓库号,职工号,工资)
订购单(职工号,供应商号,订购单号,订购日期) 供应商(供应商号,供应商名,地址) 各个表的记录实例为:
仓库表 职工表
仓库号 职工号 工资 仓库号 城市 面积 WH2 E1 1220 WH1 北京 370 WH1 E3 1210 WH2 上海 500 WH2 E4 1250 WH3 广州 200 WH3 E6 1230 WH1 E7 1250 WH4 武汉 400 职工号 E3 E1 E7 E6 E3 E1 E3 E3 供应商号 S7 S4 S4 NULL S4 NULL NULL S3 订购单表 订购单号 OR67 OR73 OR76 OR77 OR79 OR80 OR90 OR91 供应商表
供应商号 供应商名 地址 供应商号 供应商名 地址 S3 振华电子厂 西安 S6 607厂 郑州 S4 华通电子公司 北京 S7 爱华电子厂 北京 (1) 建立订货数据库;
(2) 在数据库中建立所有的表,并输入记录数据; (3) 建立表的索引; (4) 建立表间关系;
(5) 设置表的参照完整性。
9
订购日期 2003/06/23 2003/07/28 2003/05/25 NULL 2003/06/13 NULL NULL 2003/07/13
第六章
1. 简述SQL语言的功能及特点。
SQL是Structured Query Language(结构化查询语言)的缩写。查询是SQL语言的重要 组成部分,但不是全部,SQL还包含数据定义、数据操作和数据控制功能等部分。SQL语言具有如下特点:
(1) SQL是一种一体化的语言。
(2) SQL语言是一种高度非过程化的语言。 (3) SQL语言非常简洁。
SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式
(4) 使用。
2. 利用第5章习题中给出的订货管理数据库和记录实例,用SQL语句完成下列操作:
(1) 列出在北京的供应商的名称;
select 供应商名 from 供应商表 where 地址= '北京' (2) 列出发给供应商S6的订购单号;
select 订购单号 from 订购单表 where 供应商号='S6' (3) 列出职工E6发给供应商S6的订购单信息;
select * from 订购单表 where 职工号='E6' and 供应商号='S6' (4) 列出向供应商S3发过订购单的职工的职工号和仓库号;
select 职工号,仓库号 from 职工表 where 订购单表.供应商号='S3' and 订购单表.职工号=职工表.职工号
(5) 列出和职工E1、E3都有联系的北京的供应商信息;
select b.供应商号 ,供应商名,地址 from 订购单表 a ,供应商表 b ,订购单表 c where a.供应商号=b.供应商号 and b.供应商号=c.供应商号 and a.职工号='E1' and c.职工号='E3' and 地址='北京'
(6) 列出与工资在1220元以下的职工没有联系的供应商的名称;
select 供应商号,供应商名 from 供应商表 where not(供应商号 in(select 供应商号 from 订购单表 where 订购单表.职工号=职工表.职工号 and 职工表.工资<1220))
(7) 列出向供应商S4发出订购单的仓库所在的城市;
select distinct 城市 from 仓库表 a,职工表 b,订购单表 c where c.供应商号='S4' and c.职工号=b.职工号 and b.仓库号=a.仓库号 (8) 列出在上海工作并且向供应商S6发出了订购单的职工号;
select distinct b.职工号 from 仓库表 a,职工表 b,订购单表 c where c.供应商号='S6' and c.职工号=b.职工号 and b.仓库号=a.仓库号 and a.城市='上海'
(9) 列出由工资多于1 230元的职工向北京的供应商发出的订购单号;
select distinct c.订购单号 from 仓库表 a,职工表 b,订购单表 c ,供应商表 d where c.供应商号=d.供应商号 and 地址='北京' and c.职工号=b.职工号 and b.工资>1230
10