VF学习笔记完整版教学内容.docx
《VF学习笔记完整版教学内容.docx》由会员分享,可在线阅读,更多相关《VF学习笔记完整版教学内容.docx(20页珍藏版)》请在冰豆网上搜索。
VF学习笔记完整版教学内容
*VF学习笔记*
章节.Ⅰ
1.选择查询:
“标记”
select*from个人账号记录where名称="工商银行"
2.改变主窗口字体大小
命令:
_screen.fontsize=25
3.清除主荧幕内容
命令:
clear
4.项目建立命令:
createproject<要建立的项目文件名>
5.字符型数据
1).字符型数据输出时都必须加定界符[]、""、''<任选其一>。
定界符都必须成对输出,否者无效,如遇定界符嵌套使用,以最外成的定界符为准,期间的定界符都是字符型数据。
(定界符定义了字符型数据从哪里开始到哪里结束,其间的数据都属于字符型数据)
2).其次,VF中的汉字、数字、空格都属于字符型数据。
(字符型数据是原样输出,必须区分大小写)
*一个?
代表"输出"
两个?
?
代表"不换行输出"*
章节Ⅱ
1.表达式
①由数据、变量、函数、运算符构成的式子。
②用来计算、判断和数据的转换。
1)数值型表达式:
(其结果也是数值型的)
———————————————————————
优先级运算符说明
1()形成表达式内的子表达式
2**或^乘方运算
3*/%乘除运算、求余运算
4+-加减运算
----------------------------------------------
1@求余运算%和取余函数MOD()的作用相同,结果的正负号与除数一致。
2@如果余数与被除数同号就是两数相除的余数,反之则把两数相除的余数加上除数的值。
2).字符表达式
①它只有加和减两种运算。
②不管哪种运算,它的结果仍然是字符串。
③两个字符串相加,其结果就是两个字符串首尾相连。
④连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符串尾部。
示例:
"ABC"+"123"="ABC123"
3)日期时间型表达式
@计算格式没有日期+日期/日期+-日期时间/日期时间+日期时间。
————————————————————————————————————
格式结果及类型
<日期>+<天数>日期型。
指定若干天后的日期
<天数>+<日期>日期型。
指定若干天后的日期
<日期>-<天数>日期型。
指定若干天后的日期
<日期>-<日期>数值型。
两个指定日期相差的天数
<日期时间>+<秒数>日期时间型。
指定若干秒后的日期时间
<秒数>+<日期时间>日期时间型。
指定若干秒后的日期时间
<日期时间>-<秒数>日期时间型。
指定若干秒前的日期时间
<日期时间>-<日期时间>数值型。
两个指定日期时间相差的秒数
——————————————————————————————————————
4)逻辑表达式<.T.真.F.假>
①它的运算结果任然是逻辑型数据
②它只有三个运算符
a.NOT<表达式或值>:
其结果刚好与NOT后面的结果相反。
b.<表达式1>AND<表达式2>:
必须1和2的值都为真,整个AND才返回真,反之返回假。
c.<表达式1>OR<表达式2>:
只要一边为真,整个OR就返回真值,否则就返回假值。
eg:
?
11<122and34+55<11<.F.>
?
11<122and34+55>11<.T.>
?
11<122or34+55>11<.T.>
?
11<122or34+55<11<.T.>
?
not34+55<11<.T.>
?
not34+55>11<.F.>
5)关系表达式
①关系表达式也是一种逻辑表达式。
②它的结果<表达式1><关系运算符><表达式2>。
③它的运算结果任然是逻辑型数据。
所有关系运算符:
>、<、=、<>/#或!
=、<=、>=、==、$
@数值和货币的比较依据
①数值越大就越大。
②正数大于负数。
@用命令设置输出日期时间格式的命令:
setdateto
日期年份输出设置命令:
setcenturyon/off<默认两位>
@日前和日期时间的比较依据:
①越晚的日期越大,反之越小。
②日期与年龄刚好相反,日期大的年龄小。
@逻辑数据的表达依据:
.T.>.F.<真大于假>
@<字符串1>$<字符串2>
美元符号用来测试左字符串是否是右字符串的子串,如是返回真,反之为假。
我们对其定义为:
拿左边的整个字符串与右边的整个字符串做比较,只要能在右边字符串中找到一个或一
部分或一个整体与右边一模一样,左边就是右边的字符串。
eg:
?
"abcd"$"abcde"<.T.>
?
"abcd"$"abc"<.F.>
@<字符串1>=<字符串2>
等号是用来测试左边是否是右边的前缀,如是返回真,反之为假。
我们对其定义为:
拿左边字符串的最左边的一个或一部分或一个整体与右边做比较,只要与右边的整体一模一样,右边就是左边的前缀。
eg:
?
"abcd"="abcde"<.F.>
?
"abcd"="abc"<.T.>
@①数字字符的比较:
从左向右一个一个的比较数字的大小。
②字母字符的比较:
a.按拼音顺序排序(笔划):
每个大写字母大于它的小写字母,并且每个大小写字母都小于
后面的字母。
b.按机器码排序:
每个字幕的大写小于小写,并且每个字母的小写大于后面的大写。
③汉字字符的比较:
a.按拼音顺序(机器码):
比较两个汉字的拼音字母。
b.按笔划排序:
比较两个汉字的笔划数,笔划数多的就大。
*@<字符串1>==<字符串2>
必须左右两边的长度,且对应的内容完全相同时才返回真,反之为假。
*
*@setexacton时,<字符串1>=<字符串2>
①必须字符串1和2的内容相同时,且长都不相同时才返回真。
②如果长度不同,系统会自动在较短字符串的尾部补足与另一长度相同时,才返回真。
*N>C>关>逻辑。
*
章节Ⅲ
*数据库:
1)它是存放数据的一个仓库(其拓展名为.dbc)
2)建立数据库有三种方法:
①在项目中建立。
②从“新建”对话框中建立。
用命令交互建立命令:
createdatabase<数据库名>/?
打开数据库的命令:
opendatabase<数据库名>/?
修改数据库的命令(真正打开数据库设计器):
modifydatabase<数据库名>/?
关闭数据库的命令:
closeall
删除数据库命令:
deletedatabase<数据库名>/?
@如果指定的数据库存在,则直接打开该数据库;如果不存在,则自动建立并打开。
当有多个数据库打开时,制定一个数据库为当前数据库的命令:
setdatabaseto<指定数据库名>
如此命令:
setdatabaseto不指定数据库名时,此使得所打开的数据库都不是当前数据库(所有数据库其实都还没有关闭)*
*表的操作
1)VF中的表分数据库表和自由表两种。
2)表由结构和数据构成。
3)表的结构由名称、字段名、行和列构成。
4)建立表的命令:
create<表名>
use*关闭表
use<表名>*打开表
brows*浏览打开的表*
*如果建立表结构后保存过,那么再次打开表是不能直接向里面输入数据的,此时,要使用以下几种方法输入数据:
1)[表]--[追加新纪录]*快捷命令:
ctrl+y
*一次只能追加一条记录
2)[显示]--[追加方式]*一次则可以追加多条记录
使用命令:
append*
appendblank*在表的尾部增加一条空白记录*
@练习1.0
1)把供应商名含有“华”的地址改为贵阳。
使用命令:
/replace地址with"贵阳"for"华"$供应商名/。
2)把在WH2工作的员工工资提高15%。
使用命令:
/replace工资with工资+工资*0.15for仓库号
="WH2"/。
3)把职工号E3所签订的订单逻辑删除。
使用命令:
/deletefor职工号="E3"/。
4)把仓库在北京的面积增加100平方米。
使用命令:
/replace面积with面积+100for城市="北京"/。
*
*modifystructure@打开表设计器*
*在VF中,数据库和表都必须以独占的方式打开。
<打开表浏览器命令:
browse>
修改表的记录:
增加记录、删除记录、插入记录、修改记录<都只是对数据的更改>
<记录指针所在的行叫当前记录,初次打开的表,记录指针在表的第一行>
1)插入记录:
insert@在当前记录的下排插入新的记录。
insertbefore@在当前记录的上排插入新的纪录。
insertblank@在当前记录后添加一个空白行。
insertbeforeblank@在当前记录前添加一条空白记录。
*
*在VF中的物理删除基础上进行的操作:
逻辑删除:
在记录前打上删除标记。
方法:
1)直接在记录前打标记。
2)[表]--[切换删除标记]
3)ctrl+t
4)命令:
delete@把当前记录打上标记
deleteall@打所有记录都打上标记
deletefor<条件>@把满足条件的记录打上标记
恢复记录:
1)becall@恢复当前记录
2)becallall@恢复所有记录
3)becallfor<条件>@把满足条件的记录恢复
物理删除:
1)pack@把打上标记的记录彻底删除
2)zap@物理删除表中的所有记录,不删表,使用需谨慎
@也称清空表
修改记录:
<填充、替换、更新>
1)replace<要修改的字段名>with<要替换的数据>
2)replaceall<要修改的字段名>with<要替换的数据>
3)replace<要修改的字段名>with<要替换的数据>for<条件>
注:
①只把当前记录指定字段值进行修改;
②把表中只把指定字段只进行替换和修改;
③把表中指定字段值进行修改和更新。
*
*显示记录:
<只在主窗口中显示记录>
list@表中所有记录输出在主窗口
display@只把表的当前记录输出在主窗口
listfield<指定的字段名>for<满足的条件>
listoff/on@关闭/显示记录名
@练习问题:
在使用命令listoff/on@关闭/显示记录名时,好像只对list命令
的结果有效。
*
*指针定位:
1.直接定位<也称直接定位>
go[to]@N指的是记录号为N;
gotop@将指针定位到第一条记录;
gobottom@将指针定位到最后一条记录。
eg:
go3
goto4
2.相对定位
skip@针对当前记录,向下移动一行;
skipN@针对当前记录,向下移动N行;
skip-N@针对当前记录,向上移动N行;
skip-1@针对当前记录,向上移动一行.
3.查询定位
locatefor<条件>@将指针定位到满足条件的记录上
注:
a.如果没有满足条件的记录,将之镇定指向结束标识;
b.如果有多条满足条件的记录,只想满足条件的第一条记录上;
c.如果要继续指向第二满足条件的记录,用continue命令(不能独用)。
@continue命令不能单独使用,必须与locatefor<条件>连用。
@found()如果该函数返回真,则找到满足条件的记录;反之,则找不到。
*
*关于索引:
1.索引是一种排序技术。
2.索引可以提高查询速度,但会降低更新速度。
3索引是建立表与表之间联系的基础。
4.索引不能独立存在,必须依附于表。
5.索引建立后会自动声称索引档.idx(但索引档)和.cdx(复合索引档)。
6.复合索引又分为结构复合索引和非结构复合索引.
7.一个完整的索引由索引名+索引类型+索引表达式构成.
8.VF中有四种索引:
主索引、普通索引、唯一索引、候选索引。
9.建立索引属于修改表的结构,因此必须打开表设计器.
10.建立索引时就是....
@主索引:
1)只有数据库表才能建立主索引。
2)一个表只可以建一个主索引。
3)建立主索引的字段中不能出现重复值。
*
*用命令建立索引:
1)建立普通索引
indexon<索引表达式>tag<索引名>
2)建立候选索引
indexon<索引表达式>tag<索引名>candidate
3)建立唯一索引
indexon<索引表达式>tag<索引名>unique
@在VF中没有建立主索引的命令(其排序方式都是默认升序),如要建
立降序索引在其后加desc。
@*
*其他命令:
删除指定索引:
deletetag<索引名>
删除所有索引:
deletetagall
使索引生效:
setorderto<索引名>
setorderto关闭当前索引,使之无效。
(并未生效)
注:
用命令建索引会立即生效,手动建立索引不会立即生效,必须使用
命令才会生效。
*
*数据的完整性包括实体完整性、域完整性、参照完整性。
1.实体完整性:
为表中建立主索引就是保证实体的完整性。
2.域完整性:
保证字段取值范围的完整性。
①规则:
它必须是一个逻辑或关系表达式,以返回真或假。
②信息:
它必须是一个字符串,内容用以提示用户。
③默认值:
它是提前预订好的数据,用以节省用户输入的次数,但它的
内型必须与当前字段一致。
注:
信息必须在规则的前提下才能显示。
3.参照完整性必须基于两张表。
设置参照完整性之前必须为两张表建立永久联系的步骤:
a.必须具有公共字段的两张表;
b.通过公共字段确定哪张是父表哪张是子表;
c.为父表创建主索引,为子表创建普通索引;
d.通过主索引名向普通索引方向拖出一条线即可.
@一对多联系,物理联系@
@无重复记录为父表,有重复记录为子表@
@参照完整性包括更新规则、删除规则、插入规则
①更新规则:
级联:
把父表中记录修改,字表中对应的记录会自动更新
限制:
若子表中有相关的记录,则禁止修改父表中的连接字段值
(级联)删除:
把父表中记录删除,字表中对应的记录会自动删除@*
@一个自由表只能添加到一个数据库,自由表和数据库表之间可以自由转换@
@在自由表中不能建立主索引,不能设置域完整性,参照完整性,永久联系,建立自由表示不能打开任何数据库@
@把自由表加入数据库用命令:
ADDTABLE<表名>
把数据库表移出则用命令:
BEMOVETABLE<表名>[DELETE(相当于删除表)]@
*多工作区的使用
1.VF中有32767个工作区。
2.每个工作区的区号分别是1~32767,别名分别是A~J(1~10),W11~W32767(11~32767)。
3.VF默认总是在最小工作区工作(即A工作区)
4.CLOSEALL是关闭所有档,并返回到A工作区。
5.1个表只能在一个工作区打开(档正在使用)
SELECTN@.N是指工作区的区号或别名切换指定的工作区。
SELECT0@.切换到当前最小工作区。
USE<表名>IN<工作区号>@在指定工作区打开表。
SELECT<>@它是测试当前工作区号的函数。
6.表与工作区之间的关系:
临时关联(逻辑联系)
a.该联系是临时存在的,VF一旦关闭就会自动消失。
b.只用在子表中创建普通索引,然后再使用命令SETRELAT/ONTO<父表索引名>
INTO<子表所在工作区号或别名>即可建立。
章节.Ⅳ
*SQL语句有查询、定义、操纵、控制的功能。
1.查询功能是SQL语句的核心
2.定义功能是对表的结构进行操作。
3.SQL查询命令:
SELECT<要查询的字段/*>FROM<表名>WHERE<筛选条件>
@SELECT相当于投影运算,它只能决定列的多少,对行的多少无影响@
@WHERE相当于选择运算,它只能对行进行筛选,对列无影响@
4.WHERE<字段名>BETWEEN<小数>AND<大数>
WHERE<字段名>LIKE"匹配的字符串"
SELECT*FROM供应商表WHERE供应商名LIKE"%华"<错>
SELECT*FROM供应商表WHERE供应商名LIKE"%华%"<对>
@命令SELECT*FROM供应商表WHERE供应商名="华"等同于SELECT*FROM供应商
表WHERE供应商名LIKE"华%"@
@命令SELECT*FROM供应商表WHERE供应商名LIKE"_华%"是查询第二个字是华的@
@命令SELECT*FROM订购单表WHERE供应商名IS[NOT]NULL查询非空供应商名的信息@
@SELECT*FROM职工表WHERE职工工资ORDERBY<排序字段名>[DESC]升序排列[降序]@
@ORDERBY是对最终的查询结果进行排序,不可以在查询中使用该短语。
@
*若取最前几项:
SELECTTOPN[PERCENT]...
*SQL的并运算
1.它支持的唯一并运算是UNION
2.两条SQL语句经UNION连接后就是一条命令。
3.SELECT..FROM..UNION..SELECT..FROM..两个SELECT后面的字段个数和类型必须一致。
@FROM<表1>.<表2>
a.当FROM后面来自多张表时,必须在WHERE后面写出连接条件。
表1.公共字段=表2.公共字段
b.当SELECT语句中不管在哪个位置出现公共字段时,都必须加以限定。
[表名.公共字段]@
@给长命令中的表定义别名:
FROM供应ASA,零件ASB或FROM供应A,零件B@
@SELECT字段,字段AVG(字段)平均字段FROM表1A,表2BWHERE;
A.公共字段B.公共字段ORDERBY字段DESC,字段2@
@一旦在命令中给表定义了别名,在整条命令中都必须使用别名。
@
@超链接:
[INNER]JOIN..ON
1.该命令FROM表1JOIN表2ON<连接条件>必须连用。
2.他等价于链接查询。
3.ON后面只能写一个连接条件,如果有筛选条件仍要用WHERE引导。
4.当FROM后面有多张表时,ON的顺序要与FROM?
?
?
FROM表1LEFTJOIN表2ON<连接条件>
@SELECT..FROM..WHERE..GROUPBY<要分组的字段>[HAVING<二次筛选条件>]ORDERBY<要排序的字段>INTOTABLE..
SELECT后可接:
TOPN,DISTINCT..AVG(),SUM(),COUNT(),MAX(),MIN().
FROM后可接:
表1,表2..表1JOIN表2[视图]
WHERE:
连接条件,筛选条件[ON筛选条件]
GROUPBY<要分组的字段>:
把指定的字段里的数据按相同的分一组
HAVING<二次筛选条件>:
1.HAVING只能对结果表进行二次筛选,WHERE只是对原始表进行初选。
2.HAVING不能独用,须于GROUPBY连用。
@命令中不能识别的短语或关键字:
命令单词错误,或标点错误。
*操作功能
INSERTINTO<表名>(字段1,字段2)VALUES(数据1,数据2)
@一次向表的尾部增加一条新的纪录<无需打开表>.
@字段个数和类型必须与数据个数和类型一致.
INSERTINTO<表名>VALUES(数据1,数据2)
@默认向表中的各个字段依次填充数据.
INSERTINTO<表名>VALUES(数据1,数据2)
@把数组中的数据追加到表中.
*修改数据
第三章中我们用REPLACE[ALL]<被修改字段名>WITH<要替换的数据>[FOR<条件>]
本章中我们用:
UPDATE<表名>SET<被修改的字段名>=<新数据>[WHERE<条件>]
@如果不加WHERE条件是把指定字段的所有值进行修改。
*删除数据
DELETE[ALL][FOR<条件>]@第三张用的命令
DELETEFROM<表名>[WHERE<条件>]@第四章用的命令
*定义功能
CREATETABLE<表名>[FREE];(字段1类型<宽度>;PBIMARYKEY@给该字段建立主索引,;字段2类型(宽度)[NOT@不允许]NULL@空值,;字段3类型(宽度)CHECK<规则>ERROR"出错信息"DEFAULT<默认值>)
@1.类型必须用大写英文。
2.FREE建立的一定是自由表,不管当前有无数据库打开。
*表的删除
用SQL语句删除表是物理删除。
其命令为:
DEOPTABLE<表名>
**增加字段,改字段名,插入字段,删除字段,建立索引,删除索引,建立规则。
1.增加字段:
ALTERTABLE<表名>ADD新字段类型(宽度)
2.删除字段:
ALTERTABLE<表名>DROPCOLUMN字段名
3.修改字段名:
ALTERTABLE<表名>RENAMECOLUMN<原字段>TO<新字段>
4.改字段宽度:
ALTERTABLE<表名>ALETR<字段名><字段(宽度)>
5.建立主索引:
ALTERTABLE<表名>ADDPRIMARYKEY<索引表达式>TAG<索引名>
6.建立候选索引:
ALTERTABLE<表名>ADDUNIQUE<索引表达式>TAG<索引名>
@没有建立普通索引的命令
7.删除索引
ALTERTABLE<表名>DROPUNIQUE/PRIMARYKEYTAG<索引名>
8.设置<增加>规则信息,默认值:
ALTERTABLE<表名>ALETR<字段名>SETCHECK规则ERROR"信息"
ALTERTABLE<表名>ALETR<字段名>SETDEFAULT默认值
9.删除规则,信息,默认值:
ALTERTABLE<表名>ALETR<字段名>DROPCHECKALTER字段DROPDEFAULT
**视图
1.视图派生于表,但其本身是一张虚拟的表,所以它依赖于表,不能单独存在。
2.视图只能存放在数据库中,所以在建立视图时必须先打开数据