请教高手:SQL如何获取某个数据类型的最大值

发布网友

我来回答

1个回答

热心网友

这个 需要一些基础的计算机原理知识
拿整数类型为例(int,smallin.tinyint.bigint) 后面的括号写多少数字 就是这个数字最大10进制的位数+1 的存放空间。 另外还要看是否是支持负值。
举例 Tinyint(4) uz 就是 8位bit的整数 取值范围 0-255

三位数最大999 +1 就是4 所以4代表了 3位数,而三位数的 bit位是byte 也就是8位(二进制)整数 uz无符号。就是不支持负值。所以是0-255

tinyint(4) 就是有符号的8位整数 取值范围 -127~127
smallint(6) uz 最大值65535 最小0 也就是16位整数

int(11) 最大值 21474837 最小 -21474837 10位数(10进制),所以括号里写11
int(11) uz 最大值就是4294967295,最小0
以此类推,所以 bigint(20) 对应的就是长整形(位long), tinyint(1) 对应的就是1bit 也就是 0或者1 用于表示bool
enum枚举实际上可以是 8位、16位、32位整数的 枚举型式。mysql的美剧比较奇怪 是从1开始算 不是0.
set 的话 实际上 也可以是 8位 16 位 32位 位等等的 集合类型。 个元素就是位的bits
至于字符串实际上是 char的数组 如果是utf8编码实际对应的bits还不一定相等。utf16的话 如果支持Notnull的字符串,每个字符一定需要16bits 如果可以为null的话 支持的长度 相当于少两个字节 也就是 少16bits
比如varchar(16) notnull 实际需要 16~48个字节的存储空间 utf-8编码就是这么蛋疼 utf-16
编码就固定为32个字节。(英文字符多的话,反而浪费空间。全汉字省空间)
varchar(15) 可以为null的话 实际需要16~48个字节的存储空间。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com