第一篇:数据库练习题.
'选择题(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.保存
第二篇:中职数据库练习题
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表建立一对一的关系。(用语句命令来完成)
第三篇:数据库安全性练习题和答案
数据库安全性习题
一、选择题
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='经济系')
第五篇:数据库营销
数据库营销案例
一、卖游戏币的例子
案例:有一个人,04年时,他曾做过游戏币生意,就是传说中的网游商人。他当时属于中间商,左手从打币工作室手中收货,右手再销售给的玩家。当时倒腾的是新浪代理的一款名为《天堂2》的游戏。他当时应该是这个游戏里最知名的商人,玩这个游戏的,特别是倒腾游戏币的,大部分都知道他。而且从收入上说,他也应该是同行中赚的最多的人之一。当时他一天最多可以赚2000多元,注意,说的是纯利润。而这成绩的背后,数据库营销帮了很大的忙。
分析:数据库营销的第一步是搜集客户资料。而搜集客户资料最好的方式就是与客户交流。而很多人上网卖东西,是卖完就拉倒,就再不与客户主动联系了,顶多是来新货后发发广告,这是很不可取的。但这个人上网卖东西有一个习惯,就是喜欢和客户聊天。比如说卖游戏币时,每个来买币的人,他都会和他聊一聊,弄清楚对方在那个城市、年龄有多大、做什么工作、玩了多少年网游、在游戏里玩到什么阶段、每月在游戏里的支出、以往是如何消费的、身边有多少个朋友一起玩、对其它玩家的影响力如何等等。当掌握了这些数据后,开始给用户分类,然后进行有针对性的维护。一般客户大概可以分四种:
1、暂时还不购买的客户: 很多客户并不马上购买,可能只是询询价。很多卖家对于这样的客户是直接放弃,这点很不对。因为网络上的骗子太多,客户第一次不放心,观望一下很正常。对于这样的卖家,首先要根据数据分析一下购买力如何,其次要看一下是不是会经常购买。而且即使其本身购买力不行,但他身边或许有很多强力买家。如果发现这个用户具备其中一条,就不能轻易放弃。这时候就需要与客户经常的沟通聊天,先和客户成为朋友。当成为朋友之后,下次肯定会在你这儿消费。
2、重点维护的大客户:
对于经常购买游戏币,特别是消费额高的大客户,一定要重点维护。对于这种用户的信息,掌握的也应该是越多越好。
3、偶尔购买的散户:
对于偶尔买一点开开荤的散户,可以不用重点维护。但是不维护不代表不重视,起码不能让他们出去骂你。
4、玩家资源多的意见领袖:
有些玩家本身的购买力可能不行,但是他的身边却可能有大量的优质客户。对于这样的用户,即使购买力弱,也要当成大客户重点维护。因为从他身上能挖掘到资源。
通过以上方法,当年他总共赚了有小几十万,但是实际上总共在他这儿消费过的人加一块也就80多个。当时开发最成功的一个客户是一个上班族,其一开始没想在他这儿长期购买,因为他的价钱偏贵。但是由于他在获取到他的资料后,找到了很好的突破口,结果变成了他的忠实用户,他一个人就在他这儿消费了几万元,而且还给他介绍了好几个忠实客户。
二、理发店的例子
案例:理发大家都知道,是一个拥有上千年历史的老行当了,现在的理发店竞争越来越激烈。而对于理发店来说,最优质的客户是女性用户,因为爱美是女人的天性,一般做一次头发,至少都是上百元。如果那个理发店能有一群忠实的女性顾客,那生意一定会非常火爆。
而有这么一家理发店,就通过数据库营销,牢牢抓住了600个白领回头客。那他是怎么做的呢? 分析:首先,这家理发店会为来理发的用户,都建立一个客户档案,其中包括顾客目前头发的状况、历次烫发染发的时间、用的什么烫发水等等,同时还包括职业、单位等基本信息。最重要的,要留下客户的联系方式,特别是线上联系方式。
其次,通过MSN等工具与客户进行线上交流,比如聊顾客的美发要求、闲聊促进感情等。因为大家都知道,要想长期留住你的用户,最好的方法是与他成为朋友。而在理发的过程中,与顾客交流的时间和精力肯定有限,而如果通过电话等方式,又不是很现实。所以MSN等IM工具,就成了最佳选择。与顾客聊成了朋友,自然就会成为你的回头客。
而且当客户要理发时,还可以提前在MSN上沟通好需求,再结合顾客的数据档案,基本上就能对用户的期望值把握的非常准确了。最重要的,这样能最大程度的节省双方的时间,同时也避免客人多时“撞车”排队。
三、内联升的数据库营销
一个古代的案例。清朝末年的老北京流传着一句谚语:“头戴马聚源,身披瑞蚨祥,脚踏内联升,腰缠‘四大恒’。”意思是戴马聚源的帽子最尊贵,用瑞蚨祥的绸缎做衣服穿在身上最光彩,脚蹬一双内联升鞋店的靴鞋最荣耀,腰中缠着“四大恒”钱庄的银票最富有,有腰缠万贯之意。而这个内联升,就是咱们接下来要讲的故事主角。
内联升的创始人叫赵廷,最早在一家鞋作坊学得一手制鞋手艺,又积累了一定的经验。后来,由一位丁大将军出资入股,资助赵廷开办了鞋店。由于当时京城的制鞋行业竞争也挺激烈,于是他决定走专业路线,专门为皇亲国戚、朝廷文武百官制作朝靴。早期的经营并不是一帆风顺,因为这些达官贵人做鞋,经常只是差下人送个鞋样过来,但这样就保证不了鞋的舒适度。特别是遇到一些脚形比较特殊的人,可能就容易出问题。在经历过几次交易纠纷后,赵廷打起了数据库营销的主意(当然,那时候还没有这个说法,也没这个名词,但是意思是一样的),搞了一本后来闻名于世的《履中备载》。这个备载实际上就是内联升的用户档案,里面详细记载了京城内所有达官贵人脚上的秘密,比如鞋的尺寸、样式和特殊脚形等等。有了这个数据后,为客人做鞋就不怕不合脚了,而且还省去了很多麻烦,比如说某个客人要做鞋,直接来支会一声就行,不需要费劲的去沟通需求了。
《履中备载》推出之后,赵廷的生意果然是越来越火爆。而这火爆的原因,除了顾客对他的鞋越来越满意这个原因外,还有个意外收获。原来很多人听说内联升掌握了京城达官贵人的足下之秘后,都纷纷来订鞋送礼。因为在当时,上好的朝靴经常作为一种礼品,馈赠亲友或者下级送给上级。而内联升的数据在当时不可多得的精准信息,大大方便了送礼者。