mysql 数据类型拾遗
写这篇博客的原因是在建表的过程我建表时,在表名和字段名上没有注意,违背了团队的开发规范。我们团队规范是,名字上要能够体现对象的特征。
比如:
数据库要写db_dbname
表名要写tb_tbname
字段名为f_fieldname
有规范在团队开发中,虽然略显不灵活,不过时间久了,这种优点就会凸显出来。代码的质量和可读性也会提高。
在工作中犯的另外一个错误是,对于数据库字段大小的不合理使用。比如int varchar。使用int 的使用,建表习惯性写int(50) 或者int(20)。这样写没有出过错,mysql也从来没提示我这样写有什么不对。直到主管质问我,int最大最有11,知道吗?我歪着脑袋想了半天,想到以前都是这样用的,还讨论了一番。主管也懒得给我讨论这种低级问题了,网上查找了一番,觉得解释的都不够精确,不到位,有些还误人子弟。于是回到家重新翻开书,修正这一块的错误认知。
在实践中tinyint 的默认最大长度是3 255(长度3)
smallint的默认最大长度是 5 最大值65535(长度5)
mediumint 的最大长度是8 最大值是16777215(长度8)
int 的最大长度是10 ,最大值是4294967295(长度10)
bingint 的最大长度是20位。
也即是你设置了tinyint(1) 最大值也是255.
不会因为设置的大就多存数据。例如tinyint(5) 最大还是只能存255.
那么以后写数据类型的时候,还是尽量不要设置后面的长度,使用数据库自带的长度即可。
那么还有一个误区,总会认为text 字段类型比varchar 可以容纳的字符多,看了书后才知道。它们的最大字节数都是65535。使用时要根据具体的字符集来换算。
char 是定长字符串,跟字符集无关,跟最大字节数也无关,但最多只能容纳255个字符,在中文中是255个汉字,在英文中就是英文字母。
如果不了解这个差异,有时候将博客文章直接放进数据库,就会出现存不进去的错误,如果再不懂得查看mysql的错误码,就要折腾好久一会了。
在实际工作中,同事就因为这个字符大小的问题折腾了挺久,建议存放纯文本还是使用mediumtext 或者longtext 字段。
当然可能很多人不在乎这种细节,可是程序的健壮性、优雅性就是通过这种细节一点点体现出来的。现代外存的价格已经很低,使得不用考虑数据占用空间的问题。但是更要关注效率,如何以合适的字段类型,占用合适的字段空间,使得程序运行的更快。快是这个时代的主节奏,你细节处不在意,程序就可能到处都是可以优化的case,慢的地方多了,就拖慢了整个程序,用户体验变差比不过竞争对手,从而导致一个尚不错的产品在市场的竞争中落败。
mysql 数据类型拾遗的更多相关文章
- mysql 数据类型
1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) ...
- MySQL 数据类型 详解
MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...
- MySQL数据类型的验证
CHAR char (M) M字符,长度是M*字符编码长度,M最大255. 验证如下: mysql)) default charset=utf8; ERROR (): ); use BLOB or T ...
- MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题
MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...
- 浅谈MySQL数据类型
MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 一.数值类型 MySQL支持所有标 ...
- MySQL数据类型——数值类型
1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...
- 【转】MySQL数据类型和常用字段属性总结
来源:http://www.jb51.net/article/55853.htm 这里先总结数据类型.MySQL中的数据类型大的方面来分,可以分为:日期和时间.数值,以及字符串.下面就分开来进行总结. ...
- Oracle、SQL Server、MySQL数据类型对比
1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中.不需数据转换(例如,转换到文本数据).数据输入二进制字段的方式决定了它的输出方式. BIT 1 个字 ...
- MySQL数据类型和常用字段属性总结
前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.MySQL提供了一组可以赋给表中各个 ...
随机推荐
- jQuery fsBanner 手风琴
fsbanner是一款自定义功能丰富的响应式网站Banner手风琴特效jQuery插件.该手风琴特效兼容性很好,支持点击和鼠标滑过等触发事件,并且可添加标题或描述. 在线实例 默认 带标题 鼠标滑过 ...
- 沙盒解决方案解决SharePoint 2013 以其他身份登陆的问题
众所周知,SharePoint 2013没有像SharePoint 2010那样有一个叫"以其他身份登录"的菜单项. 当然解决方案也很多,比如你可以直接修改Welcome.ascx ...
- Android将应用调试log信息保存在SD卡
转载:http://blog.csdn.net/way_ping_li/article/details/8487866 把自己应用的调试信息写入到SD卡中. package com.sdmc.hote ...
- jdbc数据库连接过程及驱动加载与设计模式详解
首先要导入JDBC的jar包:接下来,代码:Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就 ...
- 基于InstallShield2013LimitedEdition的安装包制作
在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不 ...
- [js] 变量空值研究
最近js的空值弄得焦头烂额,今天写个博客记录下. javascript变量空值一共有3种 1.“” var e=""; 2.null var e=null; 3.NaN var e ...
- 【转】XenServer架构之XAPI
一.XAPI对资源池的管理 作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储.不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化 ...
- Ubuntu15.10下华南师大锐捷认证客户端的使用详解
本文测试Linux系统环境为Ubuntu15.10 Destop,暂未在其他系统下验证过,不代表LTS版本或较旧的版本按照本文所述方法可以100%正确使用最新的锐捷认证客户端. 本文面向对象为华南师范 ...
- 如何将网页的title前面的图标替换成自己的图标
首先要准备自己的图标,图标必须是.ico格式的图片,网上有很多在线工具可以将自己的图片转换成ico格式的图片,这里给大家介绍两个网站 在线ico转换工具:生成的图标是可以选尺寸的,原图片的大小不限制 ...
- PHP基础语法
PHP:超级文本预处理器一,PHP的四对标记 <?php ?> <script language="php"> <script> ...