加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Hubble.net 建表语句 Create Table

发布时间:2020-12-12 15:28:36 所属栏目:MsSql教程 来源:网络整理
导读:语法 [Directory(directory)] [IndexOnly] –Optional [ForceCollectCount(count)] -Optional [DBTableName(table name)] –Optional [DBAdapter(adapter name)] [DBConnect(connection string)] CREATE TABLE table_name ( { column_definition ??????? | c

语法

[Directory(directory)]

[IndexOnly] –Optional

[ForceCollectCount(count)] -Optional

[DBTableName(table name)] –Optional

[DBAdapter(adapter name)]

[DBConnect(connection string)]

CREATE TABLE

table_name

(

{ < column_definition >
??????? | column_name AS computed_column_expression
??????? | < table_constraint > } [ , ...n ]

)

?

属性

?

[Directory(directory)]

这个属性指定全文索引在本地的地址。这个属性是必选属性。

全文索引将被建立在这个地址下。

[IndexOnly] –Optional

这个属性指定全文数据表为仅仅索引。这个属性是可选属性。

如果设置为仅仅索引,在执行插入,修改和删除语句时只修改索引,而不修改数据本身。这个设置在Rebuild 或者数据库驱动索引时有用。

[ForceCollectCount(count)] –Optional

强制回收数据的记录数,可选属性。

当批量插入时,Hubble.net并不会立即更新索引,而是要到插入数量超过ForceCollectionCount时才更新索引,这样做是为了尽可能提高索引的效率。ForecCollectionCount的默认值为5000. 可以修改这个值为任意正整数。

[DBTableName(table name)] –Optional

数据库中对应表的表名,可选属性。

由于Hubble.net全文索引是和数据库关联的,Hubble.net负责索引,数据库负责存储。如果希望Hubble.net中的表名和数据库的表名不一样,可以通过这个属性来设置。默认情况下,数据库表名和Hubble.net的表名相同。

[DBAdapter(adapter name)]

数据库适配器名,必选属性

在 这里指定采用哪种数据库适配器。Hubble.net 目前默认提供MS SQLSERVER 2005/2008 的数据库适配器。用户可以通过实现 IDBAdapter 接口,并通过SP_AddExternalReference 系统存储过程将自己编写的数据库适配器安装到Hubble.net中。

[DBConnect(connection string)]

连接字符串,必选属性

这个属性指定连接数据库适配器对应的数据库的连接字符串。

数据类型

目前支持的数据类型有

Int,TinyInt,SmallInt,BigInt,Float,DateTime,SmallDateTime,Date,NVarchar,Varchar,NChar,Char

其中

datetime 的范围为 .net 中 datetime 数据类型的时间范围,精度为毫秒

smalldatetime 的范围是 1980年1月1日 0:0:0 - 2047年12月31日 23:59:59,精度为秒

date 的范围是 1年1月1日 - 5883516年1月1日,进度为日

nvarchar,varchar,nchar,char 这四种字符串类型可以支持指定长度和不限长度,不限长度时写成 (max),如 nvarchar(max)

如果字符串类型作为非全文方式索引(Untokenized index) 则长度最大为32。

?

column_definition

列名

同 T-SQL,如果是关键字,用[]指定列名。

数据类型

见上一节

索引类型-可选

Tokenized

Tokenized 索引类型表示该字段为全文索引字段,如果指定这个类型,必选指定Analyzer,即分析器的名称

Untokenized

Untokenized 索引类型表示该字段为非全文索引字段,通常为一些价格,面积,分类等元数据字段,如果需要在搜索全文是同时过滤元数据,必须将相应元数据字段设置为Untokenized 类型索引字段。

None

默认索引类型,仅存储。

Analyzer

如果索引类型是 Tokenized,必须通过Analyzer 关键字指定分析器的名称。

如 Analyzer ‘SimpleAnalyzer’,用户可以通过实现IAnalyzer接口,并通过SP_AddExternalReference 系统存储过程将自己编写的分析器安装到Hubble.net中。

?

NULL,NOT NULL

Tokenized,Untokenized 类型索引字段必须为 NOT NULL,None 类型索引字段可以为NULL.

?

Default-可选

指定字段的默认值

?

PRIMARY KEY

可以在字段定义中指定该字段为主键字段。注意通过Hubble.net设置的主键字段不是聚集索引,而是非聚集唯一性索引。Hubble.net 中表的聚集索引字段为DocId.

?

DocId 字段

DocId 字段是Hubble.net 为每张表默认建立的字段,用户在编写建表语句是不需要指定这个字段。这个字段为自增长字段且是唯一性聚集性索引。这个字段用于定位指定的记录。

?

其他约束

Hubble.net 为了简化建表语句,在建表语句中不提供其他约束的定义,如果要这只其他的约束,比如字段的范围等,可以通过SP_ExcuteSql系统存储过程来设置。

?

示例

1. 简单的新闻表

?

[Directory('d:/test/news/')]

[DBAdapter('SQLSERVER2005')]

[DBConnect('Data Source=(local);Initial Catalog=Test;Integrated Security=True')]

Create table News

(

Title nvarchar(max) Tokenized Analyzer 'SimpleAnalyzer' NOT NULL Default '',

Content nvarchar(max) Tokenized Analyzer 'SimpleAnalyzer' NOT NULL Default '',

Time SmallDateTime Untokenized NOT NULL Default '1990-01-01',

Url??? nvarchar(max)

);

exec SP_ExcuteSql? 'News','Create index I_Time on news(time) ';

?

以上建表语句建立一个News全文索引表,全文索引建立在d:/test/news 目录下,这个表和本地SQLSERVER2005或2008 数据库的默认实例中的Test 库中的News表关联。

这个表有四个字段,其中Title,Content 为全文索引字段,Time 为非全文索引字段,Url 为仅存储字段。

表建立完成后,我们通过 SP_ExcuteSql 直接操作SQLSERVER2005 数据库中的Test 数据库,在数据库中建立为Time 字段建立一个非聚集索引,

这个索引在仅仅对Time 进行范围查询时有用。

?

2. 指定主键

单字段主键

?

[Directory('d:/test/news/')]

[DBAdapter('SQLSERVER2005')]

[DBConnect('Data Source=(local);Initial Catalog=Test;Integrated Security=True')]

Create table News

(

NewsId int NOT NULL PRIMARY KEY,

Title nvarchar(max) Tokenized Analyzer 'SimpleAnalyzer' NOT NULL Default '',

Url??? nvarchar(max)

);

这个表中,我们指定NewsId 字段为主键字段

多字段主键

?

[Directory('d:/test/news/')]

[DBAdapter('SQLSERVER2005')]

[DBConnect('Data Source=(local);Initial Catalog=Test;Integrated Security=True')]

Create table News

(

NewsId int NOT NULL PRIMARY KEY,

NewsType nvarchar(16) UnTokenized NOT NULL PRIMARY KEY,

Url??? nvarchar(max)

);
?

?

?

这个表中,我们指定NewsId 和NewsType字段为主键字段

仅索引

?

[Directory('d:/test/news/')]

[IndexOnly]

[DBTableName('MyNews')]

[DBAdapter('SQLSERVER2005')]

[DBConnect('Data Source=(local);Initial Catalog=Test;Integrated Security=True')]

Create table News

(

NewsId int NOT NULL PRIMARY KEY,

Url??? nvarchar(max)

);

?

?

该建表语句指定该表仅仅进行索引,并且该表关联的数据库中的表名指定为MyNews.

指定为仅索引后,我们可以通过SP_Rebuild 存储过程,对数据库表MyNews中的索引记录重新创建索引。这种方法一般用于全文索引丢失后的重建。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读