本章介绍create()函数的多种用法。
描述:
创建空序表
语法:
create(Fi,…)
备注:
产生以Fi,…为字段的空序表
参数:
Fi |
字段名 |
返回值:
空序表
示例:
|
A |
|
1 |
=create(id,name,sex) |
|
描述:
创建含有键的空序表
语法:
create(#Fi,…)
备注:
产生以Fi,…为字段的空序表,带有#的字段名被认为是键
参数:
Fi |
字段名 |
返回值:
空序表
示例:
|
A |
|
1 |
=create(#id,#name,gender) |
id ,name 两个字段为键。 |
描述:
打开已存在的组表
语法:
f.create() |
打开不带密码的组表 |
f.create(;;p) |
打开加密的组表 |
备注:
打开已存在的组表。当p是写入密码时可以读取组表,更新组表,增加新附表等;p为读取密码时只读,不能操作组表。当加密组表有读写两个密码时,只需按照需要写其中一个密码即可。f可以是文件组,文件组密码必须相同。
参数:
f |
已存在的组表文件 |
p |
写入密码/读取密码 |
返回值:
组表/集群基表对象
示例:
|
A |
|
1 |
=file("D:\\employee2.ctx") |
|
2 |
=A1.create(#EID,NAME,GENDER;;"@!*123":"12") |
生成加密组表 |
3 |
=file("D:\\employee3.ctx") |
|
4 |
=A3.create(#EID,NAME,GENDER) |
生成不加密组表 |
5 |
=A3.create() |
打开不加密的组表文件 |
6 |
=A1.create(;;"12") |
用读取密码读取已存在写/读加密组表 |
7 |
=A1.create(;;"@!*123") |
用写入密码打开已存在写/读密码的加密组表 |
8 |
=file(["D:\\emp2.ctx","D:\\emp1.ctx","D:\\emp1.ctx"]) |
不加密文件组 |
9 |
=A8.create().cursor().fetch() |
缺省有序归并 |
10 |
=A8.create().cursor().fetch() |
增加选项@o不做有序归并 |
描述:
用文件创建组表的基表
语法:
f.create(C:b1,…;K:b2;x;pw:pr)
备注:
用文件f创建由列C组成组表的基表,其中可以使用分区函数x将数据分成多个区,分段键K可以防止把维值相同的列拆成多个段。
参数:
f |
本地文件 |
C |
基表的列,C前带#表示维,维必须在前面,并且基表中的记录对于维必须是有序的,维可以有多个 |
b1 |
排号键的长度,不超过8的整数。可以省略,省略时K不是排号类型 |
K |
分段键,若是排号时则用前b2个字节作为分段键 |
b2 |
字节数,不超过8的整数,可以省略 |
x |
基于首维的分区函数,返回整数,有x时将生成复组表 |
pw |
写入密码,可省略;当写入密码省略时,读取密码必须省略 |
pr |
读取密码,可省略;当写入密码不省略时,读取密码可省略 |
选项:
@u |
不压缩,缺省将压缩 |
@r |
生成行存文件,缺省用列存,行存模式的组表不支持使用多路游标 |
@y |
文件已存在时强制重新创建,缺省中断计算并弹出错误信息 |
返回值:
基表
示例:
|
A |
|
1 |
=file("D:\\employee1.ctx") |
|
2 |
=A1.create(#EID,NAME,GENDER) |
创建无排号键的基表employee1,EID、NAME、GENDER为基表的列名,其中EID表示维 |
3 |
=file("D:\\employee2.ctx") |
|
4 |
=A3.create(#EID:3,NAME,GENDER;EID:2) |
创建以EID为排号键,EID的前两个字节为分段键的基表,且排号键的长度是3 |
5 |
=file("D:\\employee3.ctx") |
|
6 |
=A5.create(#EID,NAME,GENDER;;;"@!*123":"12") |
创建带有写:读密码的基表 |
7 |
=file@w("emp1.ctx":[1],["192.168.0.131:8281"]) |
|
8 |
=A7.create(#EID,NAME,GENDER) |
创建不加密的集群基表 |
9 |
=A7.create(#EID,NAME,GENDER;;;"@!*123":"12") |
创建带有写:读密码的集群基表 |
10 |
=file("emp1.ctx":[1],["192.168.0.116:8281"]) |
从节点机"192.168.0.116:8281"的1区读取组表文件emp1.ctx,生成集群文件 |
11 |
=A10. create(#EID,NAME,GENDER) |
创建集群基表 |
12 |
=A10.create@y(#EID,NAME,GENDER) |
强制重新创建,无选项@y时报错 |
13 |
=file("emp2.ctx":[1,2,3]) |
返回分区1/2/3下的组文件 |
14 |
=A13.create(#EID,NAME,GENDER,DEPT;;EID%3+1) |
生成复组表,其中EID%3+1返回整数1/2/3 |
15 |
=file("test1.ctx") |
|
16 |
=A15.create(#ID:4,City,School,SID;ID:2) |
数据中的ID字段使用了4个字节的排号类型数据,其中第1个字节记录了City,第2个字节记录了School,第3,4两个字节记录了SID,此时设置了分段键为前2个字节,分段读取数据时按School来分段 |
17 |
=mysql.cursor("select ID,City,School,SID from stu") |
|
18 |
>A16.append(A17) |
|
19 |
=A15.create().cursor(;;10:200).fetch() |
|
20 |
=A15.create().cursor(;;11:200).fetch() |
比较这两段相邻的数据,可以发现第10段的结尾和第11端的开端数据分属于两个不同的School,说明School相同的列没有被分成多段 |
描述:
用集群文件创建集群组表的基表
语法:
f.create(C:b1,…;K:b2;x;pw:pr)
备注:
用集群文件f创建由列C组成集群组表的基表。当创建可写的集群表时,仅用于维护;可执行attach, index, reset, append, update, delete等方法;在空数据的集群文件中使用append时必须先追加集群游标。
参数:
f |
集群文件,仅支持组表 |
C |
基表的列,C前带#表示维,维必须在前面,并且基表中的记录对于维必须是有序的,维可以有多个 |
b1 |
排号键的长度,不超过8的整数。可以省略,省略时K不是排号类型 |
K |
分段键,若是排号时则用前b2个字节作为分段键 |
b2 |
排号键的长度,不超过8的整数,可以省略 |
x |
分布函数,用于写入时不可省略 |
pw |
写入密码,可省略;当写入密码省略时,读取密码必须省略 |
pr |
读取密码,可省略;当写入密码不省略时,读取密码可省略 |
选项:
@u |
不压缩,缺省将压缩 |
@r |
生成行存文件,缺省用列存,行存模式的组表不支持使用多路游标 |
@y |
文件已存在时强制重新创建,缺省中断计算并弹出错误信息 |
返回值:
集群表对象
示例:
|
A |
|
1 |
[192.168.31.72:8281] |
|
2 |
=file("salespart.ctx":[1], A1) |
|
3 |
=A2.open() |
|
4 |
=A3.cursor() |
产生集群游标 |
5 |
=file@w("salespart1.ctx":[1],["192.168.31.72:8281"]) |
|
6 |
=A5.create(#EID,Name,OCount;;;"@!*123":"12") |
创建带有写:读密码的集群表 |
7 |
>A6.append(A4) |
追加集群游标 |
8 |
=A6.cursor().fetch() |
|
9 |
=file("EmpCTX.ctx":[2],A1) |
EmpCTX.ctx中有字段EID,Name,Dept,Age其中 EID为排号键 |
10 |
=A9.open() |
|
11 |
=A10.cursor() |
产生集群游标 |
12 |
=file@w("EmpCTX2.ctx":[3],A1) |
|
13 |
=A12.create(#EID:4,Name,Dept,Age;EID:3) |
创建以EID为排号键,EID的前3个字节为分段键的基表,且排号键的长度是4 |
14 |
>A13.append(A11) |
追加集群游标 |
15 |
=A13.cursor().fetch() |
|
16 |
=file("EmpCTX3.ctx":[1,2],A1) |
|
17 |
=A16.create(#EID,Name,OCount;;EID%2+1;"@!*123":"12") |
在分区1和2下各创建一个EmpCTX3.ctx,并且设置写:读密码 |
描述:
复制序表T的数据结构,以此产生一个新的空序表
语法:
T.create()
备注:
如果T有键,则同时复制键。
参数:
T |
序表 |
返回值:
新空序表
示例:
Ø 由普通序表产生
|
A |
|
1 |
=demo.query("select top 1 * from DEPARTMENT") |
|
2 |
=A1.create() |
产生一个空序表,与A1数据结构一致 |
Ø 复制键和描述符
|
A |
|
1 |
=demo.query("select * from DEPARTMENT ") |
|
2 |
=A1.keys(DEPT) |
|
3 |
=A1.create() |
产生一个空序表,与A1序表的数据结构一致,且同时复制了键 |
描述:
复制记录r的数据结构,以此产生一个新的空序表
语法:
r.create()
备注:
如果r有键,则同时复制键。
参数:
r |
记录 |
返回值:
新空序表
示例:
Ø 由普通记录产生
|
A |
|
1 |
=demo.query("select top 1 * from DEPARTMENT") |
|
2 |
=A1(1).create() |
产生一个空序表,与A1(1)记录的数据结构一致 |
Ø 复制键和描述符
|
A |
|
1 |
=demo.query("select * from DEPARTMENT ") |
|
2 |
=A1.keys(DEPT) |
|
3 |
=A1(1).create() |
产生一个空序表,与A1(1)记录的数据结构一致,且同时复制了键 |