基于mysq字段选择的详解

2023年 4月 22日 34.9k 0

mysql支持很多字段类型,包括数值类型、日期/时间类型和字符串(字符)类型;在使用时需要考虑到存储空间,存储效率; 几种列类型描述使用了下述惯例: · M 表示最大显示宽度。最大

mysql支持很多字段类型,包括数值类型、日期/时间类型和字符串(字符)类型;在使用时需要考虑到存储空间,存储效率;几种列类型描述使用了下述惯例:·  M表示最大显示宽度。最大有效显示宽度是255。·  D时间类型:datetime(8bytes),timestamp(4bytes)字符类型:VARCHAR(M),L+1个字节,其中L<= M且0 <=M<= 65535,不宜把M设置得过大,因为在内存中会计算实际长度,这个计算时需要消耗资源的;CHAR(M)M个字节,0 <= M<= 255BINARY(M),M个字节,0 <= M <= 255VARBINARY(M),L+1个字节,其中L <= M且0<= M <= 255ENUM('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 = 111 0110 1110 1001 0111 1001 (省略了最高数字位1, 共23bit)  组合起来就是:S         E                       M0        10000101     111 0110 1110 1001 0111 1001

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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论