数据库命令函数及程序语句大全_第1页
数据库命令函数及程序语句大全_第2页
数据库命令函数及程序语句大全_第3页
数据库命令函数及程序语句大全_第4页
数据库命令函数及程序语句大全_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库命令、函数及程序语句大全VFP命令是一种实现对数据库系统进行操作的动词或短语。VFP命令可在VFP命令窗口中单独 运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。¨         VFP常用命令分类表类别命令建立文件类CREATE,MODIFY,COPY,SAVE等数据库操作类USE,CLOSE,COPY,MODIFY STRUCTURE等数据编辑类BROWSE,EDIT,CHANG,REPLACE,UPDATE等记录指针

2、操作类GOTO,LOCATE,SEEK,FIND,SKIP等记录操作类APPEND,DELETE,INSERT等数据显示类BROWSE,LIST,DISPLAY等数据统计类SUM,COUNT,AVERAGE,TOTAL等存变量操作类ACCEPT,INPUT,READ,SAVE等程序控制类DO,DO WHILEENDDO,IFENDIF等系统设置类SET TALK,SET DEFAULT TO等¨         命令格式  VFP命令一般由命令动词和控制 短语构成。一般格式:命令动词F

3、ROM<源文件>TO<目标 文件>记录范围FOR/WHILE<条件>FIELDS<字段名表>    表示可选,<>表示必选, / 表示或选    例如:(1)APPEND FROM C:RSDA.DBF FOR 基本工资>100 FIELDS 编号,姓名,职称,基本工资。    从C:RSDA.DBF 表中把基本工资大于100元的记录添加到当前表添加字段为:编号,姓名,职称,基本工资。(2)COUNT FOR 职称="高工&quo

4、t;TO GG 统计高工的记录数到内存变量GG。   控制短语规定了对数据库操作的限制条件:1.指向输入输出目标FROM/TO APPEND FROM,COPY FILE TO <目标文件>2.限制记录范围(SCOPE)ALL 所有记录NEXT<n> 本记录后的第几个记录 RECORD<1> 第1个记录REST 当前记录之后所有记录3.选择字段FIELDS<字段表>选择输入/输出的字段。4.限制条件FOR/WHILE<条件>FOR 基本工资>100 .AND.基本工资<200¨ &#

5、160;       命令格式规则命令的行为单位,一行书写不完,在未尾加上“;”第二行接着写。必须以命令动词开头,动词后的短语顺序不限。命令中大小写字母等效。命令动词和关键字可以只写前4个字符。不得用命令动词或关键字作为自定义变量、 函数、程序名。一.表结构的操作1创建表结构命令1:CREATE 路径表名例子:在A盘创建GZ2数据表。CREATE A:GZ2命令2:CREATE 新表名 FROM 旧表名例子:在A盘由GZ1创建GZ3数据表。CREATE A:GZ3 FROM A:GZ1命令3:COPY STRUCTRUE TO 路径表

6、名例子:在D盘生成一个与正在使用的表结构相同的新表文件MYCOPY STRUCTRUE TO D:MY2表结构的显示命令:LIST STRUCTURE      DISPLAY STRUCTURE例子:显示当前数据表在结构。LIST STRUCTURE3表结构的修改命令:MODIFY STRUCTURE作用:显示表文件结构,并允许修改此表的结构说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。例子:修改当前数据表的结构。MODIFY STRUCTURE二.表文件的打开和关闭1打开命令:USE 表名 INDEX 索引文件名 EX

7、CLUSIVE例子:打开A盘GZ1数据表。USE A:GZ1例子:以独占方式打开当前表文件XXUSE XX EXCLUSIVE2关闭命令:USE例子:关闭当前打开的表。USE三.记录指针的定位1. 绝对定位命令:GOTO n|TOP|BOTTOM说明: n定位到第n条记录,TOP定位到最上面一条记录,BOTTOM定位到最下端一条记录2相对定位命令:SKIP +|-n说明:它以当前记录为基准前移(-)或后移(+)n个记录,不选任选项,则默认记录指针后移一条记录。四.表数据的添加1记录的追加命令:APPEND BLANK例子:向当前数据表尾部追加记录。APPEND例子:向当前数据表尾部追加一条空记

