精确数字
整数
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。
smallint
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整数数据。
tinyint
从 0 到 255 的整数数据。
bit
bit
1 或 0 的整数数据。
decimal 和 numeric
decimal
从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。
numeric
功能上等同于 decimal。
money 和 smallmoney
money
货币数据值介于 -2^63 (-922,337,203,685,4775808) 与 2^63 - 1 (+922,337,203,685,4775807) 之间,精确到货币单位的千分之十。
smallmoney
货币数据值介于 -214,7483648 与 +214,7483647 之间,精确到货币单位的千分之十。
近似数字
float
从 -179E + 308 到 179E + 308 的浮点精度数字。
real
从 -340E + 38 到 340E + 38 的浮点精度数字。
datetime 和 smalldatetime
datetime
从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 333 毫秒)。
smalldatetime
从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。
字符串
char
固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
varchar
可变长度的非 Unicode 数据,最长为 8,000 个字符。
text
可变长度的非 Unicode 数据,最大长度为 2^31 - 1 (2,147,483,647) 个字符。
Unicode 字符串
nchar
固定长度的 Unicode 数据,最大长度为 4,000 个字符。
nvarchar
可变长度 Unicode 数据,其最大长度为 4,000 字符。sysname 是系统提供用户定义的数据类型,在功能上等同于 nvarchar(128),用于引用数据库对象名。
ntext
可变长度 Unicode 数据,其最大长度为 2^30 - 1 (1,073,741,823) 个字符。
二进制字符串
binary
固定长度的二进制数据,其最大长度为 8,000 个字节。
varbinary
可变长度的二进制数据,其最大长度为 8,000 个字节。
image
可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节。
其它数据类型
cursor
游标的引用。
sql_variant
一种存储 SQL Server 支持的各种数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。
table
一种特殊的数据类型,存储供以后处理的结果集。
timestamp
数据库范围的唯一数字,每次更新行时也进行更新。
uniqueidentifier
全局唯一标识符 (GUID)。
FLOAT
FLOAT数据类型
可精确到第15 位小数,其范围为从-179E -308 到179E +308
DECIMAL
DECIMAL数据类型可以提供小数所需要的实际存储空间,但也有一定的限制,您可以用2 到17 个字节来存储从-10的38次方-1 到10的38次方-1 之间的数值。
两个都可以,一般使用Float类型的小数来表示百分比,但是根据你的需要使用其他表示方法也行,使用字符型,把比例用字符串
的形式存入也是可以的,比如说使用varchar,存入'1/7',使用INT,根据精度存入数字,如1234,取出后除以100,得1234等等。
decimal 是数据存储类型
28表示有效长度为28位
6表示小数占6位 不用SQL语言我就不知道怎么实现了
我也很想知道不用SQL语言怎么实现
例:
decimal(2,1),有效长度为2,小数位占1位。
此时,插入数据“123”、“12”等会出现“数据溢出错误”的异常;插入“123”或“12345”会自动四舍五入成“12”;插入“2”会自动补成“20”,以确保2位的有效长度,其中包含1位小数。
你不觉得上面说的有问题吗?
期待哪位大牛给你解决吧
decimal(10,2)中的“2”表示小数部分的位数,如果插入的值未指定小数部分或者小数部分不足两位则会自动补到2位小数,若插入的值小数部分超过了2为则会发生截断,截取前2位小数。
“10”指的是整数部分加小数部分的总长度,也即插入的数字整数部分不能超过“10-2”位,否则不能成功插入,会报超出范围的错误。
下面是decimal对应表,可以用来进行对照:
扩展资料:
Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间,例如百分比使用decimal(4,2)即可。
参考资料:
最近在看《深入浅出MySQL》一书,看到了数值类型那一节。里面介绍了一些常用字段的相关信息,如字节长度、最大值、最小值等。
当看到 DECIMAL 字段时,它的字节数是 M+2 ,这个让我很不解,是为什么?
DECIAML 与 FLOAT 和 DOUBLE 的存储方式不同。
FLOAT 和 DOUBLE 是用二进制存储数据的,所以会有部分精度问题。
DECIAML 是用字符串的方式存储的,所以它不存在精度问题,那么它的长度就是存储字节的长度。
那么问题来了,例如: DECIMAL(5,2) 的最大值是 99999 ,那么总长度也就是 5+1 ,又为什么是 5+2 呢?
第二天工作的时候,帮忙拉取一个数据,就手动 *** 作了一把,其中两个数据要相加一下。当我看到那个 + 号时,我想通了。
DECIMAL 也是有符号位的,而当时我只看的最大值,如果看最小值的话,就能够想通为什么是 M+2 了。
所以最终 DECIMAL 的长度计算方式是:1个字节的符号位 + 一个字节的小数点位 + 纯数字的长度(M) = 1 + 1 + M = M + 2。
困点得以解决,这种思考是被人直接告知要更加难得的,问题虽小,值得纪念。
1、数据库中表示小数。
2、所以java使用float接受定义,是最合适的。
3、还有一种Double类型,不过这种类型是使用小数很位数很多的时候使用它最后合适。
Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以再定义时划定整数部份以及小数部分的位数。使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间,例如百分比使用decimal(4,2)即可。存储数据范围是,-10^38~10^38 的固定精度和小数位的数字。一个decimal类型的数据占用了2~17个字节。decimal 的 SQL-92 同义字是 dec 和 dec(p, s),numeric 的功能相当於 decimal。
以上就是关于mysql有哪些数据类型长度分别是多少全部的内容,包括:mysql有哪些数据类型长度分别是多少、数据库decimal比例、SQL语言中 [decimal] (28,6) 是什么意思不用SQL语言怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)