第一篇:中职数据库练习题
A.USE D:ZGZGDA.DBF COPY TO D:ZGZGDA3 B.USE D:ZGZGDA.DBF COPY STRUTURE TO D:ZGZGDA3 C.USE D:ZGZGDA.DBF COPY STRUCTURE TO D:ZGZGDA3 D.USE D:ZGZGDA3.DBF COPY STRUCTURE TO D:ZGZGDA 18.下列命令中,创建数据库文件ST.DBC的命令是()A.CREATE B.CREATE ST C.OPEN DATABASE ST D.CREATE DATABASE ST 19.打开数据库XH.DBC的正确命令是()A.OPEN DATABASE XH B.USE XH C.USE DATABASE XH D.OPEN XH 20.下列方法中不能关闭数据库的是()A.在项目管理器中选择某个数据库,再单击”关闭”按钮B.关闭数据库设计器 C.执行CLOSE DATABASE命令 D.执行CLOSE ALL 命令 21.下列方法中不能创建数据库表的是()A.在项目管理器中选择”数据库”选项下的”表”选项,再单击”新建”按钮新建表
B.先打开一个数据库,再单击”常用”工具栏上的”新建”按钮创建表 C.先打开一个数据库,再使用CREATE命令创建表 D.数据库已经预先打开,直接利用CREATE命令创建表 22.下列方法中不能把自由表添加到数据库中的是()A.在项目管理器中选择某个”数据库”选项下”表”的选项,再单击”添加”按钮
B.先打开数据库设计器,再选择”数据库”—“添加表”命令 C.使用”ADD TABLE<自由表名>”格式的命令 D.使用”ADD DATABASE<自由表名>”格式的命令 23.下列方法中不能把数据库表移出数据库的是()A.在项目管理器中选择某个数据库表,再单击”移去”按钮.B.先打开数据库设计器选择某个数据库表,再选择”数据库”—“移去”命令 C.使用”REMOVE TABLE<数据库表名>”格式的命令 D.使用”REMOVE DATABASE<数据库表名>”格式的命令 24.下列命令中,将数据库表移出数据库的命令是()
A.CLOSE DATABASE B.REMOVE TABLE C.FREE TABLE D.RELEASE TABLE 25.下列关于表的叙述中,正确的是()
A.在数据库和自由表中,都能给字段定义有效性规则和默认值 B.设置字段的有效性规则可以检验两个字段的数据是否满足条件 C.设置字段的有效性规则可以检验输入数据的正确性 D.设置字段的默认值可以指定编辑数据时字段的默认值
26.要把当前表的记录指针移到
B.一个工作区中可以同时打开多个表
C.一个工作区中可以打开多个表,但任一时刻只能打开一个表 D.使用OPEN命令可以在指定工作区中打开表 32.下列命令中,错误的是()A.USE XSDA IN 0 B.USE XSDA2 IN 5 C.USE IN 5 D.USE IN 0 33.执行下面的一组命令后,选择ZGDA.DBF所在工作区的错误命令是()CLOSE ALL USE GZ0501 IN 0 USE ZGDA IN 0 A.SELECT ZGDA B.SELECT 0 C.SELECT 2 D.SELECT B 34.要使用分屏显示的方式显示当前表的结构,可以使用的命令是()A.LIST STRUCTURE B.DISPLAY STRUCTURE C.LIST STRUCTURE IN 1 D.DISPLAY STRUCTURE IN 1 35.修改表结构的命令是()A.MODIFY STRUCTURE B.CREATE STRUCTURE C.LIST STRUCTURE D.DISPLAY STRUCTURE 36.为S.DBF添加字段有效性规则:职工号开头的3个字符是110.正确的SQL命令是()A.CHANGE TABLE 教师 ALTER 职工号 SET CHECKLEFT(职工号,3)=”110” B.ALTER TABLE 教师 ALTER 职工号 SET CHECKLEFT(职工号,3)=”110” C.ALTER TABLE 教师 ALTER 职工号 CHECK LEFT(职工号,3)=”110” D..CHANGE TABLE 教师 ALTER 职工号
SET CHECK OCCURE(职工号,3)=”110”
37.分屏显示数据的命令是()A.LIST B.LIST STRUCTURE C.DISPLAY D.DISPLAY STRUCTURE 38.显示表结构的命令是()A.MODIFY STRUCTURE B.LIST C.DISPLAY STRUCTURE D.DISPLAY 39.打开浏览窗口浏览编辑数据,错误的操作是()A.在项目管理器中,先选择一个表,再单击”浏览”按钮 B.在项目管理器中,先选择一个表,再单击”预览”按钮 C.先打开一个表,再选择”显示”—“浏览”命令
D.先在数据库设计器中选择一个表,再选择”数据库”—“浏览”命令 40.下列命令中,没有显示数据功能的是()A.LIST B.DISPLAY C.BROWSE D.REPLACE 41.下列命令中,没有编辑数据功能的是()A.EDIT B.LIST C.CHANGE D.BROWSE
42.将当前表中赵国强的基本工资增加200元的命令是()A.CHANGE ALL 基本工资 WITH 基本工资 +200 B.REPLACE ALL 基本工资 WITH 基本工资 +200
C.CHANGE 基本工资 WITH 基本工资 +200 WHERE 姓名=”赵国强” D.REPLACE 基本工资 WITH 基本工资 +200 WHERE 姓名=”赵国强” 43.以下方法中不能追加记录的是()
A.选择”显示”—“追回方式”命令 B.选择”表”—“追加新记录”命令 C.选择”表”—“追回记录”命令 D.选择”文件”—“导出”命令 44.下面关于追回记录的叙述中,错误的是()A.APPEND命令可以在指定表的末尾追加记录
B.APPEND BLANK 命令可以在当前表的末尾追加一条空记录 C.APPEND 命令可以在当前表的末尾追加记录
D.APPEND FROM 命令可以把其他表文件中的数据追加到当前表文件中 45.在当前表的末尾追回一条空记录的命令是()
A.APPEND B.BROW BLANK C.APPEND BLANK D.APPEND FROM BLANK 46.逻辑删除记录可以使用的方法是()
A.选择”表”—“彻底删除”命令B.选择”表”—“删除记录”命令 C.选择”编辑”—“剪切”命令 D.选择”编辑”—“清除”命令 47.下列关于索引的叙述中,错误的是()
A.索引改变记录的逻辑顺序 B.索引改变记录的物理顺序 C.一个表可以建立多个索引 D.一个表可以建立多个惟一索引 48.在指定字段或表达式中允许出现重复字段的索引是()A.候选索引和主索引 B.普通索引和惟一索引 C.候选索引和惟一索引D.普通索引和候选索引
49.VFP的参照完整性规则不包括()
A.更新规则 B.删除规则 C.查询规则 D.插入规则 50.可以设置参照完整性的两个表是()
A.同一个数据库中的两个表 B.不同数据库中的两个表 C.两个自由表D.一个数据库表和一个自由表 51.数据库系统的核心是()
A.数据库 B.操作系统 C.数据库管理系统 D.数据文件
52.设有部门和职员两个实体,每个职员只能属于一个部门,且一个部门可以有多名职员,则部门与职员实体之间的联系类型是()A.一对一的 B.一对多的.C.多对一的 D.多对多的.53.用树形结构表示实体之间联系的数据模型称为()A.关系模型 B.网状模型 C.层次模型 D.以上3个都是 54.用二维表结构表示实体及其之间联系的数据模型称为()A.表格模型 B.层次模型 C.网状模型 D.关系模型 55.关系的3种基本运算中不包括的是()A.联接 B.排序 C.选择 D.投影 56.关系运算中的投影运算是()
A.从关系中找出满足给定条件的元组的操作 B.从关系中选择若干个属性组成新的关系的操作 C.从关系中选择满足给定条件的属性的操作 D.A和B都对
57.从关系模式中指定若干个属性组成新的关系的运算称为()A.联接 B.投影 C.选择 D.排序 58.VFP是()
A.层次数据库管理系统 B.网状数据库管理系统 C.关系数据库管理系统D.表格数据库管理关系 59.VFP支持的数据模型是()
A.层次数据模型 B.关系数据模型 C.网状数据模型 D.树状数据模型 60.VFP关系数据库管理系统能够实现的3种基本关系运算是()
A.索引.排序.查询 B.录入.编辑.替换 C.选择.投影.联接 D.显示.统计.复制
二、填空题(每空1分,共20分)
1.在VFP中,字段类型指定该字段,字段宽度指定该字段
小数位数指定。
2.VFP的一个表最多允有 个字段,字段名只能包含英文字母、、或。
3.字符型字段的最大宽度为 个字节,数值型字段的最大宽度为 位,日期型字段的宽度为 个字节,逻辑型字段的宽度为 个字节,备注型字段的宽度为 个字节,通用型字段的宽度为 个字节。4.在VFP中最多可以打开 个表。
5.索引的4种类型的是、、、6.选择 菜单中的 命令,可以打开“工作区属性”对话框指定当前索引。
三.写出以下操作的命令(每小题2分,共10分)
1、复制ZG.DBF表的结构,新建DA_3.DBF.2.在D:ZG文件夹中创建一个文件名为ZG.DBF的表 3.把记录指针移到记录号为5的记录上。
4.选择当前没有使用的工作区号最小的工作区为当前工作区。5.关闭当前工作区中打开的表。四.操作题(共10分)
1.按编号字段为DA_1.DBF和DA_2.DBF表建立一对一的关系。(用语句命令来完成)
第二篇:数据库练习题.
'选择题(40分)
1. VFP中下列表达式中写法错误的是
A)″总分″+[90]
B)″AB″==″AB″
C)″总分″+ 90
D)″x″<>″y″
2.数据库文件工资.DBF共有10条记录,当前记录号为3, 用SUM命令计算工资总和,如果不给出范围短句,那么命令
A)计算后5条记录工资值之和
B)计算后6条记录工资值之和
C)只计算当前记录工资值
D)计算全部记录工资值之和
3.要为当前表所有职工增加100元工资应该使用命令
A)CHANGE工资WITH工资+100
B)REPLACE工资WITH工资+100
C)CHANGE ALL工资WITH工资+100
D)REPLACE ALL工资WITH工资+100
4.文件CGE.MNX是一个
A)表单文件
B)菜单文件
C)项目文件
D)报表文件
5.Visual FoxPro关系数据库管理系统能实现的3种基本关系运算是
A)索引、排序、查找
B)建库、录入、排序
C)选择、投影、联接
D)显示、统计、复制
6.使用数据库技术进行人事档案管理,是属于计算机的A)科学计算应用
B)过程控制应用
C)数据处理应用
D)辅助工程应用
7.逻辑型字段的宽度固定为
A)8
B)1
C)4
D)10
8.当前表中有20条记录,当前记录号是5,Display next 3命令将
A)显示当前记录
B)显示第三条记录
C)显示第6到第8条记录
D)显示第5到第7条记录
9.备注型字段的宽度固定为
A)8
B)1
C)4
D)10
10.执行 ?STR(109.87,7,3)后,屏幕显示的是
A)109.87
B)″109.87″
C)109.870
D)″109.870″
11.在Visual FoxPro中,打开表命令是
A)OPEN TABLE<表名>
B)USE <表名>
C)USE TABLE<表名>
D)OPEN<表名>
12.假定系统日期是1998年12月20日,有如下命令:MJ=MOD(YEAR(DATE()),100)执行该命令后,MJ的值是
A)1998
B)98
C)981220
D)1220
13.在以下四组函数运算中,结果相同的是
A)LEFT(″Visual FoxPro″,4)与SUBSTR(″Visual FoxPro″,1,4)
B)YEAR(DATE())与SUBSTR(DTOC(DATE()),7,2)
C)lEN(″that″)与 lEN(″that ″)
D)假定A=″that ″,B=″is a menu″,A-B与A+B
14.在VFP中,执行STORE DTOC(DATE()+10)TO B后,变量B的类型为
A)日期型
B)数据型
C)备注型
D)字符型
15.如果要创建一个3级数据分组报表,第1个分组表达式是“部门”,第2个分组表达式
是“性别”,第3个分组表达式是“基本工资”,则当前索引的索引关键字表达式应该是
A)部门+性别+基本工资
B)部门+性别+STR(基本工资)
C)性别+部门+STR(基本工资)
D)STR(基本工资)+性别+部门
16.数据表文件CJ.DBF已经打开,共有10条记录,按关键字XM排序,执行命令SORT ON XM TO CJ后,屏幕将显示
A)10条记录排序完成B)CJ.DBF已存在,覆盖它吗(Y/N)
C)文件在使用
D)出错信息
17.物理删除记录可用两条命令分两步来完成,这两个命令分别为
A)PACK和ZAP
B)PACK和RECALL
C)DELETE和PACK
D)DELETE和RECALL
18.在VFP的几种循环语句中,当循环次数为常数时,应选用的语句是
A)DO WHILE
B)SCAN
C)LOOP
D)FOR
19.关于数据库表和自由表,下列说法正确的是
A)数据库表可以转换为自由表,反之不能
B)自由表可以转换为数据库表,反之不能
C)两者可以相互转换
D)两者不能相互转换
20.视图设计器中比查询设计器多出的选项卡是
A)字段
B)排序依据
C)联接
D)更新条件
按照要求完成如下命令,并将操作结果写到对应该题的空白处(30分)
请针对已知的zgda.dbf和zggz.dbf进行操作,zgda.dbf 和zggz.dbf存放在d:data目录下, 其中:
(实发工资=基本工资+奖金+补贴+书报费--公积金--水电费)
1. 对zgda.dbf按照职工姓名降序排序,排在第30位的职工姓名
sele 姓名 from zgda order by 姓名 desc张明
2. 统计销售部工作的职工人数
sele count(*)from zgda where 部门=“销售部”8
3. 统计技术部职工的公积金金额总计 sele sum(公积金)from zggz,zgda wherezggz.职工号=zgda.职工号and 部门=“技术部”301.80
编写一程序,求出S=1+2^2+3^3+„..+10^10。(17分)10405071317.00
s=0
for i = 1 to 10
s=s+i^i
endfor
?s
在d:data文件夹下有zgda.dbf和zggz.dbf表,请编写并运行符合下列要求的程序,并将该程序保存在d:data文件夹下:
设计一个名为form_TJ的表单,表单中有两个命令按钮、一个文本框,两个命令按钮的标题分别为“统计”和“关闭”。
程序运行时,单击“统计”按钮完成下列操作:
根据zggz.dbf表计算所有职工的公积金的总和,并将结果显示在文本框中;
单击“关闭”按钮,程序终止运行。(13分)
1.新建表单
2.在表单上建立控件:两个命令按钮,一个文本框 3.两个命令按钮的标题分别为“统计”和“关闭”。
4添加数据环境zggz.dbf
5双击“统计”,按钮,输入命令
sum 公积金 to a
thisform.text1.value=a
6双击关闭,输入命令
thisform.release
7.保存
第三篇:数据库安全性练习题和答案
数据库安全性习题
一、选择题
1.以下()不属于实现数据库系统安全性的主要技术和方法。
A.存取控制技术 B.视图技术
C.审计技术 D.出入机房登记和加锁
2. SQL中的视图提高了数据库系统的()。
A.完整性 B.并发控制
C.隔离性 D.安全性
3. SQL语言的GRANT和REVOKE语句主要是用来维护数据库的()。
A.完整性 B.可靠性
C.安全性 D.一致性
4.在数据库的安全性控制中,授权的数据对象的(),授权子系统就越灵活。
A.范围越小 B.约束越细致
C.范围越大 D.约束范围大
三、简答题
1.什么是数据库的安全性?
答: 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
2.数据库安全性和计算机系统的安全性有什么关系?
答: 安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。
系统安全保护措施是否有效是数据库系统的主要指标之一。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的,3.试述实现数据库安全性控制的常用方法和技术。
答: 实现数据库安全性控制的常用方法和技术有:
1)用(户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级中的自主存取控制(DAC),B1级中的强制存取控制(MAC);
3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
4.什么是数据库中的自主存取控制方法和强制存取控制方法?
答: 自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
*解析:自主存取控制中自主的含义是:用户可以将自己拥有的存取权限“自主”地授予别人。即用户具有一定的“自主”权。
5.SQL语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
答:
SQL中 的自主存取控制是通过GRANT 语句和 REVOKE 语句来实现的。如:
GRANT SELECT,INSERT ON Student TO 王平WITH GRANT OPTION;
就将Student表的SELECT和INSERT权限授予了用户王平,后面的“WITH GRANT OPTION”子句表示用户王平同
时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。
REVOKE INSERT ON Student FROM 王平CASCADE;
就将Student表 的INSERT权限从用户王平处收回,选项 CASCADE 表示,如果用户王平将 Student 的 INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。
6.今有两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
(a)用户王明对两个表有SELECT权力;
GRANT SELECT ON 职工,部门
TO 王明;
(b)用户李勇对两个表有INSERT和DELETE权力;
GRANT INSERT,DELETE ON 职工,部门 TO 李勇;
(c)*每个职工只对自己的记录有SELECT权力;
GRANT SELECT ON 职工 WHEN USER()= NAME TO ALL;
这里假定系统的GRANT语句支持WHEN子句和USER()的使用。用户将自己的名字作为ID。注意,不同的系统这些扩展语句可能是不同的。读者应该了解你使用的DBMS产品的扩展语句。
(d)用户刘星对职工表有SELECT权力,对工资字段具有更新权力;
GRANT SELECT,UPDATE(工资)ON 职工
TO 刘星;
(e)用户张新具有修改这两个表的结构的权力;
GRANT ALTER TABLE ON 职工,部门
TO 张新;
(f)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力;
GRANT ALL PRIVILIGES ON 职工,部门 TO 周平WITH GRANT OPTION;
(g)用户杨兰具有从每个部门职工中SELECT最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。
答:
首先建立一个视图。然后对这个视图定义杨兰的存取权限。
CREATE VIEW 部门工资 AS
SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM 职工,部门
WHERE 职工.部门号 = 部门.部门号
GROUP BY 职工.部门号;
GRANT SELECT ON 部门工资 TO 杨兰;
7.把习题8中(a)~(g)的每一种情况,撤销各用户所授予的权力。
答:
(a)
REVOKE SELECT ON 职工,部门
FROM 王明;
(b)
REVOKE INSERT,DELETE ON 职工,部门
FROM 李勇;
(c)
REOVKE SELECT ON 职工
WHEN USER()= NAME
FROM ALL;
这里假定用户将自己的名字作为ID,且系统的REOVKE语句支持WHEN子句,系统也支持USER()的使用。
(d)
REVOKE SELECT,UPDATE ON 职工
FROM 刘星;
(e)
REVOKE ALTER TABLE ON 职工,部门
FROM 张新;
(f)
REVOKE ALL PRIVILIGES ON 职工,部门
FROM 周平;
(g)
REVOKE SELECT ON 部门工资
FROM 杨兰;
DROP VIEW 部门工资;
8.为什么强制存取控制提供了更高级别的数据库安全性?
答:
强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
9.理解并解释MAC机制中主体、客体、敏感度标记的含义。
答:
主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程。
客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)。敏感度标记被分成若干级别,例如绝密(Top Secret)、机密(Secret)、可信(Confidential)、公开(Public)等。主体的敏感度标记称为许可证级别(Clearance Level),客体的敏感度标记称为密级(Classification Level)。
10.什么是数据库的审计功能,为什么要提供审计功能?
答:
审计功能是指DBMS的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。
因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,DBA可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
11.统计数据库中存在何种特殊的安全性问题?
答:
统计数据库允许用户查询聚集类型的信息,如合计、平均值、最大值、最小值等,不允许查询单个记录信息。但是,人们可以从合法的查询中推导出不合法的信息,即可能存在隐蔽的信息通道,这是统计数据库要研究和解决的特殊的安全性问题。
第四篇:数据库sql课后练习题及答案解析
先创建下面三个表:
(book表)
(borrow表)
(reader表)
1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。
5)查找书名以”计算机”开头的所有图书和作者(WRITER)。
6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。
##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。
9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。
##10)* 找出借阅了
11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。#13)求”科学出版社”图书的最高单价、最低单价、平均单价。##14)* 求”信息系”当前借阅图书的读者人次数。
#15)求出各个出版社图书的最高价格、最低价格和总册数。#16)分别找出各单位当前借阅图书的读者人数及所在单位。
17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。18)分别找出借书人次数多于1人次的单位及人次数。
19)找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。
20)查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称。
附录:建表语句
创建图书管理库的图书、读者和借阅三个基本表的表结构: 创建BOOK:(图书表)
CREATE TABLE BOOK(BOOK_ID int, SORT VARCHAR(10), BOOK_NAME VARCHAR(50), WRITER VARCHAR(10), OUTPUT VARCHAR(50), PRICE int);
创建READER:(读者表)
CREATE TABLE READER(READER_ID int, COMPANY VARCHAR(10), NAME VARCHAR(10), SEX VARCHAR(2), GRADE VARCHAR(10), ADDR VARCHAR(50));
创建BORROW:(借阅表)
CREATE TABLE BORROW(READER_ID int, BOOK_ID int, BORROW_DATE datetime)
插入数据: BOOK表: insert into BOOK values(445501,'TP3/12','数据库导论','王强','科学出版社',17.90);insert into BOOK values(445502,'TP3/12','数据库导论','王强','科学出版社',17.90);insert into BOOK values(445503,'TP3/12','数据库导论','王强','科学出版社',17.90);insert into BOOK values(332211,'TP5/10','计算机基础','李伟','高等教育出版社',18.00);insert into BOOK values(112266,'TP3/12','FoxBASE','张三','电子工业出版社',23.60);insert into BOOK values(665544,'TS7/21','高等数学','刘明','高等教育出版社',20.00);insert into BOOK values(114455,'TR9/12','线性代数','孙业','北京大学出版社',20.80);insert into BOOK values(113388,'TR7/90','大学英语','胡玲','清华大学出版社',12.50);insert into BOOK values(446601,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(446602,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(446603,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(449901,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(449902,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(118801,'TP4/15','计算机网络','黄力钧','高等教育出版社',21.80);insert into BOOK values(118802,'TP4/15','计算机网络','黄力钧','高等教育出版社',21.80);
READER表: insert into reader values(111,'信息系','王维利','女','教授','1号楼424');insert into reader values(112,'财会系','李 立','男','副教授','2号楼316');insert into reader values(113,'经济系','张 三','男','讲师','3号楼105');insert into reader values(114,'信息系','周华发','男','讲师','1号楼316');insert into reader values(115,'信息系','赵正义','男','工程师','1号楼224');insert into reader values(116,'信息系','李 明','男','副教授','1号楼318');insert into reader values(117,'计算机系','李小峰','男','助教','1号楼214');insert into reader values(118,'计算机系','许鹏飞','男','助工','1号楼216');insert into reader values(119,'计算机系','刘大龙','男','教授','1号楼318');insert into reader values(120,'国际贸易','李 雪','男','副教授','4号楼506');insert into reader values(121,'国际贸易','李 爽','女','讲师','4号楼510');insert into reader values(122,'国际贸易','王 纯','女','讲师','4号楼512');insert into reader values(123,'财会系','沈小霞','女','助教','2号楼202');insert into reader values(124,'财会系','朱 海','男','讲师','2号楼210');insert into reader values(125,'财会系','马英明','男','副教授','2号楼212');
BORROW表: insert into borrow values(112,445501,'3-19-2006');insert into borrow values(125,332211,'2-12-2006');insert into borrow values(111,445503,'8-21-2006');insert into borrow values(112,112266,'3-14-2006');insert into borrow values(114,665544,'10-21-2006');insert into borrow values(120,114455,'11-2-2006');insert into borrow values(120,118801,'10-18-2006');insert into borrow values(119,446603,'11-12-2006');insert into borrow values(112,449901,'10-23-2006');insert into borrow values(115,449902,'8-21-2006');insert into borrow values(118,118801,'9-10-2006');
现有关系数据库如下:
数据库名:图书借阅管理系统
读者表(读者编号 char(6),姓名,性别,年龄,单位,身份证号,职称)图书表(图书编号char(6),图书名称,出版社,作者)借阅表(读者编号,图书编号,借阅时间)用SQL语言实现下列功能的sql语句代码。(1)创建数据表book;
book表(图书编号 char(6),图书名称,出版社,作者)要求使用:主键(图书编号)、非空(图书名称),非空(作者)(2)创建数据表reader表;
学生信息表(reader编号 char(8),姓名,性别,年龄,工作单位,身份证号,职称)要求使用:主键(reader编号)、默认(职称)、非空(工作单位,姓名)、唯一(身份证号)、检查(性别),检查(年龄)(3)创建借书表borrow;
borrow(ID,读者编号,图书编号,借书日期)要求使用:外键(学号,课号)(4)将下列课程信息添加到book表的代码
图书编号 名称
100101 数据库原理 100102 数据结构
修改 课号为100102的图书名称:数据结构与算法 删除 课号为100101的图书信息(5)创建视图读者借书信息的代码;
读者借书信息视图(读者编号,姓名,图书编号,图书名称,借书日期)(6)从读者表book中查询姓李的女读者的情况:姓名、性别、工作单位。(7)查询统计出借书量超过5本的单位平均年龄
(8)创建带参数的存储过程[借某图书的读者高低均年龄]、执行该过程的代码
存储过程功能:查询借阅某图书的的读者最高年龄、最低年龄、平均年龄;
执行该过程,查询所有借阅’数据库基础’这本书的读者的最高年龄、最低年龄、平均年龄;
1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
SELECT NAME,COMPANY FROM READER WHERE NAME LIKE '李%'
2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。
SELECT BOOK_NAME, OUTPUT FROM BOOK
3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
SELECT BOOK_NAME,PRICE FROM BOOK WHERE OUTPUT='高等教育出版社' ORDER BY PRICE DESC 4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。
SELECT SORT,OUTPUT,PRICE FROM BOOK WHERE PRICE BETWEEN 10 AND 20 ORDER BY OUTPUT ,PRICE
5)查找书名以”计算机”开头的所有图书和作者(WRITER)。
SELECT BOOK_NAME,WRITER FROM BOOK WHERE BOOK_NAME LIKE '计算机%' 6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。
SELECT A.READER_ID FROM BORROW A,BORROW B WHERE A.BOOK_ID='112266' AND B.BOOK_ID='449901' AND A.READER_ID=B.READER_ID
##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。
SELECT DISTINCT NAME,COMPANY FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID
8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。
SELECT BOOK.BOOK_NAME,BORROW.BORROW_DATE FROM BOOK,BORROW,READER WHERE BOOK.BOOK_ID=BORROW.BOOK_ID AND
READER.READER_ID=BORROW.READER_ID AND READER.NAME LIKE '李%'
9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。
SELECT READER_ID,NAME,COMPANY FROM READER WHERE READER_ID IN(SELECT READER_ID FROM BORROW WHERE BORROW_DATE >='2006-10-1')
##10)* 找出借阅了
SELECT DISTINCT READER_ID FROM BORROW,BOOK WHERE BORROW.BOOK_ID=BOOK.BOOK_ID AND BOOK.BOOK_NAME LIKE 'FoxPro大全'
11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。
SELECT NAME,COMPANY,BORROW_DATE FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID AND BORROW_DATE IN(SELECT BORROW_DATE FROM BORROW,READER WHERE BORROW.READER_ID=READER.READER_ID AND NAME='赵正义')
12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。
SELECT READER_ID,NAME,COMPANY FROM READER WHERE READER_ID NOT IN(SELECT READER_ID FROM BORROW WHERE BORROW_DATE>='2006-7-1')
#13)求”科学出版社”图书的最高单价、最低单价、平均单价。
SELECT MAX(PRICE)最高单价,MIN(PRICE)最低单价,AVG(PRICE)平均单价 FROM BOOK WHERE OUTPUT='科学出版社'
##14)* 求”信息系”当前借阅图书的读者人次数。
SELECT COUNT(DISTINCT READER_ID)当前借阅图书的读者人次数FROM BORROW WHERE READER_ID IN(SELECT READER_ID FROM READER WHERE COMPANY IN('信息系'))
#15)求出各个出版社图书的最高价格、最低价格和总册数。
SELECT MAX(PRICE)最高价格,MIN(PRICE)最低价格,COUNT(PRICE)总册数FROM BOOK GROUP BY OUTPUT
#16)分别找出各单位当前借阅图书的读者人数及所在单位。
SELECT COUNT(COMPANY)读者人数,COMPANY FROM BORROW,READER WHERE BORROW.READER_ID=READER.READER_ID GROUP BY COMPANY
17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。
SELECT NAME 读者姓名,COMPANY 单位FROM READER WHERE READER_ID IN(SELECT READER_ID FROM BORROW GROUP BY READER_ID HAVING COUNT(*)>=2)
18)分别找出借书人次数多于1人次的单位及人次数。
SELECT COMPANY,COUNT(*)人次数 FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID GROUP BY COMPANY HAVING COUNT(*)>1
19)找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。
SELECT OUTPUT,COUNT(*)书籍的总册数,SUM(PRICE)书的价值总额 FROM BOOK GROUP BY OUTPUT
20)查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称。
SELECT NAME,COMPANY FROM READER WHERE NOT EXISTS(SELECT* FROM READER,BORROW WHERE READER.READER_ID=BORROW.READER_ID AND COMPANY='经济系')
第五篇:中职课堂“VFP数据库应用基础”教学反思
中职课堂“VFP数据库应用基础”
教学反思
漠河县职业技术学校 尘威威
中职课堂“VFP数据库应用基础”教学反思
漠河县职业技术学校 尘威威
在中职计算机应用专业教学中,数据库应用教学是其中的重点和难点。在强调‚以技能为核心,以就业为导向‛的中职学校中,如何使文化基础知识较为薄弱的学生对枯燥的VFP数据库产生学习兴趣,并能学以致用,是每位计算机专业教师努力追求的目标和任务。
结合我多年的教学经验,针对VFP课程的特点,在教法上,我以‚案例教学法‛、‚‘课机’结合式教学法‛、‚任务驱动教学法‛为主开展课堂教学,教学效果比较明显。但在‚程序设计‛这一章节的教学中,还是存在着两大误区:一是学生基础较差,加之不爱动脑、动手,导致时间花得多,效果不理想;二是只重视程序设计的结果,忽视了其算法的多样化,从而束缚了学生的思维创新。针对存在的两大误区和不理想的教学效果,引起了我深深的反思,如何突破这两大误区成了我的首要教学任务。于是,我认与同事研讨,查找相关资料,将多种教法结合起来,通过实践,逐步形成了一种‚精讲多练、小组互动、分层实施、机试为主‛教学模式,从而达到了预期的教学效果。
现以do while …… end do循环控制命令的使用为例,将其教学片段简介如下:
一、教学实例
探索循环结构的程序设计方法:
1.示例:用投影仪展示求1+2+3+4+…+100程序清单,让学生对 照程序清单上机调试并思考。
附程序清单:clear sum=0 i=1 do while i<=100 sum=sum+i i=i+1 end do ?‛1+2+3+…+100=‛,sum 师:同学们,你们能找出程序清单中有哪些变量?并说明它的作用吗?
学生思考,随后指名回答。教师板书:sum i
sum的作用是用于存储所求的和(中间结果及最终结果),i的作用是用来存储循环的值(即加数),同时控制循环执行的次数。
师:程序中的变量名可用其它的字母代替吗?你能找出在循环体(命令序列)中用于控制循环趋于结束的命令吗?
学生回答,教师板书:i=i+1 师:好,请同学们独立思考此程序的循环次数? 全班回答:100次。
师:如何通过上机操作验证其执行过程呢?(学生开展讨论并上机操作验证)生1:只须将输出命令放到循环体中即可,即在‚i=i+1‛命令之后、‚end do‛之前插入‚?sum ,i‛命令。(学生操作验证)
生2:因为当前屏显示不下,我们看到的仅仅是最后的几次执行过程,对于以前的执行过程还是看不到,可将该题分段实施,即先求1+2+3+…+20的和。
师:很好。(鼓掌、同学们再操作验证)
2.任务:四人一个小组开始活动,讨论以下任务的设计,并上机操作,教师参与到学生的活动中。
任务一:求2+4+6+8+…+100的和 任务二:求1×2×3×4×5 不一会,各小组互动结束,请两个组进行了回答如下: 小组甲:任务一与例题之间的区别是循环变量的初值为2,每循环一次循环变量增2即i=i+2。
小组乙:任务二在例题的基础上将‚sum=0‛改为‚sum=1‛,循环变量的终值为5即条件改为i<=5,然后是循环体中的‛sum=sum+i‛改为‛sum=sum*i‛。
3.讨论:同学们,在刚才所做的程序中,你能找出其规律吗? 全班交流:
生1:循环变量从所赋的初值到终值按照一定的差进行变化,如求1+2+3+4+…时,其差为‚1‛进行的,求1+3+5+7+…时其差为‚2‛。
生2:(补充)循环变量在程序每执行一次时,就按照其连续相邻的两个值之间的差进行递增变化。生3:用来存储结果的变量sum,也有一定的特点,如在求和时可以赋‚0‛,在求积时只能赋‚1‛。
……
师:你们说得很好,尤其是循环变量的特点,它是我们进行循环结构程序设计的关键,也是一个难点,其理解的程度直接影响到我们程序设计成败。但注意的是有时也可能发生递减变化哟。
4.拓展:做一做,求1+2+3+…+n;1×2×3×4×…×n;n从键盘输入。
做完后并思考:与上述程序设计题有何区别?有何意义 过了一会儿,大多数学生做完了,但还有部分学生没有做完,就安排做完了的学生去指导未完成学生,帮助其操作,力争所有的学生有所获,有所得。
二、教学反思
VFP就是一个让普通用户方便利用可视化的设计工具和向导快速进行数据处理和程序设计的很好的软件。其可深可浅,可难可易,综合性很强。对VFP程序设计的教学,不再是重结果,轻过程,而是很好地驾驭教材内容,创造性地使用教材,巧妙组织,精心安排,灵活设计,给学生以耳目一新的感觉,教学效果非常明显,主要体现了以下几个方面:
1.程序设计关注的应该是程序设计的思维过程
本章节的教学,我跳出了认知技能的框框,不把程序设计的方法、操作技能的形成作为唯一的目标,而更关注学生的学习过程,让学生 在自身实践探索的过程中实现发展性领域目标。如教学时围绕do while命令的使用为重点展开探索,通过相应的活动与任务提供自主学习的机会,给学生充分思考的空间和时间,允许并鼓励他们有不同思维方法,尊重他们的想法,哪怕是不合理的,甚至是错误的,让他们在相互交流、碰撞、讨论中,进一步明确程序设计的基本方法。通过互助探究后,他们在不同的层面上得到提高,并掌握了解决相应的实际问题的能力。在此基础上,教师组织学生对知识进一步拓展:如求‚1+2+3+…+n‛,达到程序设计的基本要求,那就是通用性、实用性。这样的教学,学生获得的不仅仅是程序设计的基本方法,更重要的是分析、处理问题的思维创新能力。
2.提倡思维方式、程序算法的多样化,促进学生个性发展。学语言一般都是从基础知识、概念和一些理论知识入手的,但中职学生的文化课底子薄,理解能力本来就差,如果一开始就讲理论只能让学生不知所措或对这门课提不起兴趣。现在学校一般开设的数据库课程都是VFP6.0版本的,它的可视化功能很强,我们在授课时,应充分利用这一特点,让学生先从外观上对这门课有个初步的认识和了解,理论知识可以在操作中边讲边学的过程中穿插进去,改变一般教材的课程设臵。这样学生是在操作使用中去掌握理论,会比较形象直观一些;而后为了使用所建数据库中的数据表,让学生学习查询、视图、报表、菜单,学习完这些内容以后,再让学后接触SQL语言、程序设计基础、表单。最后是综合应用程序的开发,由易到难,由浅入深,可以循序渐进地将理论与实践结合起来,达到教学目的和要求。思维方式、程序算法的多样化,是指尊重学生的独立思考,鼓励学生探索不同的方法,而不是让学生一定要去掌握多种操作方法。通过分层实施,学生分别达到了应会、熟练等不同程度。在学生进行程序设计时,学生中出现了多种形式不同的程序清单。有的是变量的初值不同,有的是在循环体中命令的先后位臵略有变化,有的是把输出放在了循环体之中等等。在学生独立思考解决的基础上,再让学生发表自己的见解、观点,倾听同伴的解法,进行小组内交流、争论,从而达成一种共识。教师鼓励学生用已有的经验大胆思维,鼓励学生动手上机操作,寻求解决问题的有效途径,营造宽松活跃的课堂气氛。算法的多样化使学生变得聪明自信,在主动探索与合作交流中得到收获,并促进学生的个性发展。
3.营造民主的氛围,激发学生的创新思维
在程序设计过程中,不同的方法对同一个人也许有快慢之说,而对不同的人却不存在优劣之分。在整个探索的过程中,我只是通过投影展示了一个例题,然后组织学生不断地发表自己的想法,通过引导,鼓励他们敢于争论,完成对知识的构建,同时也要注意呵护每一位学生的学习激情,激发其创造力。
学生争论不休的时刻,也正是他们在积极地参与整个学习活动,这正是组织教学的精华所在,同时也挖掘了学生潜在的创造力,从而也带动了全班学生的积极参与,在‚do while命令‛使用的探索过程中,如验证体会循环的执行过程时,一学生提出只要验证‚1+2+3+…+20‛之和,又如求"1×2×3×4×5"时,一学生说它的sum初值不 能为‚0‛,只能为‚1‛时,全班学生都给了他热烈的掌声。我想他这种的见解总是在经过认真分析思考后得出来的。
4.教学方法多样化,激发了学生学习的兴趣
数据库应用VFP是一门操作性很强的专业课程。为了让学生学习有兴趣,在举例时应举与学生有关的、学生经常用到的内容,比如建立数据库,可以以学籍管理中的学籍表、成绩表为例,这些表学生经常都在填写使用,学生以自己的同学作为记录去创建表、使用表,这样一是提高了他们的学习兴趣;二是在建表的过程中自动完成了对数据的收集、整理、录入编辑工作,这样在讲数据处理时学生就不会难理解了。一个数据库包含的数据表应至少是3张以上,这是为后面的建立表之间联系和多工作区做准备,学籍管理中可以再添加一个图书借阅表。
在VFP中使用的文件类型比较多,比如学籍管理库,一旦建立就会同时自动生成同名的3个文件:学籍管理.DBC、学籍管理.DCT、学籍管理.DXT,在应用中只要3个文件少了一个,就会影响数据库使用的质量。对其他文件也是一样的,在操作中,学生们经常会丢失一些文件的备注文件致使原文件无法使用。所以一定要求学生及时对原数据文件做好备份。对学生自己的相关信息进行操作,学生学习兴趣浓厚,在学习过程中出现了你追我赶的局面,学习氛围非常好。讲授的例子始终围绕‚学籍管理‛这个具体实例来讲解,前后具有连贯性,便于知识的巩固和理解。
‚课机‛结合式教学法,在课堂中教师通过大屏幕液晶投影仪或 网络教室讲解知识,然后学生在下面操作学习,学生很容易跟着教师的步骤进行学习,掌握教师教给的内容,而且印象也较为深刻。如上述的示例部分。‚任务驱动‛教学法可合理组织学生自主学习,激发他们的兴趣,让他们尽快地活动起来,并通过自己的自学和同学的帮助来解决问题,在愉快的教学过程中掌握知识,如上述互动中的任务
一、任务二等。
5.实践探索,进一步提高了学生的创造力
真理源于实践,实践出真知。在程序设计的教学中,通过边讲、边练,先从理论上分析讨论,找准理论依据,后通过上机操作验证其正确性,最后再讨论分析、交流程序设计的最佳方法,不仅训练了学生的操作技能,同时也培养学生的创造能力。
总之在程序设计中,鼓励积极思维、分层要求、反复操作验证、达到程序算法多样化是尊重学生的表现,体现了以学生为主体的教学原则,符合现代认知建构主义思想,是释放学生自信心和创新思维、培养创造能力的有效途径。
三、需进一步探索的问题
在程序设计教学时提倡‚精讲多练、小组互动、分层实施、机试为主‛的教学模式,保障了学生在不同的层面得到发展,得到提高,同时也培养了学生的创新思维,体现理论与技能的双丰收。但在对那些基础较差、不爱动脑、动手的学生帮扶上,在分层互动、层次把握上,对教师的组织能力、对教材的分析驾驭能力提出了新的要求,要能真正把握住哪些是全班学生掌握的,哪些是部分(即提高)学生掌 握的,达到所有的学生在各自的水平上能‚吃饱‛。这些问题还需要我们在下一阶段的教学中进一步的探索。