8、录。APPEND BLANK2记录的插入命令:INSERT BLANKBEFORE例子:在当前记录后插入一条空记录。INSERT BLANK例子:在第3条记录前插入一条记录。GO 3INSERT BEFORE3用复制方法建新表记录命令:COPY TO 新表名 范围FIELDS 字段表FOR 条件例子:把当前表中“应发合计”大于1000元的记录复制到新数据表GZ2中。COPY TO A:GZ2 FOR 应发合计>10004从其他表取数据命令:APPEND FROM 表名 FOR 条件例子:把GZ1表中“应发合计”大于1000的记录复制到当前的表后面。APPEND FROM GZ1 FOR

9、应发合计>1000五.表记录的显示1浏览显示命令:BROWSE FIELDS 字段表FOR 条件例子:显示当前表中“应发合计”大于1000元的记录的职工编号、姓名、应发合计三个字段。BROWSE FIELDS 职工编号,姓名,应发合计 FOR 应发合计>1000说明:此命令的结果以浏览窗口的形式出现,具有修改功能。2显示输出 命令:LIST|DISPLAY OFF <范围> FIELDS <表达式表> WHILE <条件> FOR <条件> TO PRINT|TO FILE <文件>说明:(1)命令带OFF参数表示不显示记

10、录号(2)范围指定对哪些记录进行操作,(范围包括:RECORD n :第几号记录;NEXT n: 当前记录开始的几个记录;REST: 自当前记录开始至文件末尾的所有记录;ALL 所有的记录。不选范围则隐含范围为ALL)(3)字段名表指在结果中需要出现的字段名,字段名与字段名之间用逗号分隔。不带时指显示所有字段。(4)WHILE后跟条件,FOR后面也跟条件,区别是,WHILE后的条件如果满足,便停止查找;FOR后的条件查找所有满足条件的记录。(5)TO PRINT和TO FILE <文件>分别表示将显示结果在打印机上打印出来和将显示结果输出到文件。(6)DISPLAY命令在显示记录满

11、屏后,要求用户按任意键继续显示,并且在该命令中,如果省略范围仅显示当前记录。LIST不分屏,如果省略范围显示 所有记录。六.修改记录内容1 编辑或修改的特定记录命令:CHANG|EDIT 范围FIELDS字段表FOR 条件 WHILE <条件>例子:修改第五条记录CHANGE|EDIT RECORD 52成批自动替换记录命令:REPLACE 范围 字段 WITH 表达式 FOR 条件例子:计算各记录“应发合计”字段的值。REPLACE ALL 应发合计 WITH 职务工资+岗位津贴+保留奖金+保留津贴七.删除记录1逻辑删除命令:DELETE 范围FOR 条件 (打删除标记)2物理删

12、除 命令: PACK (删除有删除标记的记录)       ZAP (删除所有记录) 例子:删除“职工编号”空白的记录。DELETE ALL FOR 职工编号=""PACK八.数据表排序1物理排序,生成一个新的表文件。命令:SORT TO 新表名 ON 字段名 /A/D 范围FOR 条件例子:把当前表中记录按“应发合计”从大到小重新排序。SORT TO A:GZ3 ON 应发合计 /D2逻辑排序,生成一个索引文件。(一)标准索引文件:IDX命令:新建索引:INDEX ON 字段名表达式 TO 索引文件名 同时打开:

13、USE 表名 INDEX 索引文件名之后打开:SET INDEX TO 索引文件名重新索引:INDEX ON 字段名表达式 TO 索引文件名关闭索引:SET INDEX TO例子:对当前数据表以“应发合计”从大到小排列。INDEX ON -应发合计 TO GZ(二)复合索引文件:CDX命令:新建索引:INDEX ON 字段名 TAG 标记 ASCEDING|DESCENDING 同时打开:USE 表名 ORDER TAG 标记改变索引:SET ORDER TO TAG 标记重新索引:INDEX ON 字段名 TAG 标记关闭索引:SET ORDER TO删除索引:DELETE TAG 标记例子

