基于mysq字段选择的详解
mysql支持很多字段类型,包括数值类型、日期/时间类型和字符串(字符)类型;在使用时需要考虑到存储空间,存储效率;
几种列类型描述使用了下述惯例:
字符类型:
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个字节;
smallint(16),2个字节
mediumint(24),3个字节
int(32),4个字节
bigint(64),8个字节
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
换算成二进制表示:
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可能的最大取值范围与DOUBLE一样
,但是其有效的取值范围由M和D的值决定,存蓄
的方式是字符串;
Decimal(M,D)占M+2个字节,小数点和符号需要各自占一个字节;
DECIMAL可能的最大取值范围与DOUBLE一样,但是其有效的取值范围由M和D的值决定,存蓄的方式是字符串;
相关文章
- 在Ubuntu上搭建一个基于webrtc的多人视频聊天服务实例代码详解
- hadoop基于Linux7的安装配置图文详解
- Oracle11g:分区表数据操作出现ORA-14400异常处理详解数据库
- [android] 字符乱码问题的处理详解手机开发
- linux环境下搭建redis详解程序员
- 第一章1-7详解程序员
- 大数据处理平台Hadoop之安装(基于ubuntu的Hadoop2.9.0,2.X.X同适用)详解大数据
- Hive学习之路 (十七)Hive分析窗口函数(五) GROUPING SETS、GROUPING__ID、CUBE和ROLLUP详解大数据
- 基于Kafka的实时计算引擎如何选择Flink or Spark详解大数据
- [javaSE] 数组(排序-选择排序)详解编程语言
- java.lang.ClassCastException:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcesso详解编程语言
- 基于Spring + Drools6.4规则引擎代码实例详解编程语言
- js获取当前时间显示在页面上详解编程语言
- Automatically generate serial number in abap详解编程语言
- javascript 逗号运算符详解编程语言
- 基于App自适应draw9patch不失真背景的方法详解
- 基于Java回顾之JDBC的使用详解
- 基于C++中sprintf的错误总结详解
- 基于select、poll、epoll的区别详解
- 基于phpsplit()函数的用法详解
- 基于PHP5魔术常量与魔术方法的详解
- 基于PHP+Ajax实现表单验证的详解