跟我学SQL:(八)数值数据类型

数据|数据类型

SQL92标准定义了若干种基本数据类型,它们是SQL数据库中各种数据类型的基础。在《字符串数据类型》一文中,我们已经详细讨论了SQL92标准所定义的字符串数据类型。现在,我们来进一步讨论数值数据类型。   
你最好开始尝试使用不同数据库实现方法并在它们传递数据,这样可以加深你对数值数据类型的理解。本文将给你一个数值数据类型的概要,你可以结合你的数据库的文档资料来学习。

在字符串、数值、datetime和interval这四种数据类型中,数值型的种类最多,约束也最多。在不同数据库实现方法之间交换数据时,数值型的精度也最容易降低。Oracle和SQL服务器之间的实现分歧(同样的数据类型长度不同)导致它们之间的数据传递过程会截短数字、改变它们的数值。因此,在移植程序前,你有必须很明确的了解两个平台间的数据定义差异,以及危及数据精度的风险。

谨记上述警告后,让我们看看SQL92标准的数值类型

基本数值类型
与数值有关的类型统称为数值类型。所有的数值都有精度,精度指的是有效数字位数。有的数值还有标度值(scale value),它用来指示小数点右边的最小有效数字位数。例如,数字1234.56的精度为6,标度值为2,可以定义为NUMERIC(6,2)。

每一个数据库实现方法都有关于如何近似数值或者截短数值的规则。除了提供获取数值长度和其它数值处理所需的属性外,SQL92提供了内建函数,如加、减、乘、除等。所有的数值类型之间都可以互相比较、互相赋值。尽管实现方法不同,但是它们有一个的共同点,即它们的结果一般都保留最大精度。

NUMERIC

用法:NUMERIC(精度,标度值) 

是一种精确数值类型,即它是数字的值的文字表示。(可以对该数字进行取舍或者截取以符合指定精度,标度值由预定义的规则确定。) 
为了符合标度值指定的小数数字位数,舍去多余的小数部分,舍入过程采用十进制。 
数字的总长度等于精度,如果标度值大于0(有小数部分),则长度加1。 
小数部分的位数要符合标度值。 
DECIMAL | DEC
用法:DECIMAL(精度,标度值) | DEC(精度,标度值)

是一种精确数值类型。 
用十进制。 
数字的总长度等于精度,如果标度值大于0(有小数部分),则长度加1。 
小数部分的位数不得小于标度值,小数位数的上限由数据库提供商设定。 

INTEGER | INT
用法: INTEGER(精度)

是一种精确数值类型。 
使用二进制或者十进制,这基于表示该数值的二进制位(bit)的个数(这是implementation-specific,与SMALLINT对应)。 
标度值恒为0。 
数据库供应商对其定义了最大精度和最小精度。 
供应商可能会提供的默认精度。 
SMALLINT
用法:SMALLINT(精度)

是一种精确数值类型。 
位数取舍方法与INTEGER (二进制或者十进制)相同。 
标度值恒为0。 
最大精度等于或者小于INTEGER的最大精度。 
FLOAT
用法:FLOAT(精度)

是一种近似数值类型,即对一个指定的数值用指数形式表示出来,如1.23e-45(等于),该数值类型的取舍和截短方法大多由数据库提供商定义。 
当取舍时,使用二进制精度。 
精度表示使用的最小位数,最大精度由数据库提供商设定。 
REAL
用法:REAL

是一种近似数值类型。 
使用二进制精度,最大精度由数据库提供商设定。 
其默认精度必须小于DOUBLE PRECISION的默认精度。 
DOUBLE PRECISION
用法: DOUBLE PRECISION

是一种近似数值类型。 
使用二进制精度,最大精度由数据库提供商设定。 
其默认精度必须大于PRECISION的默认精度。 
相关理论
数据库提供商在基本数据类型的基础上创建了你实际需要的数据类型。对数值类型来说,它可以包括同名的数据类型,如INT、REAL,也包括为了满足特定场合或者用途而创建的新数据类型。

在我们的下一篇文章,我们将讨论datetime和interval数据类型。

时间: 2024-08-07 02:10:42

跟我学SQL:(八)数值数据类型的相关文章

跟我学SQL:数值数据类型

SQL92标准定义了若干种基本数据类型,它们是SQL数据库中各种数据类型的基础.在<字符串数据类型>一文中,我们已经详细讨论了SQL92标准所定义的字符串数据类型.现在,我们来进一步讨论数值数据类型. 你最好开始尝试使用不同数据库实现方法并在它们传递数据,这样可以加深你对数值数据类型的理解.本文将给你一个数值数据类型的概要,你可以结合你的数据库的文档资料来学习. 在字符串.数值.datetime和interval这四种数据类型中,数值型的种类最多,约束也最多.在不同数据库实现方法之间交换数据时

