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

比如:

数据库要写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. Atitit 在线支付系统功能设计原理与解决方案 与目录

    Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...

  2. ClassNotFoundException超限

    错误日志图 被这弱智的错误吭了半个小时,项目本来好好的,然后因为改版加了很多东西,所以就超限了,一开始总是报下面那图的错,搞的我总以为是retrofit的错,但是好好的框架而且没改过,怎么可能会出错呢 ...

  3. iOS7之后设置NavigationBar的背景

    iOS7之后,请注意需要使用setBarTintColor ``` [self.navigationController.navigationBar setBarTintColor:[UIColor ...

  4. Linux Shell脚本逻辑操作符简介

    在写程序时,会用到条件判断,测试条件是否成立.很多时候,判断条件是多个的,这个时候需要用到逻辑操作符.shell脚本中常用的有哪些逻辑操作符呢? 1.逻辑与: -a 格式: conditon1 -a ...

  5. Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译

    本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...

  6. Unity性能优化(1)-官方教程The Profiler window翻译

    本文是Unity官方教程,性能优化系列的第一篇<The Profiler window>的简单翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻 ...

  7. Hexo静态博客搭建教程

    Hexo是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页.生成静态网页可以托管在github.下面简单介绍一下he ...

  8. bitmap解码

    #include <stdio.h> #include <stdlib.h> #include <string.h> #define BYTE unsigned c ...

  9. BZOJ4300绝世好(傻)题

    Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). Input 输入文件共2行. 第一行包括一个整数 ...

  10. [LeetCode] Perfect Squares 完全平方数

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...