JET 数据库/数据类型
JET 类型 | VBA 类型 | 大小 | 值 |
---|---|---|---|
字节,tinyint, 整数1 |
字节 | 1 个字节 | 整数 0 到 255 |
小整数,短整数, 整数2 |
整数 | 2 个字节 | 整数 -32,768 到 32,767 |
整数,int, 长整数,整数4 |
长整数 | 4 个字节 | 整数 -2,147,483,648 到 2,147,483,647 |
单精度浮点数,实数, 浮点数4,IEEESingle |
单精度浮点数 | 4 个字节 | -3.402823E38 到 -1.401298E-45(负值); 1.401298E-45 到 3.402823E38(正值) |
双精度浮点数,数字, 双精度, 浮点数,浮点数8, IEEEDouble |
双精度浮点数 | 8 个字节 | -1.79769313486231E308 到 -4.94065645841247E-324(负值); 4.94065645841247E-324 到 1.79769313486232E308(正值) |
货币,金钱 | 货币 | 8 个字节 | -922,337,203,685,477.5808 到 922,337,203,685,477.5807 |
十进制,数值 | 17 个字节 | 固定精度十进制数 | |
计数器,标识, 自动递增 |
长整数 | 4 个字节 | 用于代理键的自动递增整数 |
位,是/否, 逻辑,逻辑1 |
布尔值 | 1 位 | 0 或 1(有时可能显示为 0 或 -1) |
日期时间, 日期,时间 |
日期 | 8 个字节 | 100 年 1 月 1 日到 9999 年 12 月 31 日,可带可选时间信息 |
文本,varchar | 字符串 | <= 255 个字符 | 可变长度文本字符串,从 JET 4.0 开始支持 Unicode |
字符 | 字符串 | <= 255 个字符 | 固定长度文本字符串,从 JET 4.0 开始支持 Unicode |
长字符,备注 | 备注 | <= 2 GB | 可变长度文本 BLOB |
二进制, 可变二进制 |
二进制 | <= 510 个字节 | 固定长度二进制数据 |
长二进制,图像, 通用,OLE 对象 |
二进制 | <= 2 GB | 可变长度 BLOB |
guid | 二进制 | 16 个字节 | 唯一标识符 |
JET 数据库中有两种基本数据类型和一种 BLOB 类型用于存储文本值。在 JET 4.0 之前,它们只能存储 8 位文本字符,但使用引擎类型代码 5 或更高(即 JET 4.0)创建的数据库也可以存储 Unicode 字符。
从 JET 4.0 开始,主要为单字节(8 位)文本字符的文本值将存储在两个字节中,除非另有指定。这会增加所有文本数据的存储需求,实际上使其翻倍。JET 4.0 还有一个附加属性,可以在文本列上设置,以便在能够压缩文本数据时将其压缩为单字节字符。此属性通过在每个需要它的文本列上指定 WITH COMPRESSION
来设置。当使用 Microsoft Access 在 JET 数据库中创建表时,文本列通常会创建此设置(作为 *Unicode 压缩*)。
char
数据类型用于存储最多 255 个字符的固定长度文本。指定要存储的字符数会限制列的大小。从 char
列检索的文本值将使用空格填充(如果需要)以达到列的大小。
char
数据类型在 Access 设计器中不可用。
以下语句创建了一个表,其中包含一个 10 个字符的文本列和一个 255 个字符的文本列,两者都具有 Unicode 压缩
Create Table T1 (c1 char(10) with compression, c2 char with compression)
varchar
数据类型用于存储最多 255 个字符的可变长度文本。从 varchar
列检索的文本值将去除任何尾随空格。
以下语句创建了一个表,其中包含一个 10 个字符的文本列和一个 255 个字符的文本列,两者都具有 Unicode 压缩
Create Table T2 (c1 varchar(10) with compression, c2 varchar with compression)
longchar
数据类型用于存储可变长度文本,其字符数没有指定,仅受 JET 数据库文件最大大小限制(2 GB - 大约 10 亿个未压缩 Unicode 字符)。
一些软件库能够将 longchar
列处理为基本文本列,但其他库必须使用 BLOB 技术来访问其数据。特别是,ADO 组件经常用于 Visual Basic、VBA 和 ASP 应用程序,它们在使用 JET 4.0 OLE-DB 提供程序访问数据库时可以将 longchar
列访问为基本文本,但必须使用 BLOB 处理例程 (GetChunk / AppendChunk) 当使用 ODBC 连接时。
以下语句创建了一个表,其中包含两个可变长度文本 BLOB 列,两者都具有 Unicode 压缩
Create Table T3 (tb1 longchar with compression, tb2 memo with compression)
text
数据类型是一种伪类型。当指定大小是,它被认为是 varchar
并且限制为 255 个字符。当没有指定大小是,它被认为是 longchar
。
以下语句创建了一个表,其中包含一个 10 个字符的文本列和一个可变长度文本 BLOB 列,两者都具有 Unicode 压缩
Create Table T4 (c1 text(10) with compression, tb1 text with compression)
JET 中有几种基本数值数据类型,允许为数值存储提供广泛的数据存储可能性。
byte
数据类型是一个 8 位无符号整数,可以存储介于 0 和 255(含)之间的值。它可以用以下别名来引用:byte
、tinyint
、integer1
。
它类似于 Visual Basic 类型 Byte
。
smallint
数据类型是一个 16 位(2 个字节)有符号整数,可以存储介于 -32,768 和 32,767(含)之间的值。它可以用以下别名来引用:smallint
、short
、integer2
。
它类似于 Visual Basic 类型 Integer
。
integer
数据类型是一个 32 位(4 字节)有符号整数,可以保存 -2,147,483,648 到 2,147,483,647(含)之间的值。它可以使用以下别名:integer
、int
、long
、integer4
。
它类似于 Visual Basic 中的 Long
类型。
single
数据类型是一个 32 位(4 字节)单精度浮点数,可以保存 -3.402823E38 到 -1.401298E-45 之间的负数,以及 1.401298E-45 到 3.402823E38 之间的正数。它可以使用以下别名:single
、real
、float4
、IEEESingle
。
它类似于 Visual Basic 中的 Single
类型。
double
数据类型是一个 64 位(8 字节)双精度浮点数,可以保存 -1.79769313486231E308 到 -4.94065645841247E-324 之间的负数,以及 4.94065645841247E-324 到 1.79769313486232E308 之间的正数。它可以使用以下别名:double
、double precision
、number
、float
、float8
、IEEEDouble
。
它类似于 Visual Basic 中的 Double
类型。
currency
数据类型是一个 64 位(8 字节)精确十进制数(实现为一个缩放的整数),可以保存 -922,337,203,685,477.5808 到 922,337,203,685,477.5807(含)之间的值。它可以使用以下别名:currency
、money
。
它类似于 Visual Basic 中的 Currency
类型。
decimal
数据类型是一个 17 字节精确十进制数,可以保存 -1028-1 到 1028-1 之间的值。它可以使用以下别名:decimal
、dec
、numeric
。
JET 支持一个名为 bit
的数据类型,它可以保存 1 位的信息,用于保存简单的布尔值真或假。它只能保存 0 或 1,但一些 JET 数据库接口会将其显示为 0 和 -1 或否和是。它可以使用以下别名:bit
、logical
、logical1
、yesno
。
它类似于 Visual Basic 中的 Boolean
类型。
datetime
数据类型是一个 64 位(8 字节)双精度浮点数,可以保存日期和时间信息,范围为 100 年 1 月 1 日到 9999 年 12 月 31 日,并可以选择包含小时、分钟、秒的时间。它可以使用以下别名:datetime
、date
、time
,它们都可以保存仅日期、仅时间和日期和时间信息。
它类似于 Visual Basic 中的 Date
类型。
要确定 datetime
是否包含时间信息,请检查双精度数是否与该数的整数截断相同;如果不同,则包含时间信息,否则不包含时间信息。
Create Table D1 (dt1 datetime)
go
Insert Into D1(dt1) Values (#2007-02-02#)
go
Insert Into D1(dt1) Values (#2007-02-02 16:26:29#)
go
Select dt1, CDbl(dt1) - CLng(dt1) As check_time From D1
go
dt1 check_time ----------------------- ------------------------- 02/02/2007 16:26:29 -0.314942129632982 02/02/2007 0
counter
数据类型是一个自动增长的 32 位(4 字节)整数,通常用于创建代理键。它可以使用以下别名:counter
、autoincrement
、identity
。
counter
可以使用可选参数,定义开始计数的初始值和每次创建新值时要添加的增量。以下代码显示了默认值(从 1 开始,增量为 1)和指定的值(从 10 开始,增量为 2)。每个表最多可以包含一列 counter
类型。
Create Table A1 (id1 counter, c1 char(1))
go
Create Table A2 (id2 counter(10, 2), c2 char(1))
go
Insert Into A1(c1) Values('x')
go
Insert Into A1(c1) Values('y')
go
Insert Into A2(c2) Values('x')
go
Insert Into A2(c2) Values('y')
go
Select * From A1
go
Select * From A2
go
id1 c1 ----------- ------ 1 x 2 y id2 c2 ----------- ------ 10 x 12 y
JET 可以将二进制大型对象(或 BLOB 数据)直接作为二进制数据存储在数据库中。访问此数据通常需要特殊的 BLOB 处理函数,例如,ADO 提供 GetChunk 和 AppendChunk 函数用于读取和写入 BLOB 数据。
binary
数据类型是一个可变长度的二进制对象类型,可以保存最多 510 字节的二进制数据。如果未指定大小,则使用最大大小 510 字节。它可以使用以下别名:binary
、binary varying
。
longbinary
数据类型是一个可变长度的二进制对象类型,其容量没有限制,仅受 JET 数据库文件最大大小(2 GB)的限制。它可以使用以下别名:longbinary
、general
、image
、oleobject
。