关于 Access 数据库中的数据类型与 Access 项目中的数据类型的不同之处[转]
Posted on 2009-01-14 18:13 山姆蜀黍 阅读(6250) 评论(0) 编辑 收藏 举报自officeOnline
关于 Access 数据库数据类型
根据以下条件决定字段应使用哪种数据类型 (数据类型:决定字段可拥有的数据类型的字段特征。数据类型包括 Boolean、Integer、Long、Currency、Single、Double、Date、String 和 Variant(默认)。):
- 字段中允许哪些类型数据?例如,不能在“数字”数据类型中存储文本。
- 字段值使用多少存储空间?
- 准备对字段值采取哪些操作?例如,Microsoft Access 能汇总“数字”或“货币”字段的值,而不能汇总“文本” (text 数据类型:Microsoft Access 数据库中的一种字段数据类型。text 数据类型最多可以包含 255 个字符,或者是由 FieldSize 属性指定的一个小一些的字符数。)或 OLE 对象 (“OLE 对象”数据类型:字段的数据类型之一,用于在其他应用程序中创建的、可链接或嵌入(插入)到 Access 数据库中的对象。)字段。
- 是否要对一个字段进行排序或者索引 (索引:一种功能,可以加速根据键值在表中进行的搜索和排序,并可使表中的行实现单值性。表中的主键是自动编制索引的。有些字段由于其数据类型的原因而无法编制索引。)?OLE 对象字段不能进行索引。
- 是否使用一个字段在查询或报表中分组记录?OLE 对象字段不能用于分组记录。
- 准备如何对字段值进行排序?在“文本”字段中,数字作为字符串排序(1、10、100、2、20、200 等等),而不是作为数字值。使用“数字”或“货币”字段按数字大小排序数字。同时,在“文本”字段中,许多格式不能正确排序。使用 Date/Time 字段以确保正确地排序。
-
是否需要存储在其他程序中创建的 Microsoft Word 或 Microsoft Excel 文档、图片、声音和其他二进制数据类型?OLE 对象可以链接 (OLE/DDE 链接:OLE 对象及其 OLE 服务器之间,或动态数据交换 (DDE) 的源文档与目标文档之间的一种连接。)到或者嵌入 (嵌入:用于插入来自其他应用程序的 OLE 对象的副本。源对象称为 OLE 服务器端,可以是任意支持链接和嵌入对象的应用程序。对嵌入式对象的更改不会反映在原对象中。) Microsoft Access 表的 OLE 对象字段中。要显示 OLE 对象,在窗体或报表中使用控件 (控件:允许用户控制程序的图形用户界面对象,如文本框、复选框、滚动条或命令按钮等。可使用控件显示数据或选项、执行操作或使用户界面更易阅读。)。
在“文本”或“备注”字段中选择
Microsoft Access 提供两种字段数据类型 (字段数据类型:决定可以存储哪种数据的字段特征。例如,数据类型为“文本”的字段可以存储由文本或数字字符组成的数据,而“数字”字段只能存储数值数据。)以存储文本或数字,或两者的组合:“文本”和“备注”。
使用“文本”数据类型存储如名称、地址和任何不需计算的数字,如电话号码、部件编号或者邮政编码。“文本”字段能存储最多 255 个字符,但默认字段大小是 50 个字符。“字段大小”属性控制可以输入“文本”字段的最大字符个数。
如果需要存储超过 255 个字符,应使用“备注”数据类型。“备注”最多可以存储 65,536 个字符。如果要存储带格式文本或长文档,可以创建 OLE 对象字段代替“备注”字段。
“文本”和“备注”数据类型存储输入到一个字段中的值;不存储字段中没用的部分的空白字符。
可以对“文本”或者“备注”字段进行分组和排序,但 Access 只使用“备注”字段的前 255 个字符进行分组和排序。
在“数字”或“货币”字段中选择
Microsoft Access 提供两种字段数据类型 (字段数据类型:决定可以存储哪种数据的字段特征。例如,数据类型为“文本”的字段可以存储由文本或数字字符组成的数据,而“数字”字段只能存储数值数据。)存储数字值数据:“数字”和“货币”。
使用“数字”字段存储用于数学计算(除了涉及货币和要求高精度的计算)的数字数据,能存储在“数字”字段的数字值的类型和大小通过设置“字段大小”属性控制。例如,Byte 字段大小只能存储从 0 到 255 的数字(没有小数)且占据 1 个字节空间。
使用“货币”字段能避免计算中的舍入。一个“货币”字段能精确到小数点左侧 15 位和小数点右侧 4 位数字。一个“货币”字段占据 8 个字节空间。
“数字”和“货币”字段提供预定义的显示格式 (格式:指定数据的显示方式和打印方式。Access 数据库为特定的数据类型提供了标准格式,同时 Access 对象也为其相对应的 SQL 数据类型提供了标准格式。用户也可以自定义格式。),也可以创建自定义格式。
在递增或随机“自动编号”字段中选择
Microsoft Access 提供“自动编号”数据类型创建当添加记录时自动输入唯一编号的字段。记录编号生成之后,就不能删除或者更改。“自动编号”字段可以生成三种编号:每次加一的顺序编号、随机编号和同步复制 ID(也称 GUID——全局唯一标志符)编号。每次加一的“自动编号”是最普通的自动编号且适合用作主键 (主键:具有唯一标识表中每条记录的值的一个或多个域(列)。主键不允许为 Null,并且必须始终具有唯一索引。主键用来将表与其他表中的外键相关联。)。随机自动编号对表中每一记录生成一个唯一的随机数。同步复制 ID 自动编号用于数据库同步复制 (数据库同步复制:创建 Access 数据库的两个或更多特殊副本的过程。副本可同步化,即一个副本中数据的更改,或“设计母版”中设计的更改,均被送到其他副本中。),生成用于同步副本 (副本:属于一个副本集并且可与该集合中其他副本同步的一个数据库副本。在一个副本中对复制的表的数据所做的更改会发送并应用到其他副本。)的唯一标志符。
关于 Access 项目 (SQL Server) 数据类型
包含数据的对象都拥有一个相关的数据类型,该数据类型定义了对象能够包含的数据(字符、整数、二进制数等)的类型。下述对象拥有数据类型:
- 表和视图中的列。
- 存储过程中的参数。
- 变量。
- 返回一个或多个指定数据类型的数据值的 Transact-SQL 函数。
- 拥有返回代码的存储过程,该存储过程总是拥有一个整型数据类型。
如果将数据类型指定给对象,则会定义对象的四个属性:
- 对象包含的数据的种类。例如,字符、整数或二进制。
- 存储值的长度,即大小。图像、二进制以及 varbinary 数据类型的长度是以字节为单位定义的。任何数字数据类型的长度都是字节数,即容纳该数据类型所允许的数字位数所必需的字节数。字符串和 Unicode 数据类型的长度是按字符定义的。
- 数字的精度(仅适用于数字数据类型)。该精度是数字可以包含的数字位数。例如,smallint 对象最多可以包含 5 位:它拥有 5 位的精度。
- 数字的小数位数(仅适用于数字数据类型)。该小数位数是小数点右侧可以存储的小数数字的个数。例如,int 对象不接受小数点,其小数位数为 0。货币对象在小数点右侧最多可有 4 位数字,则小数位数为 4。
例如,如果将对象定义为 money,则其最多包含 19 位,其中小数点右侧可以为 4 位。该对象用 8 个字节来存储数据。因此,money 数据类型精度为 19,小数位数为 4,长度为 8 个字节。
存储在 SQL Server 中的所有数据必须与这些基本数据类型中的一种兼容。光标类型是唯一的不能指定给表列的基本数据类型。它仅用于变量和存储过程参数。
也可以创建用户定义数据类型,例如:
-- Create a birthday datetype that allows nulls.
EXEC sp_addtype birthday, datetime, 'NULL'
-- Create a table using the new data type.
CREATE TABLE employee
emp_id char(5)
emp_first_name char(30)
emp_last_name char(40)
emp_birthday birthday
用户定义的数据类型总是根据基本数据类型定义的。它们能够为数据类型应用一个名称,该名称可以更好地描述对象存放的值的类型。这更便于程序员或数据库管理员理解任何使用该数据类型定义的对象的预期用途。
Access 数据库和 Access 项目之间的数据类型的比较或映射
下表比较了 Microsoft Access 数据库 (Microsoft Access 数据库:数据和对象(如表、查询或窗体)组成的集合,与特定的主题或用途有关。)和 Microsoft Access 项目 (Microsoft Access 项目:与 Microsoft SQL Server 数据库连接且用于创建客户/服务器应用程序的 Access 文件。项目文件中不包含任何数据或基于数据定义的对象(如表或视图)。)的数据类型 (数据类型:决定字段可拥有的数据类型的字段特征。数据类型包括 Boolean、Integer、Long、Currency、Single、Double、Date、String 和 Variant(默认)。)。
Microsoft Access 数据类型 | SQL Server 数据类型 |
---|---|
是/否 (“是/否”数据类型:一种字段数据类型,用于只有两种可能值(如是或否、True 或 False)的字段。不允许有 Null 值。) | bit (bit 数据类型:在 Access 项目中,一种存储值为 1 或 0 的数据类型。接受 1 和 0 以外的整数值,但总是将其解释为 1。) |
数字 (“数字”数据类型:Microsoft Access 数据库中的一种字段数据类型,用于将在数学运算中使用的数值数据。但是,若要显示或计算货币值,则应使用“货币”数据类型。)(字节) | tinyint (tinyint 数据类型:Access 项目中的一种占一个字节(8 位)的数据类型,用于存储从 0 到 255 范围内的整数。) |
数字(整型) | smallint (smallint 数据类型:Access 项目中的一种 2 字节(16 位)数据类型,存储位于 -2^15 (-32,768) 与 2^15 - 1 (32,767) 之间的数字。) |
数字(长整型) | int (int 数据类型:Access 项目中的一种 4 字节(32 位)数据类型,存储位于 -2^31 (-2,147,483,648) 与 2^31 - 1 (2,147,483,647) 之间的数字。) |
数字(单精度浮点型) | real (real 数据类型:在 Access 项目中,一种近似的数值数据类型,精度为 7 位,正值取值范围大致从 1.18E - 38 到 3.40E + 38,负值取值范围大致从 -1.18E - 38 到 -3.40E + 38,也可以取 0。) |
(无等价的数据类型) | bigint (bigint 数据类型:Access 项目中的一种 8 字节(64 位)数据类型,存储位于 -2^63 (-9,223,372,036,854,775,808) 与 2^63-1 (9,223,372,036,854,775,807) 之间的数字。) |
数字(双精度浮点型) | float (float 数据类型:在 Access 项目中,一种近似的数值数据类型,精度为 15 位。它所存储的正值范围大致是从 2.23E - 308 到 1.79E + 308,负值范围大致是从 - 2.23E - 308 到 -1.79E + 308,也可以为 0。) |
货币 (“货币”数据类型:Microsoft Access 数据库中的一种数据类型,用于与货币有关的计算或其精确度极其重要的定点计算。) | money (money 数据类型:在 Access 项目中,用于存储货币值的数据类型,取值范围从 - 922,337,203,685,477.5707 到 922,337,203,685,477.5807,精确度为万分之一个货币单位。)
smallmoney (smallmoney 数据类型:Access 项目中的一种存储货币值的数据类型,取值范围从 -214,748.3648 到 214,748.3647,精确度为万分之一个货币单位。当显示 smallmoney 值时,会将它们四舍五入为两个小数位。) |
小数/数值 (decimal 数据类型(Access 数据库):精确的数值数据类型,用于存储 -10^28 -1 到 10^28 -1 的值。可以指定数值范围(最大总位数)和精度(小数点右边的最大位数)。) | decimal (decimal 数据类型(Access 项目):精确的数值数据类型,用于存储 -10^38 -1 到 10^38 -1 的值。可以指定数值范围(最大总位数)和精度(小数点右边的最大位数)。)
numeric (numeric 数据类型:在 Access 项目中,一种精确的数值数据类型,取值从 -10^38 -1 到 10^38 - 1。可以指定数值范围(最大总位数)和精度(小数点右边的最大位数)。) |
日期/时间 (“日期/时间”数据类型:Access 数据库的一种数据类型,用来存放日期和时间信息。) | datetime (datetime 数据类型:在 Access 项目中,日期和时间的数据类型,范围从 1753 年 1 月 1 日到 9999 年 12 月 31 日,精确度为三百分之一秒,即 3.33 毫秒。)
smalldatetime (smalldatetime 数据类型:Access 项目中的一种日期和时间数据类型,精度不如 datetime 时间数据类型。数据取值范围从 1900 年 1 月 1 日到 2079 年 6 月 6 日,精确度为一分钟。) |
自动编号 (“自动编号”数据类型:Microsoft Access 数据库中的一种字段数据类型,当向表中添加一条新记录时,这种数据类型会自动为每条记录存储一个唯一的编号。可以产生三种编号:顺序号、随机号和同步复制 ID。)(递增) | int (int 数据类型:Access 项目中的一种 4 字节(32 位)数据类型,存储位于 -2^31 (-2,147,483,648) 与 2^31 - 1 (2,147,483,647) 之间的数字。)(定义了 Identity 属性) |
文本 (text 数据类型:Microsoft Access 数据库中的一种字段数据类型。text 数据类型最多可以包含 255 个字符,或者是由 FieldSize 属性指定的一个小一些的字符数。) (n) | varchar(n) (varchar (n) 数据类型: Access 项目中的一种可变长度的数据类型,最大长度为 8,000 个 ANSI 字符。)
nvarchar(n) (nvarchar(n) 数据类型:在 Access 项目中,一种可变长度的数据类型,最多可含 4,000 个 Unicode 字符。Unicode 字符每字符占两个字节,而且支持所有国际字符。) |
备注 (“备注”数据类型:在 Microsoft Access 数据库中的一种字段数据类型。“备注”字段最多可以包含 65,535 个字符。) | text (text 数据类型:Access 项目中的一种长度可变的数据类型,最多可存储 2^31 -1 (2,147,483,647) 个字符;默认长度为 16。) |
OLE 对象 (“OLE 对象”数据类型:字段的数据类型之一,用于在其他应用程序中创建的、可链接或嵌入(插入)到 Access 数据库中的对象。) | image (image 数据类型:在 Access 项目中,一种长度可变的数据类型,最多可存储 2^31 -1 (2,147,483,647) 字节的二进制数据。image 数据类型用来存储 BLOB(二进制大对象),如图片、文档、声音和已编译代码。) |
同步复制 ID(又名全局唯一标识符 (GUID:在 Access 数据库中,一种用于建立同步复制唯一标识符的 16 字节字段。GUID 用于标识副本、副本集、表、记录和其他对象。在 Access 数据库中,GUID 是指同步复制 ID。) (GUID)) | uniqueidentifier (uniqueidentifier 数据类型:在 Access 项目中,16 字节的全局唯一标识符 (GUID)。) (仅适于 SQL Server 7.0 或更高版本) |
超链接 (“超链接”数据类型:存储超链接地址的 Access 数据库字段的数据类型。地址最多可以包含四部分,用以下语法格式编写:displaytext#address#subaddress#。) | char (char 数据类型:在 Access 项目中,一种固定长度的数据类型,最多可含 8,000 个 ANSI 字符。), nchar (nchar 数据类型:在 Access 项目中,一种固定长度的数据类型,最多可含 4,000 个 Unicode 字符。Unicode 字符每字符占两个字节,而且支持所有国际字符。), varchar, nvarchar(Hyperlink 属性设为 Yes) |
(无等价的数据类型) | varbinary (varbinary 数据类型:Access 项目中的一种可变长度的数据类型,最多可存储 8,000 字节的二进制数据。) |
(无等价的数据类型) | smallint (smallint 数据类型:Access 项目中的一种 2 字节(16 位)数据类型,存储位于 -2^15 (-32,768) 与 2^15 - 1 (32,767) 之间的数字。) |
(无等价的数据类型) | timestamp (timestamp 数据类型:在 Access 项目中,一种每插入或更新一行就会自动更新的数据类型。timestamp 列中的值不是 datetime 数据,而是 binary(8) 或 varbinary(8),标明了数据修改的顺序。) |
(无等价的数据类型) | char
nchar |
(无等价的数据类型) | sql_variant (sql_variant 数据类型:Access 项目中的一种数据类型,存储除 text、ntext、image、timestamp 和 sql_variant 类型以外的多种数据类型的值。在列、参数、变量或用户定义函数的返回值中使用。) |
(无等价的数据类型) | 用户定义 (用户定义的数据类型:在 Microsoft SQL Server 数据库中,允许某列包含的数据的类型定义,由用户利用现有的系统数据类型定义。规则和默认值仅可以绑定到用户定义的数据类型。) |
注释 在 Access 项目或 SQL Server 数据库中,前缀“n”代表“国家/地区”,意思是这个数据类型是启用 Unicode 的。在 Access 数据库中,全部文本列在默认情况下都是启用 Unicode 的。