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提供了一组可以赋给表中各个 ...
随机推荐
- 使用CSS3制作导航条和毛玻璃效果
导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生一些.简单的说,毛玻璃其实就是让图片或者背景使用相应的方法进行模糊处理.这种效果对用户来说是十分具有视觉冲击力的. 本次分享的主题 ...
- 通过使用OpenVPN来构建一个VPN
首先我们需要简单熟悉一下OpenVPN和VPN概念,方便我们在使用OpenVPN构建VPN时的操作~ VPN概述 VPN,即虚拟专用网络,其功能是:在公用网络上建立专用网络,进行加密通讯.在企业网络 ...
- android环境下的即时通讯
首先了解一下即时通信的概念.通过消息通道 传输消息对象,一个账号发往另外一账号,只要账号在线,可以即时获取到消息,这就是最简单的即使通讯.消息通道可由TCP/IP UDP实现.通俗讲就是把一个人要发送 ...
- 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希
据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...
- iOS xml文件的解析方式 XMLDictionary,GDataXMLNode,NSXMLParser
iOS9之后,默认网络请求是https,所有我们要设置一下网络安全,具体设置如下 1.第三方类库 XMLDictionary 下载地址: https://github.com/nicklockwood ...
- django ftp 研究
做个网络运维多年,一直在用filezilla搭建ftp服务器,总体上还是不错的.但是用户配置与管理方面还是不太方便,希望能够通过web页面对用户进行管理和对ftp服务器进行监控. 工具: (1)dja ...
- Freemarker 程序开发
Freemarker 程序开发 现在web开发中,多使用freemarker 来描述页面.通常会使用的macro来定义各种组件,从而达到UI组件的复用.结合使用其它的指定,可快速的描述一个html页面 ...
- java中的SPI机制
1 SPI机制简介 SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的.在java.util.ServiceLoader的文档里 ...
- 第10章 Shell编程(1)_正则表达式
1. 基础的正则表达式 1.1 正则表达式与通配符 (1)正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. (2)通配符用来匹配符合条件的 ...
- Duplicate entry 'javajavajav' for key 'username'
org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: com.mysql.jd ...