mysql数据类型总结

数据类型优化

1、尽量使用能正常存储数据的最小数据类型(更快,占用更少的磁盘、内存和cpu)

2、尽量使用简单类型。(如整型比字符操作代价低)

3、尽量避免使用NULL(可以通过加默认值设置not null)

数据类型:支持别名,如integer,bool,numeric

1、时间

DATETIME和TIMESTAMP都精确到秒。通常应该尽量使用timestamp。

datetime

能保存大范围的值,从1001年到9999年把日期和时间封装到格式YYYYMMDDHHMMSS的整数中,与时区无关。使用8个字节的存储空间。

timestamp

存储秒数,只用4个字节,范围比datetime小:只能表示从1970到2038年。日期的显示依赖于时区。

默认为not null,如果插入时没有指定值,则默认值为当前时间。

2、整型

tinyint(8位),smallint(16位),mediumint(24位),int(32位),bigint(64位)

整型有可选的unsigned属性,表示正数

整数计算一般使用64位的bigint

可以为整数指定宽度(只是为用来规定mysql的交互工具显示字符的个数,不会限制值的合法范围

3、实数

精确类型:float,double(不适合用于货币的计算)

不精确类型:decimal,decimal只是一种存储格式,在计算中decimal会转换成double类型

可以指定精度,指定小数点前后所允许的最大位数

建议只使用数据类型,不要指定精度

4、字符串类型

char 

当存储为char类型时,mysql会删除所有的末尾空格(检索时),char值会根据需要采用空格进行填充以方便比较。

适合存储很短的字符串或者所有值接近同样的长度,经常变更的数据也更适合用char存储

varchar

仅使用必要的空间,但有一种情况例外,即若建表时使用row_format=fixed,则每一行都使用定长存储

需要1或2个额外字节记录字符串长度(若列最大长度小于等于255,只需要一个字节,依次类推)

适用情况:

  • 字符串列最大长度比平均长度大很多
  • 列更新少,不存在碎片问题
  • 使用了像utf-8这样复杂的字符集,每个字符都使用不同的字节数来存储

binary和varbinary存储二进制字符串(字节码),填充binary使用‘\0‘填充,检索时也会去掉填充值

5、BLOB和TEXT类型

二进制方式存储:tinyblob,smallblob(blob的同义词),mediumblob,longblob

字符方式存储:tinytext,smalltext(text的同义词),mediumtext,longtext

6、使用枚举(ENUM)代替字符串类型

存储时非常紧凑,会根据列表值的数量压缩到一个或两个字节中

create table enum_test(

e enum(‘fish‘,‘apple‘,‘dog‘) not null

)

insert into enum_test(e) values(‘fish‘),(‘dog‘),(‘apple‘)

数据插入后存放在表中的数据实际上是整数而不是字符串。

7、位数据类型

bit

bit(1)定义一个包含单个位的字段,bit(2)存储两个位。bit列的最大长度是64位。

mysql把bit当作字符串类型,而不是数字类型。

最好避免使用这种类型,如果要用一个bit存储一个true/false值,替代方法是创建一个char(0),可以保存空值NULL或者长度为0的字符串。

set

保存很多true/false值的集合

例如

create table acl(

perms set(‘can_read‘,‘can_write‘,‘can_delete‘) not null

)

insert into acl(perms) values(‘can_read,can_delete‘);

优点:有效利用存储空间,可以使用find_in_set()等函数

缺点:改变列定义的代价太高:需要alter table,对大表来说非常昂贵。而且无法在set列上通过索引查找

参考:《高性能Mysql》

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-30 18:12:39

mysql数据类型总结的相关文章

(转)mysql数据类型

1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~2147483647) bigint(m) 8个字节  范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为

MySQL 数据类型(转)

MySQL 数据类型 在 MySQL 中,有三种主要的类型:文本.数字和日期/时间类型. Text 类型: 数据类型 描述 备注 CHAR(size) 保存固定长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的长度.最多 255 个字符.   VARCHAR(size) 保存可变长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的最大长度.最多 255 个字符. 注释:如果值的长度大于 255,则被转换为 TEXT 类型.   TINYTEXT 存放最大长度为 25