跟我学SQL:(六)串行数据类型

数据|数据类型 SQL的数据类型决定了一个字段的内容在数据库中会被如何处理.存储和显示.SQL92定义了标准的数据类型,目的是给数据库制造商建立自己的数据类型提供蓝图.在前面的文章中,我们介绍了一些常用的数据类型,这些数据类型分为四大类:串行数值日期时间区间型  本文将向你概述这些数据类型在数据库中是如何使用的,然后着重解释串行数据类型.这些信息可以作为有用的参考,或者作为关于某个数据库制造商具体产品中数据类型的背景知识. 使用数据类型当你在数据库中创建了一个表格,你就定义了每列的名字以及要输入

字段-如何禁止sql查询时数据类型的自动转化

问题描述 如何禁止sql查询时数据类型的自动转化 用的是sqlserver2005,里面设计了一个表table,里面有一个字段column1设置的是nvarchar(100),里面有两条记录,分别是'2301'和'002301',现在用语句 SELECT * FROM dbo.table WHERE column1=2301,按理来说应该将2301转化为'2301'来查询或者报错,但是奇怪的是,数据库将column1中储存的字段转化为了int型,这样一来'2301'和'002301'就都转化为2

从头开始学JavaScript (八)——变量

原文:从头开始学JavaScript (八)--变量 一.变量分类: 基本类型值:null.undefined.number.string.Boolean: 引用类型值:保存在内存中的对象,如:Object / Array / Function / Date / RegExp / Error / Map / Set - 二.属性 二者的定义方式是类似的:创建一个变量并为其赋值. 2.1基本类型值不能添加删除属性 2.2引用类型的属性可以动态添加删除属性 例如: 1 <script type=&quo

SQL Server 2008数据类型

在创建表时,必须为表中的每列指派一种数据类型.本节将介绍SQL Server中最常用的一些数据类型.即使创建自定义数据类型,它也必须基于一种标准的SQL Server数据类型.例如,可以使用如下语法创建一种自定义数据类型(Address),但要注意,它基于SQL Server标准的varchar数据类型. CREATE TYPE Address   FROM varchar(35) NOT NULL  如果在SQL Server Management Studio的表设计界面中更改一个大型表中某

SQL SERVER的数据类型

server|数据|数据类型 1.SQL SERVER的数据类型 数据类弄是数据的一种属性,表示数据所表示信息的类型.任何一种计算机语言都定义了自己的数据类型.当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同.SQLServer 提供了 25 种数据类型: ·Binary [(n)] ·Varbinary [(n)] ·Char [(n)] ·Varchar[(n)] ·Nchar[(n)] ·Nvarchar[(n)] ·Datetime ·Smalldat

《Python语言程序设计》——2.8 数值数据类型和运算符

2.8 数值数据类型和运算符 关键点:Python中有两种数值类型(整数和浮点数)与+.-.././/.%和*一起工作. 储存在计算机中的信息通常被称为数据.这里有两种数值数据类型:整数和实数.整数类型Integer(简写作int)用于表示整数.实数型用于表示有小数部分的数字.在计算机中,这两种数据类型的存储方式不同.实数型表示为浮点数.我们怎样告知Python一个数字是整数还是浮点数呢?一个拥有小数点的数字即使小数部分为零也是浮点数.例如:1.0是浮点数,而1是整数.这两个数字在计算机里的存储

SQL SERVER的数据类型_MsSql

1.SQL SERVER的数据类型 数据类弄是数据的一种属性,表示数据所表示信息的类型.任何一种计算机语言都定义了自己的数据类型.当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同.SQLServer 提供了 25 种数据类型: Binary [(n)] Varbinary [(n)] Char [(n)] Varchar[(n)] Nchar[(n)] Nvarchar[(n)] Datetime Smalldatetime Decimal[(p[,s])]

跟我学SQL:(九)datetime和interval数据类型

数据|数据类型 datetime和interval是两种与时间有关的数据类型.它们的作用体现在以下几个方面:创建或者更改记录库中的某条记录.当某个时间发生时运行记录.或者计算某个datetime变量建立后所经历过的时间.本文将介绍SQL92标准对上述两种数据类型的描述.    SQL数据类型 如果你想进一步了解SQL数据类型,请阅读SQL基础:字符串型数据类型,这篇文章的范围覆盖了SQL中的通用数据类型并说明了各种字符串数据类型的用法,SQL基础:数字数据类型详细介绍了数字数据类型. Datet