MySQL 数据类型的简单选择

选择合适的数据类型:
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用来表示定点数。
在精度要求比较高的应用中类似货币要使用定点数保存。

时间: 2024-09-29 07:53:59

MySQL 数据类型的简单选择的相关文章

mysql 数据类型优化(四) ---选择标识符,特殊类型数据

一.选择标识符 一旦选定了一种类型,要确保在所有关联中都使用同样的类型,类型之间需要精确匹配,包括像UNSIGNED这样的属性. 问题:在比较操作时隐式的类型转换也可能导致很难发现的错误. (1)整数:通常是标识列最好的选择,因为它他们很快并且可能使用AUTO_INCREMENT. (2)ENUM和SET类型:通常是是不能用的. (3)字符串类型:如果可能,应该避免使用字符串类型作为标识列,因为它们很消耗空间,并且通常比数字类型慢. 对于完全"随机"的字符串也需要多加注意,例如MD5(

Mysql数据类型的优化选择

整数类型: Tinyint-8 Smallint-16 Mediumint-24 Int-32 Bigint-64 实数类型(带有小数部分的数字) Float-4/double-8:浮点 Decimal:精确(只是存储格式,在计算中会转为double类型) 浮点类型在存储同样范围的值时,通常比decimal使用更少的空间. 字符串类型: Varchar:可变长字符串(需要1-2个字节存储字符串长度) 优点:比定长类型节约空间: 缺点:碎片问题.字符串update变长时,一个行的占用空间变长,但是

【超简单】MySQL存储引擎的选择与配置

[超简单]MySQL存储引擎的选择与配置 存储引擎简介 MySQL中的数据用各种不同的技术存储在文件(或内存)中.每一种技术都使用不同的存储机构,索引技巧,锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能.这些不同的技术以及配套的相关功能在MySQL中被称为存储引擎. 下面就为大家介绍两种MySQL中比较常见的两种存储引擎:MyISAM和InnoDB MyISAM存储引擎 MyISAM存储引擎是MySQL关系数据库系统5.5版本之

Mysql 数据类型及选择原则

MySQL中的数据类型大的方面来分,可以分为:日期和时间.数值,以及字符串.下面就分开来进行总结. 数据库类型的选择对数据库的性能影响很大 1 . 数据类型会影响存储空间的开销 2 . 数据类型会影响数据查询性能 日期和时间数据类型 MySQL数据类型 含义 date 3字节,日期,格式:2014-09-18 time 3字节,时间,格式:08:42:30 datetime 8字节,日期时间,格式:2014-09-18 08:42:30 timestamp 4字节,自动存储记录修改的时间 yea

MySQL 列,可选择的数据类型(通过sql命令查看:`help create table;`)

MySQL 列,可选择的数据类型(通过sql命令查看:help create table;) BIT[(length)] | TINYINT[(length)] [UNSIGNED] [ZEROFILL] | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] | INT[(length)] [UNSIGNED] [ZEROFILL] | INTEGER[(length)] [U

MySQL入门很简单: 2 MySQL数据类型

2. MySQL数据类型 2.1 整数类型 后面的是默认显示宽度: tinyint(4) smallint(6) mediumint(9) int(11) bigint(20) 2.2 浮点型和定点数类型 MySQL可以指定浮点数和定点数的精度:    数据类型(M,D)  M:数据总长度, D:小数点后的长度

MySQL 数据类型 详解

MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补. 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字节 范围(-8388608~83

MySQL 数据类型 详解 (转载)

数值类型 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补. 表列出了各种数值类型以及它们的允许范围和占用的内存空间. 类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0,65

进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来