跳转到内容

JET 数据库/数据类型

来自维基教科书,开放的书籍,开放的世界
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)

文本 BLOB

[编辑 | 编辑源代码]

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(含)之间的值。它可以用以下别名来引用:bytetinyintinteger1

它类似于 Visual Basic 类型 Byte

小整数

[编辑 | 编辑源代码]

smallint 数据类型是一个 16 位(2 个字节)有符号整数,可以存储介于 -32,768 和 32,767(含)之间的值。它可以用以下别名来引用:smallintshortinteger2

它类似于 Visual Basic 类型 Integer

integer 数据类型是一个 32 位(4 字节)有符号整数,可以保存 -2,147,483,648 到 2,147,483,647(含)之间的值。它可以使用以下别名:integerintlonginteger4

它类似于 Visual Basic 中的 Long 类型。

单精度浮点数

[编辑 | 编辑源代码]

single 数据类型是一个 32 位(4 字节)单精度浮点数,可以保存 -3.402823E38 到 -1.401298E-45 之间的负数,以及 1.401298E-45 到 3.402823E38 之间的正数。它可以使用以下别名:singlerealfloat4IEEESingle

它类似于 Visual Basic 中的 Single 类型。

双精度浮点数

[编辑 | 编辑源代码]

double 数据类型是一个 64 位(8 字节)双精度浮点数,可以保存 -1.79769313486231E308 到 -4.94065645841247E-324 之间的负数,以及 4.94065645841247E-324 到 1.79769313486232E308 之间的正数。它可以使用以下别名:doubledouble precisionnumberfloatfloat8IEEEDouble

它类似于 Visual Basic 中的 Double 类型。

currency 数据类型是一个 64 位(8 字节)精确十进制数(实现为一个缩放的整数),可以保存 -922,337,203,685,477.5808 到 922,337,203,685,477.5807(含)之间的值。它可以使用以下别名:currencymoney

它类似于 Visual Basic 中的 Currency 类型。

十进制

[编辑 | 编辑源代码]

decimal 数据类型是一个 17 字节精确十进制数,可以保存 -1028-1 到 1028-1 之间的值。它可以使用以下别名:decimaldecnumeric

布尔值(是/否)

[编辑 | 编辑源代码]

JET 支持一个名为 bit 的数据类型,它可以保存 1 位的信息,用于保存简单的布尔值真或假。它只能保存 0 或 1,但一些 JET 数据库接口会将其显示为 0 和 -1 或否和是。它可以使用以下别名:bitlogicallogical1yesno

它类似于 Visual Basic 中的 Boolean 类型。

日期和时间

[编辑 | 编辑源代码]

datetime 数据类型是一个 64 位(8 字节)双精度浮点数,可以保存日期和时间信息,范围为 100 年 1 月 1 日到 9999 年 12 月 31 日,并可以选择包含小时、分钟、秒的时间。它可以使用以下别名:datetimedatetime,它们都可以保存仅日期、仅时间和日期和时间信息。

它类似于 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 字节)整数,通常用于创建代理键。它可以使用以下别名:counterautoincrementidentity

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 字节。它可以使用以下别名:binarybinary varying

长二进制

[编辑 | 编辑源代码]

longbinary 数据类型是一个可变长度的二进制对象类型,其容量没有限制,仅受 JET 数据库文件最大大小(2 GB)的限制。它可以使用以下别名:longbinarygeneralimageoleobject

华夏公益教科书