zl程序教程

您现在的位置是:首页 >  其它

当前栏目

基于mysq字段选择的详解

详解 基于 选择 字段 Mysq
2023-06-13 09:15:02 时间

mysql支持很多字段类型,包括数值类型、日期/时间类型和字符串(字符)类型;在使用时需要考虑到存储空间,存储效率;
几种列类型描述使用了下述惯例:
· M
表示最大显示宽度。最大有效显示宽度是255。
· D
时间类型:datetime(8bytes),timestamp(4bytes)
字符类型:
VARCHAR(M),L+1个字节,其中L<=M且0<=M<=65535,不宜把M设置得过大,因为在内存中会计算实际长度,这个计算时需要消耗资源的;
CHAR(M)M个字节,0<=M<=255
BINARY(M),M个字节,0<=M<=255
VARBINARY(M),L+1个字节,其中L<=M且0<=M<=255
ENUM("value1","value2",...),1或2个字节,取决于枚举值的个数(最多65,535个值),调整比较复杂,需要先drop在create;在枚举值小于255时,占1个字节,大于255时占2个字节;
SET("value1","value2",...)1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员),1-8占1个字节,9-16占2个字节,17-24占3个字节,25-32占4个字节,33-64占8个字节;
整型类型:
tinyint(8),一个字节
smallint(16),2个字节
mediumint(24),3个字节
int(32),4个字节
bigint(64),8个字节
实型类型:
float(4bytes)
Float(M,D) 单精度浮点型,精确到小数点后面6位,双精度double(M,D)精确到小数点后面13位;
float内存如何存储
        
类型
 存储位数
 总位数
 偏移值

 数符(S)
 阶码(E)
 尾数(M)
 (offset)

短实数(float)
   1
   8
  23
   32
 127

长实数(double)
   1
   11
  52
   64
 1023

Float怎么存储
N(10)=123.456,
换算成二进制表示:
N(2)=1111011.01110100101111001
=1.11101101110100101111001(...)*2^6
 那么E=127+6=133(10)=10000101(2)
M=11101101110100101111001(省略了最高数字位1,共23bit)
 组合起来就是:
S        E                      M
0       10000101    11101101110100101111001

整型类型:
Decimal(M,D)占M+2个字节,小数点和符号需要
各自占一个字节;
DECIMAL可能的最大取值范围与DOUBLE一样
,但是其有效的取值范围由M和D的值决定,存蓄
的方式是字符串;
Decimal(M,D)占M+2个字节,小数点和符号需要各自占一个字节;
DECIMAL可能的最大取值范围与DOUBLE一样,但是其有效的取值范围由M和D的值决定,存蓄的方式是字符串;