14、:对当前数据表以“应发合计”从大到小排列。INDEX ON 应发合计 TAG HJ DESC九.查找记录1顺序查找命令:LOCATE FOR 条件 范围继续查找命令:CONTINUE例子:在当前的表中查找姓“张”的记录。LOCATE FOR 姓名="张"2.索引查找说明:根据当前的索引来查找记录。在使用命令前先要按准备查找的字段建立索引或排序命令:FIND 字符串      SEEK 表达式      用FOUND()检查找到否例子:在当前的表中查找姓“张”的记录。FIND

15、张SEEK "张"3.查找函数说明: 在使用命令前先要按准备查找的字段建立索引或排序函数:SEEK()例子:在当前的表中查找姓“张”的记录。SEEK("张")十.统计数据表记录个数命令:COUNT 范围FOR 条件TO 变量例子:统计当前表中“应发合计”大于1000元的人数。COUNT FOR 应发合计>1000十一.数据表 数值字段的求和命令:SUM 范围FOR 条件TO 变量例子:统计当前表中“应发合计”字段的总和。SUM 应发合计十二.算术平 均值的计算命令:AVERAGE 范围FOR 条件TO 变量例子:统计当前表中“应发合计”字段的平均值

16、。AVERAGE 应发合计十三.多功能 计算命令:CALCULATE 表达式 范围FOR 条件TO 变量例子:分别统计当前表中“应发合计”字段的人数、总和、平均值。CALCULATE CNT(应发合计),SUM(应发合计),AVG(应发合计)十四.数值运算函数函数操作例结果SQRT(x)求平方根 SQRT(9) 3 INT(x)取整数INT(3.14)3 ROUND(x)四舍五入ROUND(3.14159,4)3.1416MOD(x,y)求X除以Y的余数MOD(25,4)1MAX(x,y)求X,Y中的最大值MAX(7,8)8MIN(x,y)求X,Y中的最小值MIN(1,2,3)1十五.字符中操

17、作函数函数名操作例结果UPPER(S) 小写字母UPPER(abc) ABC LOWER(S)大写字母LOWER(ACD)acdLEN(S)求字符串的长度LEN("中国1号")7AT(S1,S2)在字符串S2,找字 符串S1AT("H","CHINA")2SUBSTR(S,I,N)在S字符串中的第I 个字符起取N个字符SUBSTR('TECHNOLO',3,3)CHNLEFT(S,N) 从字符串S左边取N 个字符 LEFT(“中国人”,4) 中国 RIGHT(S,N)从字符串S右边取N 个字符S=12345RIGHT(

18、S,3)345SPACE(N) 生成N个空格 "合 计"+SPACE(2)+"123"合计123 TRIM(S)消除字符串尾部空格TRIM("姓名     ")姓名ALLTRI(S)消除字符串中所有空格ALLTRIM("李      丽")李丽STUFF(S1,N1,N2,S2)用字符串S2替换 S1中第N1个字符起的N2个字符STUFF("NOW",2,1,"E")NEW&宏替

19、换P=“G2”USE &PUSE G2SQL Server 2005数据库常用命令SQL分类:DDL数据定义语言(CREATE,ALTER,DROP,DECLARE)DML数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server- 创建 备份数据的 deviceUSE masterEXEC sp_add

20、umpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'- 开始 备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 not null primary key,col2 type2 not null,.)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1

21、,col2 from tab_old definition only5、说明:删除新表drop table tabname6、说明:增加一个列Alter table tabname add column col type注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。7、说明:添加主键: Alter table tabname add primary key(col)说明:删除主键: Alter table tabname drop primary key(col)8、说明:创建索引:create unique index idxname

