open or close database&three core file
全国计算机等级考试SQL语言答案
全国计算机等级考试SQL语言答案答案5 显示按钮:thisform.text1.value=year(date()) 表单2:mand1.enabled=.f.Thisform.text1.value=year(date()) mand1.enabled=.f.第五套3?创建一个快速报表study-report,报表中包含“课程表”中的所有字段。
create view salary as select 系号,avg(工资) as 平均工资from 教师表group by 系号order by 2 desc?create view salary as select 系号,avg(工资) as 平均工资from 教师表group by 系号order by 2 desccreate view salary as select 系号,avg(工资) as 平均工资from教师表group by 系号order by 2 desc改错:USE 用户表GO TOPflag=0&& 下面语句有错误WHILE .NOT. EOF()IF Alltrim(用户名)==Alltrim(Thisform.Text1.V alue)IF Alltrim(口令)==Alltrim(Thisform.Text2.Value)W AIT "欢迎使用" WINDOW TIMEOUT 2 ELSEW AIT "口令错误" WINDOW TIMEOUT 2 ENDIFflag=1EXITENDIF&& 下面语句有错误NEXTENDDO&& 下面语句有错误CASE FLAG=0W AIT "用户名错误" WINDOW TIMEOUT 2 ENDIF正确答案:USE 用户表GO TOPflag=0&& 下面语句有错误do WHILE .NOT. EOF()IF Alltrim(用户名)==Alltrim(Thisform.Text1.V alue)IF Alltrim(口令)==Alltrim(Thisform.Text2.Value)W AIT "欢迎使用" WINDOW TIMEOUT 2 ELSEW AIT "口令错误" WINDOW TIMEOUT 2 ENDIFflag=1EXITENDIF&& 下面语句有错误skipENDDO&& 下面语句有错误if FLAG=0W AIT "用户名错误" WINDOW TIMEOUT 2 ENDIF生成表按钮:close database allif thisform.check1.value=1 and thisform.check2.value=1do casecase thisform.optiongroup1.value=1select 职工号,姓名,系名,工资,课程号from 教师表,学院表;where 教师表.系号=学院表.系号;order by 职工号;into table two.dbfcase thisform.optiongroup1.value=2select 职工号,姓名,系名,工资,课程号from 教师表,学院表;where 教师表.系号=学院表.系号;order by 职工号desc;into table two.dbfendcaseelsedo casecase thisform.optiongroup1.value=1if thisform.check1.value=1select 职工号,姓名,系名,课程号from 教师表,学院表;where 教师表.系号=学院表.系号;order by 职工号;into table one_x.dbfendifif thisform.check2.value=1select 职工号,姓名,工资,课程号from 教师表order by 职工号into table one_xx.dbf endifcase thisform.optiongroup1.value=2if thisform.check1.value=1select 职工号,姓名,系名,课程号from 教师表,学院表;where 教师表.系号=学院表.系号;order by 职工号desc;into table one_x.dbfendifif thisform.check2.value=1select 职工号,姓名,工资,课程号from 教师表order by 职工号desc into table one_xx.dbf endifendcaseendifOptiongroup1 Addobject: LPARAMETERS cName, cClass第六套:Four.prg:Select 系名, avge(工资) as 平均工资,max(工资) as 最高工资;From 教师表where 教师表.系号=学院表.系号;Order BY 学院表.系号;Group BY 3 DESC,2 DESC;Into three修改后:SELECT 学院表.系名,avg(工资) as 平均工资,max(工资) as 最高工资; FROM 教师表,学院表WHERE 教师表.系号= 学院表.系号;group BY 学院表.系号;order BY 3 DESC,2 DESC;INTO table three.dbf生成按钮:close database alldo casecase thisform.pageframe1.page2.optiongroup1.value=1select 系名,学院表.系号,avg(工资) as 平均工资;from 学院表,教师表where 学院表.系号=教师表.系号and ;系名=alltrim(bo1.value);group by 学院表.系号;into table salary.dbfcase thisform.pageframe1.page2.optiongroup1.value=2select 系名,学院表.系号,sum(工资) as 总工资;from 学院表,教师表where 学院表.系号=教师表.系号and ;系名=alltrim(bo1.value);group by 学院表.系号;into table salary.dbfendcase第七套:二、简单应用:统计满足条件的学生人数。
VF 常用命令
VF 常用命令第三章命令:一、数据库命令1、创建数据库:creat database数据库名2、打开数据库:open database数据库名3、修改数据库:modify database数据库名4、关闭数据库:close database5、删除数据库:delete databas e 数据库名(被删除的数据库不能处于打开状态)二、表的操作命令1、创建表:create表名2、打开表:use表名3、修改表:modify stru表名4、关闭表:close table5、浏览表:browse6、删除表:drop table表名7、增加记录:append或ctrl+y8、物理删除记录:pack 和zap9、修改记录:replace字段名with字段值for条件10、定位记录指针:go、skip、locate for11、命令创建索引:INDEX ON 表达式(字段名)to\tag 索引名第四章常用命令一SQL查询命令格式:select -------from ------ where ----- order by ----- desc---- group by -----having-------into table计算函数:sum() \ avg() \ count() \ max() \ min()TopIn \ not in 用于where条件包含或不包含的意思Into array 将查询结果存到数组Into cursor 将查询结果存到临时文件into table 将查询结果存到永久表(即VF表里面)select 要查询的内容from 要查询的内容来自的表where查询的内容要满足的条件和表之间的联系order by排序字段名desc降序group by分组字段名having分组条件into table查询结果存入表的表名二操作功能1、插入记录insert into表名(字段名……)values(记录……)2、修改更新记录Update表名set字段名=字段值where条件3、删除记录Delete from 表名where条件三定义功能1、创建表Creat table表名(字段名类型(宽度)primary key主索引check字段有效性规则,…………)2、修改表(修改字段)(1)增加字段Alter table表名add字段名类型(宽度)primary key主索引check 字段有效性规则,……(2)修改已有的字段类型Alter table表名alter字段名类型(宽度)set check字段有效性规则。
vfp试题及答案
12、1<x<5 and a<b是vfp中的合法的表达式。F
13、vfp中各类运算符的优先级从高到低依次是算术运算符、逻辑运算符、关系运算符。T
14、vfp中内存变量名与字段名不能相同。F
11、一张表可以同时在2个工作区中打开。F
12、set order to 0的功能是取消主控索引T。
13、打开一个建立了结构化复合索引的数据表,再执行list命令,则表记录的顺序是按第一个索引标识的顺序显示。F
14、使用copy命令复制时,必须对所有字段进行复制。F
15、建立单一索引文件的命令中,不包含用于指定降序的选项。T
16、表中数据更新时,它所有的索引文件会自动更新。F
17、replace命令中缺省范围和for子句时,默认修改所有记录。F
18、locate命令只能将记录指针定位到满足条件的第一条记录。T
19、建立索引文件时,备注型字段可以作为索引字段。F
20、设置记录过滤器后,不满足条件的记录会被删除。F
I=i+1
Enddo
retu
(1)如果输入字符串为“ABCDE”,则程序运行结果为(B )
A、ABCDE B、EDCBA C、EDCBABCDE D、ABCDEDCBA
(2)如果将程序中第三行的“accept”改为“input”,则在输入字符串时(C )
A、不能正常输入 B、没有任何影响 C、需加定界符输入 D、以上说法都不对
17、设x=4,y=2,z=”/”,s=”x”+”&z.”+”y”表达式?&S的输出结果是<2 >
vfp中命令总结
Create menu文件名
新建一个菜单文件,同时打开菜单设计器
Modify command文件名
新建一个程序文件,同时打开程序窗口
四、VFP中的do命令
命令关键词
含义
do文件名
执行程序文件
do文件名.qpr
执行查询文件
do文件名.mpr
执行菜单文件
do form文件名
Unload表单卸载事件
Click鼠标单击事件
Refresh表单刷新
Release表单释放(也是命令)
Show表单显示
Hide表单隐藏
标签控件
(Label)
Caption标题
Alignment文本对齐方式
Enabled (.T./.F.)能否使用
Visible (.T./.F.)能否看见
Click鼠标单击事件
Value值(0:未先中;1:选中)
click鼠标单击时触发
列表框
(listbox)
Rowsourcetype数据源类型
Rowsource数据源
Value值
Listindex索引项值
Click鼠标单击时触发
interactivechange更改控件的值时触发
Additem
Removeitem
clear
Enabled
interval
timer经过Interval属性中指定的毫秒数时,触发该事件
Add table
例:add table xs
将数据表添加至数据库中
Remove table
例:remove table xs
将数据库中的表移出数据库
三、SQL命令
Visual-FoxPro——数据库应用基础命令
資料庫應用基礎——Visual FoxPro命令(電腦應用專業) 第3版1、CREATE <表檔案名>打開表設計器新建一個Visual FoxPro表2、COPY TO <表檔案名>[FIELDS字段列表][FOR條件]複製當前表の數據創建一個新表3、CREATE DATABASE<資料庫名>創建一個資料庫4、OPEN DATABASE<資料庫名>打開指定の資料庫5、SET DATABASE TO[資料庫名]設置某個打開の資料庫為當前資料庫6、CLOSE DATABASE關閉當前資料庫7、CLOSE ALL關閉所有打開の檔8、DISPLAY STRUCTER顯示當前表の結構9、SELECT <工作區號>|<別名>選擇指定の工作區號為當前工作區10、USE<表檔案名>[IN工作區號][ALIAS別名]在指定工作區上打開指定の表檔11、USE [IN工作區號|別名]關閉指定工作區上打開の表12、MODIFY STRUCTRE打開表設計器修改當前表の結構13、BROWSE[FIELDS字段列表][FOR條件][FREEZE字段名]打開流覽窗口流覽/編輯當前表の數據14、GO TOP|BOTTOM|<記錄號>移動當前表の記錄15、SKIP以當前記錄為基準,移動當前表の記錄指針16、RECNO()返回當前表の當前記錄號17、RECCOUNT()返回當前表の記錄總數18、DISPLAY[ALL][FIELDS字段列表]顯示當前表の數據19、APPEND[BLANK]在當前表の末尾追加記錄20、INSERT INTO<表名>[(<字段名列表>)]VALUSE(<運算式列表>)向指定の表追加一條記錄21、APPEND FROM<>[FIELDS字段列表][FOR條件]把指定表檔中の記錄追加到當前表22、DELETE[ALL][FOR條件]邏輯刪除當前表の指針記錄23、DELETE FROM <表檔案名>[WHERE條件]邏輯刪除制定標の記錄24、RECALL[ALL][FOR條件]取消當前表中指定記錄の刪除標記,恢復邏輯刪除の記錄為正常記錄25、PACK屋裏刪除當前表中已被邏輯刪除の記錄26、ZAP物理刪除當前表の所有記錄27、REPLACE<字段名1>WITH<運算式1>[,<字段名2>WITH<運算式2>…][ALL][FOR條件]成批替換當前表の數據28、UPDATE<表檔案名>SET<字段名1>=<運算式1>[,<字段名2>=<運算式2>…][WHERE條件]更新指定表の數據29、INDEX ON<關鍵字>TAG<索引名>[OF複合索引檔案名][FOR條件][DESCENING]為當前表創建一個索引30、SET INDEX TO[索引檔列表]打開當前表の索引檔31、SET ORDER TO <索引名>[OF索引檔案名]指定當前表の當前索引32、RINDEX對當前表の所有打開の索引檔重新索引33、LOCATE FOR<條件>在當前表中繼續查找滿足條件の下一條記錄34、FOUND測試檢索數據是否成功35、EOF測試記錄指針是否在檔尾36、SET RELATION TO[關鍵字INTO別名]指定表建立一對一の關係37、SET SKIP TO<別名>指定表建立一對多の關係38、DO<查詢檔案名>運行指定の查詢39、MODIFY QUDEY <查詢檔案名>打開指定の查詢檔40、SELECT <字段列表>FROM [資料庫名!]<表名>從一個或多個表中查詢數據41、CREATE VIEW <視圖名>AS<查詢語句>為當前資料庫創建查詢42、DROP VIEW <視圖名>刪除當前資料庫中指定の視圖43、CREATE REPORT<報表檔案名>新建一個空白報表44、MODIFY REPORT<報表檔案名>打開指定の報表檔45、REPORT FROM <報表檔案名> TO PRINTER列印報表檔46、MODIFY COMMAND<程式檔案名>使用命令創建程式47、DO<程式檔案名>運行指定の程式48、CLEAR清除螢幕上の顯示資訊49、*|NOTE<命令行>添加注釋50、ACCEPT[提示資訊]TO<記憶體變數>輸入字串51、INPUT[提示資訊]TO<記憶體變數>輸入運算式52、WAIT [提示資訊][TO記憶體變數][WINWOW][TIMEOUT時間] 輸入一個字元53、@<行,列>SAY<顯示資訊>格式化輸出54、@<行,列>[SAY顯示資訊]GET<變數>格式化輸入55、SET SAFETY ON|OFF設置系統資訊56、SETSAFETY ON|OFF設置系統資訊57、CLEAR ALL清除記憶體變數。
数据库系统及应用(第六版)第4章数据库及表的操作
4.2 数据表操作
4.2.1 表的基本操作
1 表的打开、关闭和浏览
(1)菜单方式
4.2 数据表操作
4.2.1 表的基本操作
1 表的打开、关闭和浏览
(1)菜单方式
4.2 数据表操作
4.2.1 表的基本操作
1 表的打开、关闭和浏览
(2)“数据工作期”方式
4.2 数据表操作
4.2.1 表的基本操作
4.1 数据库操作
4.1.3 创建数据库表
4
修改表结构
(2)打开数据库修改数据表 如果数据库已经打开,则可以使用“数据库设计器”修改当前数据 库内所有的数据表。方法是首先在“数据库设计器”内单击选中某个数 据库表,然后执行【数据库】|【修改】菜单命令。或者右击数据库表 打开快捷菜单,执行【修改】菜单命令。还可以单击“数据库设计器” 工具栏内的“修改表”工具按钮。上述三种操作的目的都是为了打开 “表设计器”。
删除触发器:用于指定一个规则,每当用户对表中的记录进行删 除时触发该规则并进行相应的检查。如果表达式值为“假”,则记录 将不能被删除。
4.1 数据库操作
4.1.3 创建数据库表
4
修改表结构
(1)直接修改数据表 执行【文件】|【打开】菜单命令,打开表文件,然后执行【显示】| 【表设计器】菜单命令。使用这种方式可以在不打开数据库的情况下直接 修改数据库中的表,它等同于使用了以下两条命令: USE<表名> MODIFY STRUCTURE
4.1 数据库操作
4.1.4 添加和移去数据表
1 向数据库中添加表
当一个数据库被打开后,用户可以单击“数据库设计器”工具栏的 【添加表】按钮,或者执行【数据库】|【添加表(A)】菜单命令,显示 “打开”对话框,选择被添加的数据表,然后单击【确定】按钮,将该 表添加到数据库内。用户也可以使用命令方式向当前数据库添加数据表。
chap4 数据库的创建和使用
3) 一对一关系(1:1)
12
4. 永久关系的建立和编辑
1) 建立
a. 建立两张表的索引 b. 在“数据库设计器”中拖动索引标识
2) 编辑
a. 在“数据库设计器”中双击关系连线 b. 单击连线 数据库 编辑关系
3) 删除
1) 单击连线,按[DEL]键 2) 右击连线 删除关系
13
5. 设置参照完整性规则
第4章 数据库的创建和使用 章
1
4.1 VFP数据库概述 数据库概述
1. 数据库是一个包容器,用来组织和联系表。 数据库是一个包容器,用来组织和联系表。 2. 内容: 内容:
1) 2) 3) 4) 5) 表 表之间的关系 连接 视图 存储过程
2
4.2 数据库的创建
1. 创建数据库
1) 利用“项目管理器”创建 2) 文件 新建或“新建”按钮 3) CREATE DATABASE [数据库名|?]
6
3. 字段的验证规则
1) 2) 3) 4) 用来控制用户输入到字段中的信息类型 实现数据库数据的完整性。 在字段值改变时,激活规则。 可在“表设计器”中设置,
4. 记录的验证规则
1) 用来控制用户输入到记录中的信息。 2) 从数据库中移去具有关联规则的表时,所有属于 该表 的字段级和记录级规则都会从数据库中删除。
14
6. 数据完整性综述
1) 三类完整性
a. 实体完整性:字段级、记录级 b. 参照完整性:表级 c. 用户自定义完整性
2) 通过字段级、记录级和表间三级完整性约束, 有效地实现了数据的完整性和一致性。
15
9
7. 在数据库中添加、移去表 在数据库中添加、
1) 一张表只能属于一个数据库。 2) 数据库处于打开状态且为当前数据库时: a. 系统自动将新建的表添加到当前数据库中 b. ADD TABLE 自由表文件名 [NAME 长表名] :将已存 在的自由表添加到数据库中 c. 项目管理器中操作 3) REMOVE TABLE 表名 [DELETE] :从数据库中移动表 [DELETE]项是把表从磁盘上删除
CDatabase类的用法简介
要建立与数据源的连接,首先应构造一个CDatabase对象,然后再调用CDatabase的Open成员函数.Open 函数负责建立连接,其声明为virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC;”, BOOL bUseCursorLib = TRUE ); throw( CDBException, CMemoryException );参数lpszDSN指定了数据源名(构造数据源的方法将在后面介绍),在lpszConnect参数中也可包括数据源名,此时lpszDSN必需为NULL,若在函数中未提供数据源名且使lpszDSN为NULL,则会显示一个数据源对话框,用户可以在该对话框中选择一个数据源.参数bExclusive说明是否独占数据源,由于目前版本的类库还不支持独占方式,故该参数的值应该是FALSE,这说明数据源是被共享的.参数bReadOnly若为TRUE则对数据源的连接是只读的.参数lpszConnect指定了一个连接字符串,连接字符串中可以包括数据源名、用户帐号(ID)和口令等信息,字符串中的"ODBC"表示要连接到一个ODBC数据源上.参数bUseCursorLib若为TRUE,则会装载光标库,否则不装载,快照需要光标库,动态集不需要光标库.若连接成功,函数返回TRUE,若返回FALSE,则说明用户在数据源对话框中按了Cancel按钮。
若函数内部出现错误,则框架会产生一个异常。
下面是一些调用Open函数的例子。
CDatabase m_db; //在文档类中嵌入一个CDatabase对象//连接到一个名为"Student Registration"的数据源m_db.Open("Student Registration");//在连接数据源的同时指定了用户帐号和口令m_db.Open(NULL,FALSE,FALSE,"ODBC;DSN=Student Registration;UID=ZYF WD=1234");m_db.Open(NULL); //将弹出一个数据源对话框要从一个数据源中脱离,可调用函数Close。
vf的汇总知识
第一章vf的基础知识(1)人工文件数据库(2)关系运算传统:交并差专门:选择:行元组(记录) for where 行减少一个表投影:列属性(字段) fields 列减少一个表连接:多个表行列减少变多join on自然连接:多个表去掉重复属性的等值连接笛卡尔积:多个表3 * 3(3)关系的特点: 关系表二维表(.dbf)一个关系必须规范化元组不能重复属性不能重复属性的顺序没有要求记录顺序没有要求(4)项目(.pjx)建立项目:create project [项目名]修改项目:modify project [项目名]第二章函数常量数值表示方法:直接表示123 12.35 N货币常量表示:$123 默认4位小数$123 123.0000 8字节Y字符常量表示:"" '' [] sql Cthisform.grid1.recordsource="sele ..where 颜色='蓝' "日期常量{} 2005/05/02=>数值表示:{yyyy/mm/dd} 8字节D{yy/mm/dd}{mm/dd/yyyy} 传统严格:{^yyyy/mm/dd}set mark to ',' : set mark to :set date to ymd mdy dmy ...set cent on|offset stri to 0|1|2日期时间常量: {yyyy/mm/dd hh..} 8字节T逻辑型:m=5>6 .t. .T..y..Y. .F. .f..N..n. 1字节L表达(1)字符: + - 连接类型必须相同1+2=3"1"+"2"=12 1+"2" ×"1"-"2"=12"1 "+" 2 "=1口口2口"1 "-" 2 "=1口2口口(2)日期表达式:日期+日期×日期+数值√日期-数值√日期-日期(3)逻辑: and or not !.and. .or. .not. not>and>or(5)==:精确比较职工号=="z1" z1 z11 z12 z112日期越后的越大.t.>.f.$:包含left 左边right右边substr "...........""计算机" $ 商品名商品名like "%计算机%"like(商品名,"*计算机*")函数数值abs()sign()sqrt()int(3.456) =>3ceil(3.456)=>4floor(3.456)=>3round(3.456,2)=>3.46round(456.325,-2)=>500max("2","9","85")=>9min("计算机","电脑")=>电脑j d字符函数(1)len(字符型):结果数值len(sapce(0))=>0len(space(3)+space(5))=>8len(space(5)-space(3))=>8(2)space(数值):结果字符(3)trim() 后面结果字符ltrim() 前面allttrim() 前后into table allt(thisform.text1.value) (4)left(姓名,2) 左结果字符right(姓名,2) 右substr(姓名,2)任意位置截取一直到末尾substr(姓名,2,3):(5)at("..","..."):第一次结果数值at("..","...",n):第n次(6)stuff("abcdef",2,3,"11"):a11efstuff("abcdef",2,3,""):aefstuff("abcdef",2,0,"11"):a11bcdef(7)like(表达式1,表达式2):表达式可以出现通配符?*like("ab*","abcd") .t.like("abcd","ab*") .f.转换(1)str():数值转换为字符str(表达1,表达2,表达3) str(thisform.text1.value,8,2)(2)val():字符转数值(3)ctod():字符转日期(4)dtoc():日期转字符(5)year():截取年份n(6)month():月份n(7)day():天n(8)date():系统日期d(9)time():系统时间c(10)bof():表的首部(11)eof():表的末尾do while not eof()(12)&: &"123"=>123(13)vartype():(14)empty():"空值"测试0 .f. 空格空串 .t.empty(.null.)=> .f.(15)isnull():空值isnull(.null.) => .t.(16)iif(150>200,200,300)变量字段变量(表中的字段名)和内存变量(除表的字段名以外)当字段变量和内存变量同名,最终字段变量优先,要访问内存变量m.内存变量m->内存变量(1)假设表中的字段名姓名张三命令窗口输入:姓名=姓名-"你好"?姓名=>张三?m.姓名?m->姓名=>张三你好(2)假设表中的字段名商品名计算机命令窗口输入:m=商品名-"技术"?m => 计算机技术?商品名->计算机(3)x=3y=3store 3 to x,y(4)?:换行输出??:当前光标处输出一行(5)数组dime(1)数组的初值: .f.(2)数组的起始的小标(下标的下线):1(3)数组的个元素的类型可以不一样(4)vf变量的数据类型由变量的值决定,可以通过改变变量的值来改变变量的类型(5)对数组名赋值代表对所有元素赋值(6)可以用一维数组表示二维数组(6)scatter to :将表的当前记录赋值到数组gather from :将数组的值赋值到表的当前记录第三章数据库基本操作数据库(.dbc)数据库的命令(1)建立数据库:create database 数据库名(2)打开数据库:open database(3)修改数据库(打开数据数据库设计器):modify database(4)关闭数据库:close database(5)删除数据库:delete database(6)将自由表添加到数据库:add table(7)将数据库移除变为自由表:remove table(8)设置当前数据库:set database to 数据库名(9)取消当前数据库:set database to (所有的数据库都不是当前,不是关闭) 自由表:不属于任何一个数据库的表数据库表:放在库中(1)一个表只能属于一个数据(2)数据库表(1)字段有效性(域完整性):规则:逻辑表达式><信息:字符表达式""默认值:由字段的类型"" {} $ 123(2)索引:主候选普通唯一(3)联系:永久联系:表现为表与表之间的连线(1)必须在数据库设计器(2)建立永久联系必须先建索引:一个主一个普通(3) 一对一一对多主主(默认) 主普通(默认)候选候选主唯一主候选候选普通候选主候选唯一临时联系:指针的联动(1)先建立索引,一般主对普通(2)指针的联动:当父表的指针指向某条记录,子表的指针自动指向同一条记录(3)建立临时命令:set relation to 索引字段into 表名(4)取消临时联系:set relation to(4)参照完整性:更新插入删除步骤:(1)建立索引(2)建立永久联系(3)清理数据库:数据库->清理数据库(4)建立参照完整性更新:级联父子限制父子忽略删除:级联父子限制父子忽略插入:限制子父忽略自由表的特点:(1)自由表不能建立上面的操作(2)自由表不支持长表名into table allt(thisform.text1.value)(3)自由表:候选普通唯一(4)将数据库表删除后,原来是主索引->候选索引索引:逻辑顺序由指针构成的文件索引和表单独存放(1)主索引: 一个数据库表只能建立一个主索引建立主索引的字段值不能重复(2)候选索引:一个表可以建立多个候选候选索引和主索引的功能完全相同建立主索引的字段值不能重复(3)普通:一个表可以建立多个普通建立普通就是为了排序建立普通索引的字段值可以不重复,也可以重复(4)唯一:一个表可以建立多个唯一建立唯一就是为了排序建立唯一引的字段值可以不重复,也可以重复建立唯一索引,如果字段不重复,结果全部出现如果字段重复,重复字段结果只出现一个,默认出现第一个(5)建立单索引(.idx)index on 索引表达式to 索引名注意(1)一个单索引产生一个文件,多个单索引产生多个文件(2)单索引的文件名就是to后面的索引名(3)单索引只能升序,不能降序(4)单索引只能两种索引:普通(默认) 唯一(unique)(6)结构符合索引(.cdx)注意:(1)多个结构符合索引只产生一个文件(2)结构符合索引的文件名就是表名(3)结构可以升序,也可以降序默认:升序asce desc(4)建立三种:候选(candidate) 唯一(unique) 普通(默认)(5)index on 索引表达式tag 索引名(7)排序:物理顺序生成一个表文件和原来的表分开存储命令:sort on 排序字段to 表名(8)查找顺序查找:locate for 查找条件(1)locate for 无论执行多少次,最终只能找到符合条件的第一条记录(2)继续查找:continue(3)判断查找是否成功:found() .t. 找到.f. 未找到(4)如果找到则eof()=> .f.如果没有找到: 则eof()=>.t.索引查找:seek(1)要用seek,必须按查找的字段先建立索引(2)继续查找:skip(3)locate for 性别="男" seek "男"(9)设置当前索引(打开索引)(1)命令建立索引:index on tag 直接有效(2)设计器:不会直接有效set order to 索引名set order to :关闭有效索引第四章sql(1)简单sql公式sele 结果字段1,结果字段2,...from 表where 条件注意:(1)*:所有字段* from 表1 * from 表1,表2 表1.*(2)distinct:去掉重复记录张三女张三女(3)where 查询条件(2)连接查询(1)where 连接等价于[inner] join on 内连接wheresele 结果字段from 表1,表2,..where 表1.公共字段=表2.公共字段; and ..and 查询条件join on (2个表)sele 结果字段from 表1 join 表2 on 表1.公共字段=表2.公共字段; where 查询条件join on(3个表)sele 结果字段from 表1 join 表2 join 表3 ;on 表2.公共字段=表3.公共字段;on 表1.公共字段=表2.公共字段;where 查询条件(2)超级连接left join :左连接左的表如果不满足条件,结果也会出现,满足条件的也会出现right join:右连接full join:全连接join on:内连接只有满足的才会出现嵌套(1)in not in 在....里面sele 结果字段from 结果的表where 公共字段in;(sele 公共字段from 条件的表where 查询条件)(2) exists (真的条件) not exist (假的条件)sele 结果字段from 结果的表where exists;(sele * from 条件的表where 结果表.公共字段=条件表.公共字段; and 查询条件)计算查询(1)sum(参数) 求和(2)max (3)min (4)avg() (5)count()数数计数排序sele 结果字段from 表where 条件;order by 字段1 [asc|desc],排序字段2 [asc|desc],...注意:(1)order by 排的最终结果的顺序修正(2)排序可以更多个字段,从左到右的顺序(3)asc 升序desc 降序默认为升序分组sele 结果字段from 表where 条件;order by 排序[asc|desc];group by 分组字段1,分组字段2,...[having 分组的条]注意(1)as 重命名sele 原字段as 结果字段...(2)avg max sum min count:只能写在sele 或having(3)order by :结果排序只能跟结果字段(4)where :只能跟原字段(5)group by :可以跟原字段也可以是结果字段(6)条件:where having(7)having:必须跟在group by 的后面(8)having 和where 不矛盾先用where 限定元组,在用group by 分组,然后再用having去掉不满总条件的分组(9)嵌套查询sele ..(sele...)order by 不能用在子查询中查询去向(1)top n [perc] :前多少条:top必须和order by 同时使用(2)into array 数组名(3)into cursor 临时表(4)into table|dbf 永久表(5)to file 文本文件数据操纵(1)插入数据非sql:append insert append fromsql:insert into 表名values(字段值):插入全部字段insert into 表名(制定字段)values(字段值):插入部分字段insert into 表名from array 数组名insert into 表名from memvar 从同名的内存变量(2)更新数据非sql:replace 更新字段名with 字段值:只能当前一条replace 更新字段名with 字段值for :满足条件replace all 更新字段名with 字段值for : 满足条件replace all 更新字段名with 字段值:全部sql:update 表名set 字段名=字段值:默认全部update 表名set 字段名=字段值where :符合条件(3)删除记录非sql(1)逻辑删除:dele for 条件(2)恢复:recall for 条件(3)物理删除:pack 必须先逻辑后物理(4)彻底删除:zap 删除全部记录后,表依然存在sql:(1)逻辑删除:dele from 表名where 条件(2)物理:pack数据定义(1)建立表:create table|dbf 表名[name 长表名][free];(字段名1 字段类型[(字段宽度[,小数位数])] [null|not null] [check [error]] [default][primary key |unique ][refe 表2][,字段名2...])(2)修改表格式1:alter table 表名add|alter [column] 字段名字段类型[(字段宽度[,小数位数])] [null|not null][check [error]] [default][primary key |unique ][refe 表2][,字段名2...])格式2:alter table 表名alter [column] 字段名[null|not null] [set default] [set check][drop default] [droup check]格式3:alter table 表名drop 字段名alter table 表名renamen 原字段名to 新字段名alter table 表名add primary key |unique ..alter table 表名drop primary keyalter talbe 表名drop unqiue tag 索引名查询和视图查询的知识点(.qpr)(1)查询是预先定义好的sql sele 语句(2)是一个文本文件(3)建立查询(1)新建->查询(2)项目->数据->查询(3)create query 查询文件名(4)新建->文本文件->sql->保存->.qpr(4)修改查询:modify query 查询文件名(5)查询的选项卡: 字段->sele连接->join on筛选->where排序->order by分组->group by having杂项->top distinct运行查询:do 查询文件名.qpr视图(1)基于sql产生(2)视图保存在数据库中,磁盘上不存在,操作视图,必须先打开数据设计器(3)查询保存在磁盘上,就是叫查询文件,跟数据库无关(4)视图:字段连接筛选排序分组更新条件杂项(5)查询只能查表,但是不能更新表,视图既可以查询表,也可以更新表(6)建立视图:create view 视图名as sele ..(7)删除视图:drop view 视图名(8)修改视图:modify view表单(.scx)表单文件名:保存或关闭表单控件名(表单名):name表单标题:catpion背景色:backcolor自动居中:autocenter模式表单:windowtype不可移动:movable高:height宽:width左:left顶:top表单的退出命令:thisform.release方法:退出release 显示:show 隐藏:hide表单:load init destroy unload事件:click dblclick rightclick属性:caption backcolor name ...建立表单:create form 表单名修改表单:modify form 表单名运行表单:do form 表单名标签(label1)属性name:名字caption:标题fontsize:字体大小forecolor:字体颜色autosize:自动调整大小backcolorfontname:字体backstyle:是否透明文本框(text1)name:名字value:文本框的值inputmask:格式x:任意字符9:数字和+ - #:空格数字+- . , passwordchar:密码显示的字符表示文本框的值:thisform.text1.value将sql的结果放入文本框:(1)sele ..into array aa(2)thisform.text1.value=aa命令按钮(command1)属性default:默认按钮enter click .t. 一个cancel:取消escenabled:是否可用(黑色和灰色)visible:是否可见(显示和隐藏)caption:标题事件:click选项组:optiongroup1 option1 option2属性:value=n:第n 个按钮被选中if thisform.optiongroup1.value=n :选中第n个按钮.....elseendifdo casecase ....endcasebuttoncount:按钮的个数组合框(combo1)value:选中的值displayvalue:选中或输入的值displaycount:显示的最大数目字段名=bo1.displayvalue rowsourcetype:数据源的类型0-无additem 增加条目removeitem 删除条目1-值手动自己输计算机,电脑,...6-字段某个字段的值8-结构显示某个表的所有字段名3-sql 写sele 命令5-数组数组名7-文件*.doc *.xls 幻灯片pptrowsource:数据源列表框(list1)value:列表框中选中的值listcount:列表框中的条目总数rowsourcetype:数据源的类型rowsource:数据源list(i):代表第i个条目thisform.list1.value页框(pageframe1) page1 page 2..pagecount:页数activepage:激活某一页thisform.pageframe1.activepage=n:激活第n页表格(grid1)captionrecorsourcetype:数据源的类型0-表开关的状态无关1-别名表必须开4-sql sele 语句recordsource:数据源columncount:列数-1 :全部列N:只能有n列0-表thisform.grid1.recourdsource="表名"4-sqlthisform.grid1.recourdsource="sele .. into cursor "计时器(timer1)interval: 计时器时间间隔500复选框(check1)value=1 选中=0 为选中check1 check2 (一个check就是2个结果,二个check就是4个结果)菜单(.mnx .mpr)建立菜单(1)先建->菜单->(.mnx)->单击菜单->生成(.mpr)菜单文件菜单程序文件(2)运行:.mpr 程序文件(3)菜单表文件(书227页,本身并不能运行,必须要生成)(4)建立菜单/修改:modify menu 菜单名(5)退出菜单:set sysmenu to default(6)退出表单:thisform.release(7)菜单的显示位置:单击显示->常规选项->位置访问键: (\<字母)快捷键: 直接输(菜单设计器的选项打勾后,再按ctrl+某个键)分组线:\-运行菜单:do 菜单名.mpr(8)顶层表单(将菜单显示在表单上)菜单(1)建立菜单(2)单击显示->常规选项->勾上顶层表单表单(1)将表单的showwindow -2(2)给表单init (load):添加调用菜单的代码:do 菜单文件名.mpr with this注意:菜单中要用表单中的东西原来表单中:thisform.release菜单中:表单文件名.release快捷菜单(将菜单显示在表单上,右键才可以显示)菜单(1)先建->快捷菜单(2)单击显示->常规选型->设置-> para 形参名(是否设形参,关键是要看你的菜单是不要用表单,如果要就必须设,不要就不设)表单(1)在表单的rightclick 添加代码do 菜单名.mpr with this注意快捷菜单也可以用表单的东西原来在表单:thisform.release菜单中:形参名.release程序(.prg)注释*:&&:note :输入命令(1)input "输入提示" to 变量:输入任意类型数值:1213货币:$123字符型:"" '' []日期: {}(2)accetp "输入提示" to 变量:只能输入字符串字符:不用""(3)wait "输入提示" to 变量:只能输入单个字符程序结构(1)顺序结构(2)选择结构:if if do caseendif else case ..endif ..endcase (3)循环结构do while for scan for.. .. ..enddo endfor endscanloop:结束本次循环继续下一次exit:结束循环参数传递格式1: do 过程名(函数名) with 参数do aa with 5 (常量): 单向do aa with x+y (表达式):单向do aa with (x) (带括号的变量):单向do aa with x (变量):双向格式2:过程名(参数)set udfp to value:设置单向传递单向aa(5)aa(x+y)aa((x))aa(x)set udfp to refe :双向aa(5) :单向aa(x+y):单向aa((x)):单向aa(x) :双向变量的作用域公共变量:publicpublic 变量初值:.f.作用范围:全部都可以用私有变量:在他和他的下层可以使用直接定义的变量叫私有变量局部变量:local 变量名初值:.f.只能在本模块中使用建立和修改程序:modify command 运行程序:do 程序名do 查询.qprdo 菜单.mprdo form 表单报表(.frx)标签:显示文字表达式:域控件ole对象:图片建立报表:create report 报表名修改报表:modify report 报表名预览报表:report form 报表preview。
vfp基础试题及答案
vfp基础试题及答案一、单项选择题(每题2分,共20分)1. Visual FoxPro中,以下哪个选项不是数据库表的属性?A. 字段类型B. 记录长度C. 索引类型D. 表单名称答案:D2. 在Visual FoxPro中,以下哪个函数用于计算字符串的长度?A. LEN()B. STR()C. SPACE()D. AT()答案:A3. Visual FoxPro中,以下哪个命令用于打开一个表单?A. OPEN FORMB. DO FORMC. DISPLAY FORMD. CREATE FORM答案:B4. 在Visual FoxPro中,以下哪个选项不是报表的数据环境的组成部分?A. 数据源B. 控件C. 报表对象D. 表单答案:D5. Visual FoxPro中,以下哪个命令用于创建一个查询?A. SELECTB. QUERYC. CREATE QUERYD. DESIGN QUERY答案:C6. 在Visual FoxPro中,以下哪个函数用于将数值转换为字符串?A. NUMERIC()B. STR()C. VAL()D. ALLTRIM()答案:B7. Visual FoxPro中,以下哪个命令用于关闭一个数据库?A. CLOSE DATABASEB. USEC. CLOSE ALLD. SET DATABASE TO答案:A8. 在Visual FoxPro中,以下哪个选项不是索引的类型?A. 主索引B. 候选索引C. 唯一索引D. 复合索引答案:B9. Visual FoxPro中,以下哪个命令用于删除一个表?A. DELETE TABLEB. DROP TABLEC. REMOVE TABLED. ERASE TABLE答案:B10. 在Visual FoxPro中,以下哪个选项不是表单的属性?A. CaptionB. HeightC. WidthD. Recordsource答案:D二、填空题(每题2分,共20分)1. 在Visual FoxPro中,使用________命令可以创建一个新的数据库。
vfp中打开数据库的命令
vfp中打开数据库的命令在Visual FoxPro(简称VFP)中打开数据库,是使用VFP管理和操作数据的首要步骤。
本文将详细介绍如何在VFP中打开数据库的命令,并提供个别示例说明。
VFP打开数据库的命令:OPEN DATABASE可以使用VFP的“OPEN DATABASE”命令来打开数据库。
例如,以下命令将打开名为“MyDatabase.dbc”的数据库:```OPEN DATABASE MyDatabase```在此代码中,“MyDatabase”是数据库文件名(包括路径和扩展名,如果需要的话)。
如果要禁用数据库的完整读取/写入访问权限,请使用“READONLY”关键字,如下所示:如果数据库需要使用另一个用户的访问权限,则可以使用以下语法:```OPEN DATABASE MyDatabase shared User 'MyUsername' password 'MyPassword'```在上述代码中,“shared”关键字表示要与其他用户共享数据库,而“MyUsername”和“MyPassword”是访问数据库所需的另一个用户的用户名和密码。
正确打开数据库的步骤1. 在VFP的命令窗口中键入“OPEN DATABASE”命令。
2. 在“打开数据库”对话框中选择要打开的数据库文件。
3. 点击“打开”按钮。
如果希望在打开数据库时显示一些特定的选项,请单击“选项”按钮,以显示特定于数据库的选项对话框,在其中进行选择。
打开数据库后,我们可以对其中的数据进行修改、查询和删除等操作。
当我们结束所有操作时,应关闭打开的数据库文件。
在此代码中,“CLOSE DATABASES”命令(注意后面加“S”)用于关闭打开的数据库文件。
总结使用VFP打开数据库是进行管理和操作数据的基本步骤。
可以使用“OPEN DATABASE”命令在VFP中轻松打开数据库。
此外,可以启用“READONLY”关键字以禁用完整读取/写入访问权限,也可以使用其他用户的访问权限,方法如上述内容所示。
vba access关闭数据库对象的方法
vba access关闭数据库对象的方法VBA(Visual Basic for Applications)是一种用于自动化任务和开发应用程序的编程语言,可以用于访问和操作各种类型的数据库。
在使用VBA访问数据库时,关闭数据库对象是非常重要的,以确保资源被正确释放,避免内存泄漏和其他潜在的问题。
在VBA中,关闭数据库对象的方法主要取决于你使用的数据库类型。
在本文中,我们将讨论如何关闭Access数据库对象。
在VBA中,可以使用两个主要的对象来访问和操作Access数据库:Application对象和Database对象。
Application对象是Access应用程序的顶层对象,它包含了Access应用程序的所有属性和方法。
Database对象则代表一个数据库对象,可以用于执行SQL查询、创建和修改表格等操作。
下面是一些常用的方法来关闭Access数据库对象:1.使用Application对象关闭数据库:```Application.Quit```这是最简单的方法之一,它会关闭当前正在运行的Access实例,并关闭与之关联的所有数据库。
2.使用Database对象关闭数据库:```Dim db As DatabaseSet db = CurrentDbdb.Close```这个方法会关闭当前活动的数据库对象,也就是当前访问的数据库。
它会断开与数据库的连接,并释放相关的资源。
3.使用DAO对象关闭数据库:```Dim db As DAO.DatabaseSet db = OpenDatabase("C:\Path\To\Your\Database.accdb") db.Close```这个方法使用了DAO(Data Access Objects)库中的OpenDatabase方法打开数据库,并使用Close方法关闭数据库。
通过指定数据库的路径和文件名来打开特定的数据库。
无论你选择哪种方法,关闭Access数据库对象是很重要的,确保释放资源和维护系统性能。
二级VF主要知识点汇总
二级VF主要知识点汇总※注意上机考试的时候尽量避免跳题做,最好由基本到综合逐一作完,因为上级题由简单到复杂都是有联系的。
※题目作完后要到自己的考生文件夹下检查是否有相应的文件产生。
※如果关闭了VF,再重新打开VF,需要用 SET DEFAULT TO C:\WEXM\20100001重新定义默认存储路径。
以下总结为常见知识点,更多小知识点希望在作题练习时,用心记忆。
1.文件类型(文件的扩展名,例如数据表文件为“student.dbf”)2. 命令关于表文件:1)创建表文件用“CREAT 表名”2)打开表“USE 表名”3)修改表文件用“MODIFY STRUCTURE”打开表设计器4)关闭表“USE”,就是打开空白,即关闭当前表5)指针定位“GOTO/GO 位置”,将指针定位到第几条记录上,以便修改或删除等操作。
6)移动指针“SKIP 数字”,以当前位置为基准向后跳几步。
7)查找“LOCA TE FOR <条件语句>”8)继续查找“CONTINUE”9)逻辑删除“DELETE FOR <条件语句>”,如果不加FOR条件仅对当前记录做删除标记。
10)物理删除“PACK”,永久删除加删除标记的所有记录;“ZAP”永久删除所有记录。
11)替换数据“REPLACE FOR”,对记录内容进行替换(修改)。
12)追加记录“APPEND FROM <数据源>”※记录内容严格区分大小写:切记如果是字符类型的值,在命令中必须用英文引号引上。
※有效性规则:包含“规则”、“信息”、“默认”三项。
“规则”与“默认”如果填的内容是字符型需对字符型加引号,如果是数值则无需引号。
“信息”所填加的内容无论什么类型都无需填加引号。
3. 索引索引有四种:主索引,普通索引,唯一索引,候选索引建立普通索引:index on 字段tag 索引名建立候选索引:index on 字段tag 索引名candidate索引参照完整性:“级联”,即一个表变更,另一个表也随着变更。
1-精选VFP常见编程实例-答案
精选VFP常见编程实例-答案1、1-100的累加求1到100的累加值CLEARs=0i=1DO WHILE i<=100s=s+ii=i+1 &&一定记住先累加后循环ENDDOsRETURN2、阶乘求5的阶乘CLEARj=1i=1DO WHILE i<=5j=j*ii=i+1ENDDOjRETURN3、求阶乘和求1至5的阶乘和CLEARs=0i=1j=1DO WHILE i<=5j=j*is=s+ji=i+1ENDDOsRETURN4、条件定位查询定位记录指针在赵伟上CLEARUSE 学生LOCATE FOR 姓名="赵伟"IF FOUND()DISPLAYELSECANCELENDIFCONTINUE5、用scan语句查询定位用scan语句查询定位记录在赵伟上CLEARSCAN FOR 姓名="赵伟"DISPLAYENDSCANRETURN6、用scan语句扫描符合条件的记录,并显示出来把年龄小于30岁的人显示出来CLEARSCAN FOR 年龄<30DISPLAYENDSCANRETURN7、查找男性职工查找男性职工CLEARLOCATE FOR 性别="男"DO WHILE FOUND()DISPLAYCONTINUEENDDORETURN查找男性职工CLEARLOCATE FOR 性别="男"DO WHILE NOT EOF()DISPLAYCONTINUEENDDORETURN查找男性职工CLEARUSE 职员基本信息表LOCATE FOR 性别="男"DO WHILE .t.IF FOUND() thenDISPLAYELSE&&记住最后一个ELSE语句后面不需要条件表达式CANCELENDIFCONTINUEENDDO查找男性职工set talk offclearopen database 家庭成员管理.dbcuse stu.dbfscan for not eof()if xb="女"skipelsedisplayskipendifendscanclose databaseuseset talk onreturn8、新值换旧值有一对新生的兔子,从第三个月开始,每个月出生一对兔子,请问到第十二个月共出生多少对兔子?clearstore 1 to a,bi=3do while i<=12c=a+ba=bb=ci=i+1enddo"一年共出生兔子:",creturn9、多位整数各个位数相加CLEARs=0input "请输入一个多位整数:" to aDO WHILE a<>0s=s+MOD(a,10) &&将a取余正好是个位上的数a=INT(a/10) &&将a除10取整正好是除个位之后的数ENDDO"这个整数的各个位数之和是:",sRETURN10、找100-999之间的“水仙花数”CLEARFOR i=100 TO 999a=INT(i/100)b=INT((i-100*a)/10)c=i-INT(i/10)*10IF i=a^3+b^3+c^3?iENDIFENDFORRETURN11、判断一个大于3的数是否为素数CLEARinput "请输入一个数(>=3):" to sf=0i=2DO WHILE i<=INT(SQRT(s))IF MOD(s,i)<>0i=i+1LOOPELSEf=1EXITENDIFENDDOIF f=0?str(s,3)+"是素数"ELSE f=1&&这个表达式可有可无,为了省事完全省略也可以。
全国计算机二级-VF复习命令
3thisform.grid1.recordsource="sele 零件名,颜色,重量from 供应,零件where 供应.零件号=; 零件.零件号and 工程号='JC11' into cursor aa "5(1)mainform.grid1.recordsourcetype=0mainform.grid1.recordsource="课程"(2)open database 学生选课mainform.grid1.recordsourcetype=0mainform.grid1.recordsource="xkview"(3)report form xkrepo preview7if thisform.myopgroup.value=1thisform.grid1.recordsource="sele * from 账户where 钞汇标志='现钞' into cursor aa"elsethisform.grid1.recordsource="sele * from 账户where 钞汇标志='现汇' into cursor bb"endif8update cj set 学分=0update cj set 学分=学分+2 where 语文>=60update cj set 学分=学分+3 where 数学>=60update cj set 学分=学分+4 where 英语>=60sele * from cj order by 学分desc,学号into table temp10do caseCASE THISFORM.OPTIONGROUP1.V ALUE=1THISFORM.TEXT3.V ALUE=THISFORM.TEXT1.V ALUE+THISFORM.TEXT2.V ALUE CASE THISFORM.OPTIONGROUP1.V ALUE=2THISFORM.TEXT3.V ALUE=THISFORM.TEXT1.V ALUE-THISFORM.TEXT2.V ALUE CASE THISFORM.OPTIONGROUP1.V ALUE=3THISFORM.TEXT3.V ALUE=THISFORM.TEXT1.V ALUE*THISFORM.TEXT2.V ALUE CASE THISFORM.OPTIONGROUP1.V ALUE=4THISFORM.TEXT3.V ALUE=THISFORM.TEXT1.V ALUE/THISFORM.TEXT2.V ALUE ENDCASE11sele count(学号) as 选课人数from 选课,课程;where 课程名称=allt(thisform.list1.value) and 选课.课程号=课程.课程号; into table allt(thisform.list1.value)12sele 民族,avg(语文)as 语文平均分,avg(数学)as 数学平均分;from xs,cj where xs.学号=cj.学号and 民族="汉";into array asele 民族,avg(语文)as 语文平均分,avg(数学)as 数学平均分;from xs,cj where xs.学号=cj.学号and 民族!="汉";into array binsert into newcj from array ainsert into newcj from array bupdate newcj set 民族="其他" where 民族!="汉"13(1)sele 国家名称,count(名次) as 奖牌总数;from 国家,获奖牌情况where 国家.国家代码=获奖牌情况.国家代码; group by 获奖牌情况.国家代码order by 奖牌总数desc,国家名称;into table 临时奖牌榜14do casecase thisform.check1.value=1 and thisform.check2.value=1if thisform.optiongroup1.value=1sele 教师号,姓名,系名,课程号,工资from 教师,院系;where 教师.系号=院系.系号order by 教师号into table bothelsesele 教师号,姓名,系名,课程号,工资from 教师,院系;where 教师.系号=院系.系号order by 教师号desc into table both endifcase thisform.check1.value=1 and thisform.check2.value=0if thisform.optiongroup1.value=1sele 教师号,姓名,系名,课程号from 教师,院系;where 教师.系号=院系.系号order by 教师号into table otherxmelsesele 教师号,姓名,系名,课程号from 教师,院系;where 教师.系号=院系.系号order by 教师号desc into table otherxm endifcase thisform.check1.value=0 and thisform.check2.value=1if thisform.optiongroup1.value=1sele 教师号,姓名,工资,课程号from 教师,院系;where 教师.系号=院系.系号order by 教师号into table othergzelsesele 教师号,姓名,工资,课程号from 教师,院系;where 教师.系号=院系.系号order by 教师号desc into table othergzendifendcase15sele 会员编号,sum(单价*数量) as 总金额;from cbs where 销售日期<=date();group by 会员编号into cursor aado while not eof()do casecase aa.总金额>=20000update css set 会员类型="钻石卡" where 会员编号=aa.会员编号case aa.总金额>=10000 and aa.总金额<20000update css set 会员类型="金卡" where 会员编号=aa.会员编号case aa.总金额>=5000 and aa.总金额<10000update css set 会员类型="银卡" where 会员编号=aa.会员编号case aa.总金额<5000update css set 会员类型="普通卡" where 会员编号=aa.会员编号endcaseskipenddo16thisform.grid1.recordsource="sele 土地号,地名,面积,树种号,蓄面积,承包年份; from ctr where 户主号=allt(thisform.text1.value) into cursor aa"sele 户名,年龄,性别,住址from cbs where 户主号=allt(thisform.text1.value); into array arrthisform.text2.value=arr(1)thisform.text3.value=arr(2)thisform.text4.value=arr(3)thisform.text5.value=arr(4)17sele 住宿.客户号,身份证号,客户名,工作单位,客房.客房号,等级名,房价;from 房价,客房,住宿,客户;where 房价.等级号=客房.等级号and 客房.客房号=住宿.客房号and;住宿.客户号=客户.客户号and 退房日期>=thisform.text1.value;order by 房价desc into table tftable18sele 姓名,性别from employee where ;职工号=allt(thisform.text1.value) into array aaThisform.Text2.Value=a(1)Thisform.Text3.Value=a(2)thisform.grdorders.recordsource=";select * from orders where 职工号=alltrim(thisform.text1.value);into cursor temp"19sele 教师号,姓名,工资from 教师,院系where 教师.系号=院系.系号;and 系名=allt(thisform.list1.value) order by 教师号;into table allt(thisform.list1.value)20THISFORM.GRID1.RECORDSOURCE="SELECT 商品代码.*, 一季度利润,二季度利润,三季度利润, 四季度利润;FROM 商品代码,销售where 商品代码.商品号= 销售.商品号and;部门号=allt(THISFORM.TEXT1.V ALUE) and 年份=ALLT(THISFORM.TEXT2.V ALUE);into table 'bm'+allt(thisform.text1.value)"21“调料”菜单命令的过程代码:MAINFORM. GRID1.RECORDSOURCE="select 产品.* from 产品,产品类型where 产品.分类编号=产品类型.分类编号;and 分类名='调料' into cursor csr1"“小家电”菜单命令的过程代码:MAINFORM. GRID1.RECORDSOURCE="select 产品.* from 产品,产品类型where 产品.分类编号=产品类型.分类编号;and 分类名='小家电' into cursor csr1" 。
VFP中程序控制结构
vf程序设计基础教程知识点总结
vf程序设计基础教程知识点总结VF基础知识点总结第一章数据库基础知识1.基本概念:数据库、数据管理经历的五个阶段、数据库管理系统、数据库应用系统、数据库管理员。
2.数据库系统的组成:硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理员和用户。
其中数据库管理系统是数据库系统的核心。
3.数据库系统的特点:(1)实现数据共享,减少数据冗余(2)采用特定的数据模型(3)具有较高的数据独立性(4)有统一的数据控制功能4.数据模型:实体间联系的种类:一对一、一对多、多对多。
5.数据模型的三种类型:层次模型、网状模型和关系模型。
6.关系数据库基本术语:关系、元组、属性、域、关键字、外部关键字。
关系的特点7.关系运算:传统的集合运算(并、差、交)另一类是专门的关系运算(选择、投影、连接、等值连接、自然连接)8.VF两种运行方式:菜单方式和交互式方式(命令方式和程序方式)9.所谓项目是指文件、数据、文档和对象的集合,其扩展名为 .pjx。
10.项目管理器包含的选项卡:全部、数据、文档、类、代码、其他11.项目管理器各选项卡所包含的文件有哪些?12.项目管理器可以完成对文件的新建、添加、移去、删除,但不包含重命名。
第二章常量、字符1.常量的种类:数值型、字符型、日期型、日期时间型和逻辑型在书写字符型、日期型、日期时间型和逻辑型需要加定界符2.变量是值能够随时改变的量。
变量名的命名规则:以字母、汉字和下划线开头,后接字母、数字、汉字和下划线构成,不包含有空格3.当内存变量与字段变量同名时,要访问内存变量需加前缀M.(或M-),例如M.姓名4.数组定义的格式 DIMENSION 数组名()、创建数组后,系统自动给每个数组元素赋以逻辑假.F.5.表达式的类型:数值表达式、字符表达式、日期时间表达式和逻辑表达式。
每个表达式的运算规则与结果。
6.运算符 $ 称为子串包含测试,格式字符表达式1 $ 字符表达式27.SET EXACT ON │OFF 的区别与含义。
VFP代码整理
VFP代码1.数据库建立create database <数据库名>2.数据库打开open database <数据库名>3.指定当前数据库set database to <数据库名>4.修改数据库modify database <数据库名>5.关闭数据库close database (关闭当前数据库)或close all (关闭所有已打开的数据库)6.删除数据库delete database <数据库名> [deletetables](是否删除数据库里的表)7.建立数据表结构create8.记录的输入append9.修改数据表结构modify structure10.显示数据表结构list structure 或display structure11.打开数据表文件use <表文件名>12.记录指针的定位go 记录号skip nlocate for <条件>13.状态测试函数recno():检测当前记录的记录号bof():检测记录指针是否指向表文件头eof():检测记录指针是否指向表文件尾found():检测locate命令执行后,是否有满足条件的纪录14.查看数据表内容list、display或browse15.修改记录browse、change、edit或replace [范围] <字段1> with <表达式1> [additive] [,<字段2> with <表达式2> [additive] …] [for|while <条件>]或update <表名> set <字段1=表达式1>[,<字段2=表达式2>…][while <条件表达式>]16.插入记录insert17.记录的逻辑删除与恢复delete recall18.记录的物理删除pack zap(全部记录删除)19.排序sort to <新表文件名> on <字段名1>[/A][/D][/C][,<字段名2>[/A][/D][/C]…][<范围>][fields<字段表名>][for|while<条件表达式>]20.单索引index on <关键字表达式> to <单索引文件名> [additive]21.复合索引index on <关键字表达式> tag <标识名> [for|while<条件表达式>] [ascending(升序)|descending(降序)] [unique(建立唯一索引)|candidate(建立候选索引)]22.设置当前(主控)索引set order to <索引序号>|[tag] <索引标识名>[ascending|descending]23.删除索引delete tag <索引标识名> 或delete tag all24.重新索引reindex25.将自由表添加为数据库表add table <自由表名>26.从数据库中移去或删除数据表remove table <自由表名> [delete]27.制定工作区select<工作区号>|<工作区别名>28.多工作区中表文件的打开与关闭use [<表文件名>] [in <工作区号>] [again] [alias <别名>]29.建立临时关系set relation to <关系表达式> into <工作区号|别名>(在主表工作区中运行)30.解除临时关系 select <工作区号|别名>set relation to31.表定义 create table <表名> [name <长表名>] [free](<字段名1><类型>[(<字段宽度>[,<小数位数>])][null|not null] [default<表达式默认值>][primary key|unique][references <子表表名>[tag<标识名>]][,<字段名2>…][,foreign key <表达式> tag <标识名> references <父表表名> [tag <标识名>]32.添加新字段 alter table <表名>add [column[<字段名><字段类型>][<长度>{,<小数位数>}][null|not null][default <表达式默认值>]33.修改表的字段名 alter table <表名>alter [column] <字段名1> [null|not null][set default <表达式>](修改默认值)[rename column <字段名2> to <字段名3>](字段改名)34.删除表中的字段、主索引 alter table <表名>[drop [column [<字段名>][drop primary key]]]35.删除表 drop table [<数据库名>.]<表名>36.插入记录命令 insert into <表名> [(字段名1[,字段名2,…])] values(表达式1[,表达式2,…]) 或 insert into <表名> from array <数组名>或 insert into <表名> from memvar (从内存中插入)37.删除记录delete from <表名>[where <条件1>[and|or <条件2>]]38.SQL 查询命令select [all|distinct] [<别名>.]<表达式>[as <列名>],…from [<数据库名>!]表名[[[inner|left|outer]|right|outer]|full||outer]join<数据库名!><表名>[on <连接条件>][[into <目标>]|[to file <文件名>|to printer|to screen]where <连接条件>[group by <分组表达式>][having <筛选条件>][union [all] <下一个查询命令>][order by <排序表达式>[asc|desc]][top <数值表达式>[precent]]声明:所引用的代码和模版等权利归原作者拥有。
OpenDatabase方法
OpenDatabase方法在传统的关系型数据库中,OpenDatabase方法通常用于连接到数据库服务器。
用户可以使用该方法指定数据库的位置,例如主机名、端口号、数据库名称等,以及必要的身份验证信息,如用户名和密码。
例如,在Python中,我们可以使用psycopg2库来连接到PostgreSQL数据库:```pythonimport psycopg2def open_database(host, port, database, user, password):#建立数据库连接conn = psycopg2.connecthost=host,port=port,database=database,user=user,password=passwordreturn conn#示例用法conn = open_database('localhost', 5432, 'mydatabase','myuser', 'mypassword')```在非关系型数据库中,OpenDatabase方法的行为可能会有所不同。
通常情况下,我们会使用适当的驱动程序和设置来连接到相应的数据库,并返回一个与数据库进行交互的对象。
例如,在MongoDB中,我们可以使用pymongo库来连接到数据库:```pythonfrom pymongo import MongoClientdef open_database(host, port, username, password, database): #建立数据库连接db = client[database]return db#示例用法```除了连接到数据库,OpenDatabase方法还可以在许多情况下执行其他任务,如创建或加载数据库文件、指定编码方式、连接到远程数据库服务器等。
需要注意的是,OpenDatabase方法在使用完后应当及时关闭数据库连接,以避免资源泄漏。
VF中的语句
VF中的语句DB:数据库DBMS:数据库管理系统DBS:数据库系统QUIT:退出VF系统CLEAR:清除主窗口内容CREA TE DA TABASE[<数据库文件名>]:建立数据库MODIFY DA TABASE:打开数据库设计器OPEN DA TABASE: 打开数据库NOUPDA TE:指定以只读方式打开数据库EXCLUSIVE:以独占方式打开数据库:SHARED以共享方式打开数据库SET DA TABASE TO[数据库文件名]:指定一个已经打开的数据库为当前数据库.DELETE DA TABASE[数据库文件名]:删除数据库CLOSE DA TABASE:关闭数据库CLOSE ALL:关闭所有对象CREA TE<表名>:建立表APPEND:在表尾追加记录;INSERT在任意位置追加记录.USE<表名>:表的打开MODIFY STRUCTURE:修改表的结构BROWSE,EDIT:浏览表的内容(编辑,浏览)LIST:显示表的全部内容;DISPLA Y:显示当前一条记录FIELDS<字段名表>:指定要显示的字段,不显示备注型和通用型字段. GO<记录号>:直接定位SKIP[<记录数>]:相对定位.向前或向后移动若干条位置.可正可负. LOCAL[范围]FOR<条件表达式>:查询定位记录,结果是第一条满足条件的记录,想查询下一条用CONTINUE命令.DELETE[范围][FOR<条件表达式>]:逻辑删除RECALL[范围][FOR<条件表达式>]:记录的恢复.PACK:物理删除记录;ZAP:物理删除全部记录.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
select 'desc '||tname from tab where tabtype='SYNONYM';
查询当前用户下所有表的记录数
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
15、知道控制文件中的所有数据文件(DATAFILE),表空间(TABLESPACE),和重做日志(REDO LOG)所使用的记录情况
SELECT type, record_size, records_total, records_used
FROM v$controlfile_record_section
SQL> set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL> "
SQL> set linesize 1000 --设置屏幕显示行宽,默认100
SQL> set autocommit ON --设置是否自动提交,默认为OFF
SQL> set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
SQL> set heading off --禁止输出列标题,默认值为ON
SQL> set feedback off --禁止显示最后一行的计数反馈信息,默认值为"对6个或更多的记录,回送ON"
SQL> set timing on --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
--可以用define命令来设置
SQL> select &a from dual;
原值 1: select &a from dual
新值 1: select '20000101 12:01:01' from dual
'2000010112:01:01
-----------------
9、知道每个表空间存在哪个磁盘上以及文件的名字等信息
SELECT file_id, file_name, tablespace_name, status, bytes from dba_data_files;
select file_name, tablespace_name from dba_data_files;
select GROUP#,MEMBER from v$logfile;
6、获取oracle的每个重做日志(成员)文件所存放的具体位置
select * from v$logfile;
7、知道ORACLE数据库的备份和恢复策略和归档文件的具体位置
archive log list
把所有符合条件的表的select权限授予为public
select 'grant select on '||table_name||' to public;' from user_tables where 《条件》;
删除用户下各种对象
select 'drop '||tabtype||' '||tname from tab;
14、如果您的显示被分成了两部分,您需要使用类似于set pagesize 100的SQL*Plus命令先格式化输出。有关的格式化输出命令有以下这些:
record_size: 为每个记录的字节数。
records_total:为该段所分配的记录个数。
records_used:为该段所使用的记录个数。
d、使用操作系统的复制命令将现有控制文件复制到指定位置。
e、重新启动Oracle数据库。
f、利用数据字典v$controlfile来验证新的控制文件名字是否正确。
g、如果有误重做上述操作,如果无误删除无用的旧控制文件。
注:如果您使用了服务器初始化参数文件(SPFILE),您不能关闭Oracle数据库而且应该在第3步使用alter system set control_files的Oracle命令来改变控制文件的位置。
------------------------------- -------- ----
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
SQL> define a = '''20000101 12:01:01''' --定义局部变量,如果想用一个类似在各种显示中所包括的回车那样的常量,
select * from v$archived
select * from v$archived_log
select * from v$backup
select * from v$database
select * from v$datafile
select * from v$log
select * from v$logfile
select * from v$loghist
select * from v$tablespace
select * from v$tempfile
12、控制文件由两大部份组成:可重用的部份和不可重用的部分。可重用的部分的大小可用CONTROL_FILE_RECORD_KEEP_TIME参数来控制,该参数的默认值为7天,即可重用的部份的内容保留7天,一周之后这部份的 内容可能被覆盖。可重用的部份是供恢复管理器来使用的,这部份的内容可以自动扩展。Oracle数据库管理员可以使用CREAT DATABASE或CREAT CONTROLFILE语句中的下列关键字(参数)来间接影响不可重用的 部份的大小:
MAXDATAFILES
MAXINSTANCES
MAXLOGFILES
MAXLOGHISTORY
MAXLOGMEMBERS
13、查看控制文件的配置
SELECT type, record_size, records_total, records_used FROM v$controlfile_record_section;
删除符合条件用户
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速编译所有视图
----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编 Nhomakorabea一遍,
----因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。
1、得到数据库名和创建日期
SELECT name, created, log_mode, open_mode FROM v$database;
2、ORACLE数据库的计算机的主机名,ORACLE数据库的实例名及ORACLE数据库管理系统的版本信息
SELECT host_name, instance_name, version FROMv$instance;
alter database backup controlfile to 'D:\backup\control.bak';
19、您也可将备份到一个追踪文件中。该追踪文件包含有重建控制文件所需的SQL语句。可使用以下SQL语句来产生这一追踪文件:
alter database backup controlfile to trace;
SQL> alter system set control_files =
'D:\Disk3\CONTROL01.CTL',
'D:\Disk6\CONTROL02.CTL',
'D:\Disk9\CONTROL03.CTL' SCOPE=SPFILE;
18、由于控制文件是一个极其种要的文件,除了以上所说的将控制文件的多个副本存在不同的硬盘上的保护措施外,在数据库的结构变化之后,您应立即对控制文件进行备份。可以用Oracle命令来对控制文件进行 备份:
20000101 12:01:01
问题提出:
用户需要对数据库用户下的每一张表都执行一个相同的SQL操作,这时,一遍、一遍的键入SQL语句是很麻烦的
实现方法:
SQL> set heading off --禁止输出列标题
SQL> set feedback off --禁止显示最后一行的计数反馈信息
SQL> set arraysize 1 --默认为15
SQL> set long 1000 --默认为80
说明:
long值默认为80,设置1000是为了显示更多的内容,因为很多数据字典视图中用到了long数据类型,如:
SQL> desc user_views
列名 可空值否 类型
20、正常关闭oracle命令
shutdown immediate
show和set命令是两条用于维护SQL*Plus系统变量的命令
SQL> show all --查看所有68个系统变量值
SQL> show user --显示当前连接用户
SQL> show error --显示错误