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。