22、 on tabname(col.)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。9、说明:创建视图:create view viewname as select statement删除视图:drop view viewname10、说明:几个简单的基本的sql语句选择:select * from table1 where 范围插入:insert into table1(field1,field2) values(value1,value2)删除:delete from table1 where 范围更新:update table1 set field

23、1=value1 where 范围查找:select * from table1 where field1 like %value1% -like的语法很精妙,查资料!排序:select * from table1 order by field1,field2 desc总数:select count(*) as totalcount from table1求和:select sum(field1) as sumvalue from table1平均:select avg(field1) as avgvalue from table1最大:select max(field1) as maxval

24、ue from table1最小:select min(field1) as minvalue from table111、说明:几个高级查询运算词A: UNION 运算符UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。B: EXCEPT 运算符EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL

25、随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。C: INTERSECT 运算符INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。注:使用运算词的几个查询结果行必须是一致的。12、说明:使用外连接A、left outer join:左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT

26、JOIN b ON a.a = b.cB:right outer join:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。C:full outer join:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。其次,大家来看一些不错的sql语句1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select * into b from a where 1<>1法二:select top 0 * into b from a2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)insert

27、 into b(a, b, c) select d,e,f from b;3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)insert into b(a, b, c) select d,e,f from b in 具体数据库 where 条件例子:.from b in '"&Server.MapPath(".")&"data.mdb" &"' where.4、说明:子查询(表名1:a 表名2:b)select a,b,c from a where a IN (sele

28、ct d from b ) 或者: select a,b,c from a where a IN (1,2,3)5、说明:显示文章、提交人和最后回复时间select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b6、说明:外连接查询(表名1:a 表名2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c7、说明:在线视图查询(表

29、名1:a )select * from (SELECT a,b,c FROM a) T where t.a > 1;8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括select * from table1 where time between time1 and time2select a,b,c, from table1 where a not between 数值1 and 数值29、说明:in 的使用方法select * from table1 where a not in (值1,值2,值4,值6)10、说明:两张关联表,

30、删除主表中已经在副表中没有的信息delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )11、说明:四表联查问题:select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .12、说明:日程安排提前五分钟提醒SQL: select * from 日程安排 where datediff('minute'

31、;,f开始时间,getdate()>513、说明:一条sql 语句搞定数据库分页select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段14、说明:前10条记录select top 10 * form table1 where 范围15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等 等.)select a,b,c

32、from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表(select a from tableA ) except (select a from tableB) except (select a from tableC)17、说明:随机取出10条数据select top 10 * from tablename order by newid()18、说明:随机选择记录select new

33、id()19、说明:删除重复记录Delete from tablename where id not in (select max(id) from tablename group by col1,col2,.)20、说明:列出数据库里所有的表名select name from sysobjects where type='U'21、说明:列出表里的所有的select name from syscolumns where id=object_id('TableName')22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实

34、现多重选择,类似select 中的case。select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type显示结果:type vender pcs电脑 A 1电脑 A 1光盘 B 2光盘 A 2手机 B 3手机 C 323、说明:初始化表table1TRUN

35、CATE TABLE table124、说明:选择从10到15的记录select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案 是建立如下所示的循环:RandomizeRNumber = Int(Rnd*499) +1While Not objRec.EOFIf

36、objRec("ID") = RNumber THEN. 这里是执行脚本 .end ifobjRec.MoveNextWend这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一 个数据库内就包含了成千上万条记录。这时候不就死定了?采用SQL,你就

37、可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:RandomizeRNumber = Int(Rnd*499) + 1SQL = "SELECT * FROM Customers WHERE ID = " & RNumberset objRec = ObjConn.Execute(SQL)Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email"

38、)不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到 你需要的记录这样就大大降低了处理时间。再谈随机数现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:SQL = "SELECT * FROM Customers

39、WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的ID 是自动生成的号码):SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。随机读取若干条记录,测试过Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)Sql server:select top n * from 表名 ord

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论