MySql 字段的所有数据类型

1. 查询MYSQL的默认提交
mysql> show VARIABLES LIKE 'AUTOCOMMIT';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set
在同一个事务中,使用多种存储引擎是不可靠的
如果混合使用了InnoDB(事务)和MyISAM(非事务)表,正常提交没有问题,但是如果需要异常回滚结果是不确定的
因为非事务表的变更时无法确定的
MYSQL引擎的选择,简单的归纳一句话,除非要用到InnoDB不具备的特性,而且没有方法可以替代,
否则都应该选择InnoDB

例如:如果要用到全文索引,建议优先考虑InnoDBhe Sphinx的组合,而不是使用支持全文索引的MyISAM
1. 整型
tinyint smallint mediumint int bigint 分别用 8 16 24 32 64位存储空间
存储的范围从 -2(N-1) —— 2(N-1)-1
比如tinyint 是-128到127,而且不管字段设计的时候的长度是多少,默认是4,范围都是-128-127
有符号和无符号使用相同的存储空间,并具备相同的特性
但是不同的是如果选中了无符号,就不会存在负数了,相对而言,值也会扩大一倍,比如
tinyint 会变成 0-255
MySQL可以为字段指定长度,例如int(11) 但是对大多数都没有意义,因为它不会限制值得合法范围
只是规定了MYSQL客户端用来显示字符得个数,对于存储和计算来说,int(10)和int(20)是相同的

2. 浮点类型
DECIMAL(18,9) 小数点两端各使用9个数字
但是如果要将数据精确到万一之一,可以把金额乘以1百万,保存到BIGINT里面
这样可以避免浮点存储不精确和DECIMAL精确计算代价高的问题
3. VARCHAR 和CHAR
VARCHAR 需要1-2个额外的字节存储字符串的长度
超过255的字节(不包括255)使用2个字节
例如 VARCHAR(11)  需要12个字节的存储空间      VARCHAR(300)需要302个字节
VARCHAR越短的字符串使用越少的空间
CHAR定长  存储CHAR时,MYSQL会把首尾的空格去掉然后存储
CHAR对于一些定长的数据,效率比较高,比如存储11位MD5盐值
4. BLOG 和TEXT
bolg采用二进制存储,TEXT字符存储
当他们的值太大时,InnoDB会使用外部的存储区域来存储他们
这是他们在行内只需要使用1-4个字节来存储一个指针,然后在外部存储实际的值
BLOG 没有排序规则和字符集,TEXT有排序规则和字符集
而且MYSQL对于TEXT的排序,只会对每一个列的最前面的 max_sort_length 字节而不是整个字符串排序

5. 枚举类型


create table enum_test (sex ENUM('男','女','未知'))
但是这三行实际存储为整数,而不是字符串,可以通过下面语句得到
SELECT sex + 0  FROM enum_test;

select sex from enum_test order by sex ;
其实排序是按照存储的整数进行排序的,而不是存储的实际字符串
所以如果使用数字作为枚举常量,就会混乱,不要这样做
缺点: 建完一个枚举列之后除非删除,否则不能修改
6. 时间和日期格式
DATETIME 和TIMESTAMP
DATATIME 从1001-9999 精确度为秒,把时间和日期封装成整数,与时区无关,使用8个字节存储空间
TIMESTAMP 因为只使用了4个字节,所以只能存储1970-2038而且带时区
如果在不同的时区访问相同的数据,定义成DATETIME会带来很大的区别
因此尽量不要用DATETIME
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值