跟王老师学MySQL:MySQL数据类型之小数类型

跟王老师学MySQL:MySQL数据类型之小数类型 主讲教师:王少华   QQ群号:483773664 学习内容 小数类型有哪些以及它们的取值范围 定义语法中的M和D的含义 定点型和浮点型的区别 一.简介 MySQL中使用浮点数类型和定点数类型来表示小数. 浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型). 定点数类型就是DECIMAL型. 二.字节数.取值范围 三.定义语法 1 类据类型 (M,D) M:精度,数据的总长度 D:标度,小数点后的长度 注: 小数点不占长

跟王老师学MySQL:MySQL数据类型之字符类型

跟王老师学MySQL:MySQL数据类型之字符类型 主讲教师:王少华   QQ群号:483773664 学习内容: 字符串类型的种类及其特点 char和varchar的异同 字符串类型是在数据库中存储字符串的数据类型. 字符串类型包括 CHAR. VARCHAR BLOB TEXT 一.char和varchar (一)定义语法 1 字符串类型 (M) 注: 字符串类型:char或varchar M:指定了该字符串最大长度 (二)二者不同之处 char类型长度是固定的,即在创建表时就指定了,其长度

跟王老师学MySQL:MySQL数据类型之日期与时间类型

跟王老师学MySQL:MySQL数据类型之日期与时间类型 主讲教师:王少华   QQ群号:483773664 学习内容 YEAR类型的特点及使用 TIME类型的特点及使用 DATE类型的特点及使用 DATETIME类型的特点及使用 TIMESTAMP类型的特点及使用 MySQL表示日期和时间的数据类型有以下几种: 1.YEAR类型 2.TIME类型 3.DATE类型 4.DATETIME类型 5.TIMESTAMP类型 一.Year类型 (一)简介 year使用一个字符串来表示年份 MySQL中

跟王老师学MySQL:MySQL数据类型常见问题及解答

跟王老师学MySQL:MySQL数据类型常见问题及解答 主讲教师:王少华   QQ群号:483773664 学习内容 整数类型和浮点类型的异同 浮点数类型和定点数类型的异同 char和varchar类型的异同 时间和日期类型的异同 text和blob的异同 存储路径字符串的注意事项 mysql如何存储boolean类型 null的处理 在MySQL中创建表时,需要考虑为字段选择哪种数据类型是最合适的.选择了合适的数据类型,会提高数据库的效率. 一.整数类型和浮点类型 整数类型和浮点类型最大区别是

跟王老师学MySQL:MySQL数据类型之整数类型

跟王老师学MySQL:MySQL数据类型之整数类型 主讲教师:王少华   QQ群号:483773664 MySQL的数据类型包括整数类型.浮点数类型.定点数类型.日期和时间类型.字符串类型和二进制数据类型. 学习目标 整型包括哪些类型以及它们的取值范围 以tinyint为例,讲解了定义整型的三个属性 一.简介 整数类型是数据库中最基本的数据类型. 标准SQL中支持INTEGER和SMALLINT这两类整数类型. MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT.MEDIUMIN

MySQL入门很简单: 2 MySQL数据类型

2. MySQL数据类型 2.1 整数类型 后面的是默认显示宽度: tinyint(4) smallint(6) mediumint(9) int(11) bigint(20) 2.2 浮点型和定点数类型 MySQL可以指定浮点数和定点数的精度:    数据类型(M,D)  M:数据总长度, D:小数点后的长度

21分钟 MySQL 入门教程 && mysql数据类型

转自:http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#c1 http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html 21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据类型 五.使用MySQL数据库 登录

DF学Mysql(三)——Mysql数据类型

Mysql数据类型分为:整数类型.浮点数类型.定点数类型日期与时间类型字符串类型二进制类型 整数类型 字节数 无符号数取值范围 有符号数取值范围TINYINT 1 0-255 -128-127SMALLINT 2 0-65535 -32768-32767MEDIUMINT 3 0-16777215 -8388608-8388607INT 4 0-4294967295 -2147483648-2147483647INTGER 4 0-4294967295 -2147483648-214748364