SQL 通用数据类型

SQL 通用数据类型

数据类型定义列中存放的值的种类。

SQL 通用数据类型

数据库表中的每个列都要求有名称和数据类型。Each column in a database table is required to have a name and a data type.

SQL 开发人员必须在创建 SQL 表时决定表中的每个列将要存储的数据的类型。数据类型是一个标签,是便于 SQL 了解每个列期望存储什么类型的数据的指南,它也标识了 SQL 如何与存储的数据进行交互。

 

下面的表格列出了 SQL 中通用的数据类型:

数据类型

描述

CHARACTER(n)

字符/字符串。固定长度 n。

VARCHAR(n) 或
CHARACTER VARYING(n)

字符/字符串。可变长度。最大长度 n。

BINARY(n)

二进制串。固定长度 n。

BOOLEAN

存储 TRUE 或 FALSE 值

VARBINARY(n) 或
BINARY VARYING(n)

二进制串。可变长度。最大长度 n。

INTEGER(p)

整数值(没有小数点)。精度 p。

SMALLINT

整数值(没有小数点)。精度 5。

INTEGER

整数值(没有小数点)。精度 10。

BIGINT

整数值(没有小数点)。精度 19。

DECIMAL(p,s)

精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数小数点后有 2 位数的数字。

NUMERIC(p,s)

精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同)

FLOAT(p)

近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。

REAL

近似数值,尾数精度 7。

FLOAT

近似数值,尾数精度 16。

DOUBLE PRECISION

近似数值,尾数精度 16。

DATE

存储年、月、日的值。

TIME

存储小时、分、秒的值。

TIMESTAMP

存储年、月、日、小时、分、秒的值。

INTERVAL

由一些整数字段组成,代表一段时间,取决于区间的类型。

ARRAY

元素的固定长度的有序集合

MULTISET

元素的可变长度的无序集合

XML

存储 XML 数据

 

SQL 数据类型快速参考手册

然而,不同的数据库对数据类型定义提供不同的选择。

下面的表格显示了各种不同的数据库平台上一些数据类型的通用名称:

数据类型

Access

SQLServer

Oracle

MySQL

PostgreSQL

boolean

Yes/No

Bit

Byte

N/A

Boolean

integer

Number (integer)

Int

Number

Int
Integer

Int
Integer

float

Number (single)

Float
Real

Number

Float

Numeric

currency

Currency

Money

N/A

N/A

Money

string (fixed)

N/A

Char

Char

Char

Char

string (variable)

Text (<256)
Memo (65k+)

Varchar

Varchar
Varchar2

Varchar

Varchar

binary object

OLE Object Memo

Binary (fixed up to 8K)
Varbinary (<8K)
Image (<2GB)

Long
Raw

Blob
Text

Binary
Varbinary


decimal(numeric) 同义,用于精确存储数值

decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。

decimal数据类型存储了一个精确的数字表达法;不存储值的近似值。

 

定义decimal的列、变量和参数的两种特性如下:

p 小数点左边和右边数字之和,不包括小数点。如 123.45,则 p=5,s=2。

指定精度或对象能够控制的数字个数。

s 指定可放到小数点右边的小数位数或数字个数。

p 和 s 必须遵守以下规则:0 <= s <= p <= 38。

numeric 和 decimal 数据类型的默认最大精度值是38。

 

Transact-SQL 中,numeric 与 decimal 数据类型在功能上等效。

当数据值一定要按照指定精确存储时,可以用带有小数的decimal 数据类型来存储数字。

 

转换 decimal 和 numeric 数据

对于 decimal 和 numeric 数据类型,Microsoft® SQL Server™ 将精度和小数位数的每个特定组合看作是不同的数据类型。例如,decimal(5,5) 和 decimal(5,0) 被当作不同的数据类型。

 

Transact-SQL 语句中,带有小数点的常量自动转换为 numeric 数据值,且必然使用最小的精度和小数位数。例如,常量 12.345 被转换为 numeric 值,其精度为 5,小数位为 3。

 

decimal 或 numeric 向 float 或 real 转换会导致精度损失。 int、smallint、tinyint、float、real、money 或 smallmoney 向 decimal 或 numeric 转换会导致溢出。

默认情况下,在将数字转换为较低精度和小数位数的 decimal 或 numeric 值时,SQL Server 使用舍入法。然而,如果 SET ARITHABORT 选项为 ON,当发生溢出时,SQL Server 会出现错误。若仅损失精度和小数位数,则不会产生错误。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值