第3章 数据库的建立与操作
3.1 判断题
1.关系数据库是关系数据表的集合。
【答案】√
2.数据库文件和数据库备注文件的扩展名分别是.dbc和.dct。
【答案】√
3.一个表文件同时可以属于多个数据库。
【答案】×
【分析】一个表文件在同一时间内只能属于一个数据库,如果需要将一个属于其他数据库的表添加到当前数据库中,必须先将该表移出原来所属的数据库。
4.如果一个数据库处于打开状态,则这时创建的所有表均自动添加到打开的数据库中。
【答案】√
5.数据库表与自由表之间可以相互转换。
【答案】√
【分析】数据库表与自由表可以相互转换,但当数据库表转换成自由表时,一些属于数据库表的特性将被删除。
6.工作区是Visual FoxPro在磁盘上开辟的临时区域,在多个工作区中,可以同时打开多个具有独立记录指针的表文件。
【答案】×
【分析】工作区是在内存中开辟的临时区域,而不是在磁盘上开辟的临时区域。
7.一个工作区在同一时间只能打开一张表,而一张表可以在同一时间在不同工作区打开。
【答案】√
【分析】一个表文件可以在多个工作区打开,但打开时应使用带AGAIN子句的USE命令。
8.当使用SELECT 0时,所选择的工作区号可能为3号工作区。
【答案】√
【分析】SELECT 0是选择系统中当前可用的最小号工作区。
9.在Visual FoxPro中,每个工作区都有两个别名,一个是系统指定的,一个是用户自定义的。
【答案】√
【分析】系统指定的别名是A,B,C,…,J,W11,W12,…,W32767;用户自定义的别名是表名或使用ALIAS子句指定的别名。
10.数据库表间的永久关联,既可以在数据库设计器中建立,也可以使用SET RELATION命令来建立。
【答案】×
【分析】SET RELATION命令建立的是表的临时关联。
11.建立永久关联的主要目的是使子表记录指针随着父表记录指针移动。
【答案】×
【分析】永久关联的主要目的是实现参照完整性,而临时关联的主要目的是使子表记录指针随着父表记录指针移动。
12.表文件的永久关联和临时关联只能在数据库表间建立,不能在自由表间建立。
【答案】×
【分析】永久关联只能在数据库表间建立;而临时关联既可以在自由表间建立,也可以在数据库表间建立。
13.数据库的参照完整性规则可以确保数据库中数据的有效性和一致性,但是前提是表与表之间必须建立永久关联或临时关联。
【答案】×
【分析】数据库建立参照完整性的前提是先要在表间建立永久关联,与临时关联没有关系。
14.数据库的参照完整性是指一个表中主关键字的取值必须是确定的、唯一的。
【答案】×
【分析】数据库的参照完整性是指确保数据库中数据的有效性和一致性,实体完整性是指表中主关键字的取值必须是确定的、唯一的。
15.要实现数据库中两个表文件之间的数据关联,必须在两个表之间提供公共的字段,即一个表的主关键字与另一个表的外部关键字,且要以相同的数据类型匹配。
【答案】√
16.“SELECT职工”命令与“SELECT姓名FROM职工”命令,是同一个SELECT语句的不同用法。
【答案】×
【分析】前者是选择“职工”工作区,是Visual FoxPro的命令;后者从“职工”表中查询字段,是数据库系统通用的SQL语句。
17.SELECT语句只能查询数据库表,不能查询自由表。
【答案】×
【分析】SELECT语句可以查询数据库表和自由表。
3.2 选择题
1.每一个表应该包含一个或一组字段,这些字段是表中所保存的每一条记录的唯一标识,此信息称为表的( )。
A.主关键字 B.候选关键字 C.复合关键字 D.外部关键字
【答案】A
2.在Visual FoxPro的数据库设计器中能建立两个表之间的关联,这种关联是( )。
A.永久关联 B.永久关联或临时关联 C.临时关联 D.永久关联和临时关联
【答案】A
【分析】在数据库设计器中可能建立永久关联,临时关联可以在数据工作期、数据环境中建立或使用SET RELATION命令建立。
3.在Visual FoxPro中,如果某字段定义为主索引字段(即主关键字),那么该字段输入时( )。
A.不能出现重复值和空值 B.能出现重复值和空值 C.能出现重复值,不能出现空值 D.能出现空值,不能出现重复值
【答案】A
4.命令SELECT 0的功能是( )。
A.选中最小工作区号 B.选择最近使用的工作区 C.选中当前未使用的最小工作区号 D.选择当前工作区
【答案】C
【分析】SELECT <工作区号>用于选择工作区,而SELECT 0则可以选中系统当前尚未使用的最小工作区号的工作区。
5.在Visual FoxPro中,关于自由表的叙述正确的是( )。
A.自由表和数据库表是完全相同的 B.自由表不能建立字段级规则和约束 C.自由表不能建立临时关联 D.自由表不可以加入到数据库中
【答案】B
【分析】数据库表是属于某个数据库的表,自由表则是不属于任何数据库的表,数据库表允许长表名、长字段名,可以建立字段级和记录级规则,而自由表不可以。
6.设置参照完整性时,要求两个表( )。
A.是同一个数据库中的两个表 B.是不同数据库中的两个表 C.是两个自由表 D.一个是数据库表,另一个是自由表
【答案】A
【分析】设置参照完整性的前提是建立永久关联,而要建立永久关联必须两个表属于同一数据库。
7.永久关联建立后( )。
A.在数据库关闭后自动取消 B.若不删除将长期保存 C.无法删除 D.只供本次运行使用
【答案】B
【分析】永久关联是数据库表之间的关系,建立后会长期存在,直到被删除。
8.下列关于定义参照完整性的说法中,错误的是( )。
A.只有在建立两个表的永久性关联的基础上,才能建立参照完整性
B.建立参照完整性必须在数据库设计器中进行
C.建立参照完整性之后,就不能向子表中添加数据
D.建立参照完整性之前,首先要清理数据库
【答案】C
9.Visual FoxPro中的索引有( )。
A.主索引、候选索引、普通索引、视图索引
B.主索引、次索引、唯一索引、普通索引
C.主索引、次索引、候选索引、普通索引
D.主索引、候选索引、唯一索引、普通索引
【答案】D
10.唯一索引的“唯一性”指的是( )。
A.字段值的“唯一” B.索引项的“唯一” C.表达式的“唯一” D.列属性的“唯一”
【答案】A
11.下列叙述中,错误的是( )。
A.一个表可以有多个外部关键字
B.数据库表可以设置记录级的有效性规则
C.永久关联建立后,子表记录指针将随着父表记录指针相应移动
D.对于临时关联,一个子表不允许有多个主表
【答案】C
【分析】子表记录指针将随着父表记录指针相应移动是临时关联的功能。
12.在Visual FoxPro中参照完整性规则不包括( )。
A.更新规则 B.删除规则 C.查询规则 D.插入规则
【答案】C
13.SELECT *FROM职工,这一语句的意义是( )。
A.从职工表中检索所有的记录 B.从职工表中检索所有带“*”的记录 C.从职工表中检索所有带“*”的字段 D.从职工表中检索所有的字段
【答案】A
【分析】SELECT语句中的“*”表示全部字段,而语句的功能是显示“职工”表中的所有记录。
14.以下关于SQL查询的描述正确的是( )。
A.不能根据自由表建立查询 B.只能根据自由表建立查询 C.只能根据数据库表建立查询 D.可以根据数据库表和自由表建立查询
【答案】D
15.下列SQL语句中,能对职工表中的记录按基本工资进行排序显示的语句是( )。
A.SELECT*FROM职工SORT TO基本工资
B.SELECT*FROM职工ORDER BY基本工资
C.SELECT*FROM职工GROUP BY基本工资
D.SELECT*FROM职工COUNT基本工资
【答案】B
16.若职工表的主关键字是职工号,则下列操作不能执行的是( )。
A.向表中添加职工号为“199805”、姓名为“王芳”的记录
B.删除表中职工号为“199804”的记录
C.将表中的职工号“199801”改为“199701”
D.将表中职工号为“200001”的职工姓名改为“张小军”
【答案】C
【分析】职工号为主关键字,不允许出现相同的职工号,由于“199701”职工号已经存在,因此不允许把“199801”改成“199701”。
17.SQL查询命令的基本结构是( )。
A.SELECT–FROM–ORDER BY B.SELECT–WHERE–GROUP BY C.SELECT–FROM–HAVING D.SELECT–FROM–WHERE
【答案】D
18.在SQL语句中,与表达式"基本工资BETWEEN 1500 AND 2000"功能相同的表达式是( )。
A.基本工资>1500 AND基本工资<2000
B.基本工资>=1500 AND基本工资=<2000
C.基本工资>=1500 OR基本工资=<2000
D.基本工资>1500 OR基本工资<2000
【答案】B
【分析】BETWEEN…AND…表示包含在两者之间,则B的表达式是正确的。
19.在SQL语句中,与表达式"姓名LIKE '李%' "功能相同的表达式是( )。
A.LEFT(姓名,1)="李" B.LEFT(姓名,2)="李" C."李"$姓名 D.AT("李",姓名)<>0
【答案】B
【分析】表达式"姓名LIKE'李%' "的功能是姓名以“李”字开头,而LEFT(姓名,2)也是截取姓名左边两位为“李”。
20.在Visual FoxPro的数据库设计器中建立表之间的永久关联,其父表必须建立( )类型的索引。
A.主索引 B.候选索引 C.唯一索引 D.普通索引
【答案】A
【分析】建立永久关联时,父表必须建立主索引,而子表可以建立主索引或普通索引,子表建立主索引时,永久关联是“一对一”的,子表建立普通索引时,永久关联是“一对多”的。
3.3 操作题
1.在“营销”数据库中,为“商品”表和“销售”表建立一对多的永久关联,并设置参照完整性规则为“限制”。
【操作提示】操作步骤如下:
① 在“数据库设计器”中,右键单击“商品”表选择“修改”项,在弹出的“表设计器”的“索引”选项卡中以“商品号”为索引表达式建立主索引;同样为“销售”表以“商品号”为索引表达式建立普通索引。
② 在“数据库设计器”中,拖动鼠标,将“商品”表的主索引“商品号”字段拖至“销售”表的普通索引“商品号”字段,此时在两个索引之间显示一条连线,表示建立了“一对多”的关联。
③ 选择“数据库”菜单中的“清理数据库”项。
④ 用鼠标单击连线,使连线变粗,再单击右键,在快捷菜单上选择“编辑参照完整性”选项,在对话框中先选择下方的“商品”与“销售”关系,再分别在“更新规则”、“删除规则”和“插入规则”中选择“限制”选项。在设置规则的过程中要注意下方列表中的变化。
2.分别使用“数据工作期”和SET RELATION命令建立“商品”表与“销售”表的临时关联,并观察建立临时关联前后,两表记录指针之间的变化。
【操作提示】在“数据工作期”中建立临时关联的步骤如下:
① 在“数据工作期”窗口中分别打开“商品”表和“销售”表。
② 在“别名”列表框中选择“商品”选项,单击“关系”按钮后,在“关系”列表框中出现“商品”选项,下方还有一条折线。
③ 选择“别名”列表框中的“销售”表,弹出“设置索引顺序”对话框,选择“销售.职工号”后单击“确定”按钮。
④ 在“表达式生成器”对话框中,选择“字段”列表框中的“职工号”选项,单击“确定”按钮完成设置,临时关联如图3-11所示。在右边的“关系”列表框中,上面一行表示父表,下面一行表示子表,中间的折线表示两表的临时关联。
以命令方式建立临时关联,在命令窗口中输入以下命令:
USE商品IN 1 USE销售IN 2 SELECT销售 INDEX ON商品号TAG商品号 SET ORDER TO TAG商品号 SELECT职工 SET RELATION TO商品号INTO销售
3.使用SELECT语句查询所有职工的职工号、姓名、所有商品的商品号、名称和销售数量。
【操作提示】使用以下SQL语句:
SELECT职工.职工号,姓名,商品.商品号,商品名称,销售数量; FROM职工,商品,销售; WHERE职工.职工号=销售.职工号AND商品.商品号=销售.商品号