写这篇博客的原因是在建表的过程我建表时,在表名和字段名上没有注意,违背了团队的开发规范。我们团队规范是,名字上要能够体现对象的特征。

比如:

数据库要写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 数据类型拾遗的更多相关文章

  1. mysql 数据类型

    1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) ...

  2. MySQL 数据类型 详解

    MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...

  3. MySQL数据类型的验证

    CHAR char (M) M字符,长度是M*字符编码长度,M最大255. 验证如下: mysql)) default charset=utf8; ERROR (): ); use BLOB or T ...

  4. MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题

    MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...

  5. 浅谈MySQL数据类型

    MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 一.数值类型 MySQL支持所有标 ...

  6. MySQL数据类型——数值类型

    1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...

  7. 【转】MySQL数据类型和常用字段属性总结

    来源:http://www.jb51.net/article/55853.htm 这里先总结数据类型.MySQL中的数据类型大的方面来分,可以分为:日期和时间.数值,以及字符串.下面就分开来进行总结. ...

  8. Oracle、SQL Server、MySQL数据类型对比

    1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中.不需数据转换(例如,转换到文本数据).数据输入二进制字段的方式决定了它的输出方式. BIT 1 个字 ...

  9. MySQL数据类型和常用字段属性总结

    前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.MySQL提供了一组可以赋给表中各个 ...

随机推荐

  1. 如何判断一个DOM元素正在动画,一个CSS“阻塞”JS的例子

    一般情况下CSS不会直接影响JS的程序逻辑,但是以CSS实现动画的话,这个便不太确定了,这个故事发生在与UED迁移全局样式的过程. 曾经我有一段实现弹出层隐藏动画的代码是这个样子的: if (this ...

  2. React Native之 ScrollView介绍和使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  3. 静态库介绍与简单演练及同名资源冲突解决(.a格式的静态库)

    1.静态库和动态库都是闭源库,不公开源代码. 静态库:.a和.framework 动态库:.dylib和.framework(iOS9取消了.dylib,使用.tbd替代) 2.静态库和动态库在使用上 ...

  4. 【代码笔记】iOS-UILable电子表显示

    一,效果图. 二,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIVi ...

  5. MyBatis中jdbcType和javaType的映射关系

    JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDecimal DECIM ...

  6. VmWare平台Windows Server 2012 无响应宕机

    我们生产服务器都部署在VMware ESXi 5.5平台上,最近大半年的时间,偶尔就会出现操作系统为Windows Servre 2012的服务器出现没有任何响应(unresponsive)的情况,出 ...

  7. 一道关于java序列化的问题,看大家知多少————

    问题先放在这里,稍后我会做出解答 已知类有Test和Test2,问两次主程序的输出结果是多少(SerializeUtil只是序列化的工具类) 类Test public class Test imple ...

  8. 表单中Readonly和Disabled的区别

    1.readonly是要锁定这个控件,通过在界面上无法修改他(但是通过javascript可以修改他). 2.disabled和readonly有相同的地方也是可以锁定这个控件用户不能改变他的值,但是 ...

  9. hbase开发实例

    1.put/checkAndPut package com.testdata; import java.io.IOException; import org.apache.hadoop.conf.Co ...

  10. 将Centos的yum源更换为国内的阿里云源

    阿里云是最近新出的一个镜像源.得益于阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源.阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/ CentOS系统更换软 ...