mysql数据类型整理

mysql 数据类型的概念

定义数据类型的本质上是定义列 类似于描述列

数据分类的意义

分配合适的存储空间

采用不同的操作方法

对应不同的需求


整数类型

正负0 造成 负数多一个

tinyint 1byte 0-255 -128 ~ 127

smallint 2b 0~65535

mediumt 3b

int 4b

bigint 8b


带小数的类型

float 4b 0,(3.4)

double 8b

decimal M>D M+2

M<D D+2

decimal 最大支持 (65,30) 默认为(10,0)

M 整数位

D 小数位

日期和时间类型


类型 格式 存储需求 范围

YEAR(M) YYYY/YY 1b 1901/1979 2155/2069

TIME HH:MM:SS 3b -838:59:59 838:59:59

DATE YYYY-MM-DD 3b 1000-01-01 9999-12-31

DATETIME YYYY-MM-DD HH:MM:SS 8b 1000-01-01 00:00:00 9999-12-31 23:59:59

TIMESTMP YYYY-MM-DD HH:MM:SS 4b 1970-01-01 00:00:00 2038-01-19 03:14:07 UTC


use db2

create table t_year(

col1 year(4),

col2 year(2)

);

inster into t_year values (2014),(14)

select * from t_year

当用单引号 把0括上 默认从 2000年开始


inster into t_time values ('10:10:10');

('2 10:10') TIME 就变成了 (58:10:00);

字符串类型

文本字符串类型和二进制字符串类型

不仅可以存储字符串,还可以存储其它数据

字符串可以区分或不区分大小比较

支持进行模式匹配查找

类型 大小范围 用途 存储要求

char(M)定长字符串 0-255b 定长字符串 Mbytes  1<=M<=255

varchar(M) 0-65535b 变长字符串 L+1 bytes L<=M 且 1<=M<=255

tinybolb 0-255

tinytext 0-255

blob 0-65535

text 0-65535

mediumblob 0-16777215

mediumtext 0-16777215

logngblob 0-4294067295

longtext 0-4294067295

enum 1-2

set 1-8


show variables like 'sql_mode';


text 类型

长的非二进制字符串

例如:文章、评论

可以把text类型理解为varchar 加长增强版

text 类型不区分大小写  匹配查询的时候无法匹配大小写


enum类型

枚举型  不区分大小写

create table t1 (sex enum ('F','M','UN'));


set类型

可以多选

create table t2(s1 set('a','b','c'));

desc t1  查看表结构


二进制类型

no character set

以bytes为单位存储,文本是用 字符 存储的


字符串类型的选择

不同的数据引擎,选择倾向不一样

myisam  中 char  效率高于 varchar

innodb 中 char  效率基本等于 varchar  但是varchar 可变长度的优势显示出来了

memory  中 car varchar 效率类似,

不同的用户选择倾向不同

char 适合短的字符,并且经常变更的内容

varchar 与上条相反。


浮点数和定点数的选择

精度要求不同,选择大不同

相比较而言,定点数的计算代价要昂贵的多

decimal 跟钱有关的事情, 对数据精度要求高的采用


大数据类型的选择

能不用尽量不用

text 和 blob有很多替代选择

如果存在经常的删除和更新

建议定期使用 optimize table 进行碎片整理

建议 调用 文件地址存进去

日期类型的选择

timestamp扎用空间少,但是注意他的特性,有时区限制,根据市区的选择会编号


总结

定义数据类型就是定义列

数据 字符串 整数、浮点 定点 日期 二进制 enum set boleen

不同引擎 不同表现选择不同

需求选择


你可能感兴趣的:(mysql,double,空间)