MySQL 数据类型的简单选择
2015-06-15 10:37
429 查看
选择合适的数据类型:
char和varchar:
char(6)的存储需求总是6个字节。
varchar(6)存储''需要个1字节。
varchar(6)存储'str'需要4个字节。
varchar(6)存储'str123'需要7个字节。
varchar(6)存储'str123no'需要7个字节。
总结:char(n)所需要的存储字节为n
varchar(n)所需要的字节依赖于插入的字符串m,m+1<=字节<=n+1
text与blob
一般存储少量字符串的时候,我们会选择char或者varchar,而在存储较大文本的时候通常会选择text或者blob。二者之间的主要差别是blob能用来保存二进制数据,比如照片。而text只能用来保存字符数据,比如一片文章。
text又分为text、mediumtext、longtext
blob又分为blob、mediumblob、longblob
主要区别就是存储文本长度不同和存储字节不同。
经常使用blob和text类型会引起性能的降低。删除操作会在表中留下很大的"空洞"(并不会因为数据的减少而清空空间。类似于书架,书拿走了,空间还在占用),可以定期优化表进行碎片整理。optimize table
日期类型的选择
DATE、TIME、DATETIME、TIMESTAMP
几个原则:
如果只需要年,用YEAR类型就可以。
如果需要的时间范围比较大,用DATETIME
如果给不同时区用户使用,则用TIMESTAMP
浮点数和定点数
浮点数一般用户包含有小数位的数值。float、double如果插入数据到过定义的精度有可能被四舍五入。定点数实际上是以字符串形式存放的。所以定点数可以精确的保存数据。如果实际插入的数据大于精度,则会告警。decimal用来表示定点数。
在精度要求比较高的应用中类似货币要使用定点数保存。
char和varchar:
+---------+------------+ | char(6) | varchar(6) | +---------+------------+ | | | | str | str | | str123 | str123 | | str123 | str123 | +---------+------------+ 4 rows in set (0.00 sec)
char(6)的存储需求总是6个字节。
varchar(6)存储''需要个1字节。
varchar(6)存储'str'需要4个字节。
varchar(6)存储'str123'需要7个字节。
varchar(6)存储'str123no'需要7个字节。
总结:char(n)所需要的存储字节为n
varchar(n)所需要的字节依赖于插入的字符串m,m+1<=字节<=n+1
text与blob
一般存储少量字符串的时候,我们会选择char或者varchar,而在存储较大文本的时候通常会选择text或者blob。二者之间的主要差别是blob能用来保存二进制数据,比如照片。而text只能用来保存字符数据,比如一片文章。
text又分为text、mediumtext、longtext
blob又分为blob、mediumblob、longblob
主要区别就是存储文本长度不同和存储字节不同。
经常使用blob和text类型会引起性能的降低。删除操作会在表中留下很大的"空洞"(并不会因为数据的减少而清空空间。类似于书架,书拿走了,空间还在占用),可以定期优化表进行碎片整理。optimize table
日期类型的选择
DATE、TIME、DATETIME、TIMESTAMP
几个原则:
如果只需要年,用YEAR类型就可以。
如果需要的时间范围比较大,用DATETIME
如果给不同时区用户使用,则用TIMESTAMP
浮点数和定点数
浮点数一般用户包含有小数位的数值。float、double如果插入数据到过定义的精度有可能被四舍五入。定点数实际上是以字符串形式存放的。所以定点数可以精确的保存数据。如果实际插入的数据大于精度,则会告警。decimal用来表示定点数。
在精度要求比较高的应用中类似货币要使用定点数保存。
相关文章推荐
- MySQL中blob 与 text
- 重装mysql安装时需要输入current password的解决办法
- mysql查询语句练习题
- 语法:MySQL中INSERT INTO SELECT的使用
- MySql -- 创建表时 engine=innodb和engine=myisam的区别
- MySql -- 创建表时 engine=innodb和engine=myisam的区别
- MySql -- 创建表时 engine=innodb和engine=myisam的区别
- 比较全面的MySQL优化参考
- MySQL 主从错误
- 读取mysql一列所有值,赋值给数组
- 安装MySQL
- mysql中插入数据时出现1366错误
- MySQL事务控制语句
- ubuntu下修改Mysql编码
- mysql 多表查询
- mysql 字符串转整形
- mysql 添加/删除主键
- mysql_close()与mysql_free_result()的区别
- mysql错误代码对照表较完整 mysql_errno()
- MySQL 在 LIMIT 条件后注入