mysql列类型char,varchar,text,tinytext,mediumtext,longtext的比较与选择
储存不区分大小写的字符数据
TINYTEXT 最大长度是 255 (2^8 – 1) 个字符。
TEXT 最大长度是 65535 (2^16 – 1) 个字符。
MEDIUMTEXT 最大长度是 16777215 (2^24 – 1) 个字符。
LONGTEXT 最大长度是 4294967295 (2^32 – 1) 个字符
char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节
Varchar 的类型不以空格填满,比如varchar(100),但它的值只是”n”,则它的值就是”n”
而char 不一样,比如char(100),它的值是”n”,而实际上它在数据库中是”n “(n后共有99个空格,就是把它填满为100个字节)。
由于 char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!
他们的存储方式和数据的检索方式都不一样。
数据的检索效率是:char>varchar>text
空间占用方面,要具体情况具体分析了。
Char为定长,varchar,text为变长
Char在保存的时候,后面(右边)会用空格填充到指定的长度,在检索的时候后面的空格会去掉,所以检索出来的数据需要再用什么trim之类的函数去处理。(与sql server可能有些不同)
Varchar在保存的时候,不进行填充。当值保存和检索时尾部的空格仍保留。
TEXT列不能有默认值,存储或检索过程中,不存在大小写转换.
当存储的字符超过他们定义的长度时候,如果不是在sql服务器的严格模式下,都会自动截取合适的字段存储,而不会出现错误。但是,如果是中文的话同样要报错误:)比如定义char(4),然后insert (‘c哈哈’).
注意一点的,Char,Varchar不像数值类型,有系统默认长度,所以必须在括号里定义长度,可以有默认值
text不可以写默认值,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入(严格模式下没有测试 :))
存储计算:
在使用UTF8字符集的时候,手册上是这样描叙的:
· 基本拉丁字母、数字和标点符号使用一个字节。
· 大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言。
· 韩语、中文和日本象形文字使用三个字节序列。
char会造成空间浪费,但是有速度优势;而varchar节省了空间,但是速度就不如char。
- 经常变化的字段用varchar
- 知道固定长度的用char
- 尽量用varchar
- 超过255字节的只能用varchar或者text
- 能用varchar的地方不用text
最后发现原来要改就必须把该表中的所有varchar和text的字段一次性都改为char:
alter table ip_table modify ipddress char(16) default ”,modify status char(10) default ”,modify memo char(255) default ”;
……
alter table ip_table modify memo text;
之后表中的情况:
ipddress varchar(16)
status varchar(10)
memo text
■ 行定长的表比行可变长的表容易处理(其理由请参阅2 . 3节“选择列的类型”)。
■ 表行只在表中所有行为定长类型时是定长的。即使表中只有一列是可变长的,该表的
行也是可变长的。
■ 因为在行可变长时定长行的性能优点完全失去。所以为了节省存储空间,在这种情况
下最好也将定长列转换为可变长列。
这表示,如果表中有VARCHAR 列,那么表中不可能同时有CHAR 列;MySQL 会自动
地将它们转换为VARCHAR 列。例如创建如下一个表:
(
c1 CHAR(10),
c2 VARCHAR(10)
)
c1 varchar(10) yes null
c2 varchar(10) yes null
A LTER TABLE 将c1 转换为C H A R,将不起作用。将VARCHAR 列转换为CHAR 的惟一办
法是同时转换表中所有VARCHAR 列:
mysql列类型char,varchar,text,tinytext,mediumtext,longtext的比较与选择的更多相关文章
- mysql 字符串类型 char varchar
字符类型用在存储名字.邮箱地址.家庭住址等描述性数据 char指的是定长字符,varchar指的是变长字符 #官网:https://dev.mysql.com/doc/refman/5.7/en/ ...
- mysql的char,varchar,text,blob
mysql的char,varchar,text,blob是几个有联系但是有有很大区别的字段类型,这算是mysql的基础吧,可是基础没有学好,恶补一下. 先简单的总结一下: char:定长,最大255个 ...
- mysql中char,varchar,text
1.char char最大长度是255字符,注意是字符数和字符集没关系. 1)可以有默认值, 2)尾部有空格会被截断 3)不管汉字.英文,还是其他编码,都可以存255字符 2.varchar 1)va ...
- MySQL服务 - MySQL列类型、SQL模式、数据字典
MySQL列类型的作用: 列类型可以简单理解为用来对用户往列种存储数据时做某种范围"限定",它可以定义数据的有效值(字符.数字等).所能占据的最大存储空间.字符长度(定长或变长). ...
- mysql基础: mysql列类型--字符串
mysql列类型:整型 http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--时间和日期 http://blog.csd ...
- mysql基础:mysql列类型--时间和日期
mysql列类型--整型 http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--字符串http://blog.csdn.net ...
- 字符串类型:char,varchar,text,enum,set
字符串类型 1.char 格式:char (M) 2.varchar 格式:varchar (M) [注意]M表示允许的字符串长度[65535].M表示的是字符数,而不是字节数.但是最大长度的使用是按 ...
- mysql列类型
mysql三大列类型 整型 tinyint(占据空间:1个字节 存储范围 有符号 -128-127 无符号 0-255) smallint mediumint int big ...
- mysql 列类型以及属性特点
整形列: 一个字节有8个位,例如:int 类型的列存入数字1,00000000 00000000 00000000 00000001它就在最低位置上存入一个1,由此可见是极大的浪费资源,所以在建立列类 ...
随机推荐
- SpringBoot日记——删除表单-Delete篇
增删改查,我们这篇文章来介绍一下如何进行删除表单的操作,也就是我们页面中的删除按钮的功能. 下边写的可能看起来有点乱,请仔细的一步一步完成. 删除功能第一步,按钮功能实现 1. html的改变 来看, ...
- elasticsearch6.6.0安装配置及elasticsearch-head插件安装
一.最小化安装centos7.6 cat /etc/redhat-release 二.配置网络,可以上外网 三.安装常用命令工具,修改系统时区,校对系统时间,关闭selinux,关闭firewalld ...
- Vigenere加密
Vigenere加密法原理很简单,实现起来也不难.与普通的单码加密法不同,明文经过加密之后,每个字母出现的频率就不会有高峰和低峰. 密钥中字母代表行和明文中的字母代表行.在vigenere表中找到对应 ...
- Git多人协作工作流程
前言 之前一直把Git当做个人版本控制的工具使用,现在由于工作需要,需要多人协作维护文档,所以去简单了解了下Git多人协作的工作流程,发现还真的很多讲解的,而且大神也已经讲解得很清楚了,这里就做一个简 ...
- sass和less的几点不同
1.申明和使用变量 sass使用$符号来标识变量(老版本的sass使用!来标识变量),比如$highlight-color和$sidebar-width. 与CSS属性不同,变量可以在css规则块定义 ...
- maven util 类 添加 service
直接关键代码: public class DictionaryUtil { // 以下的处理,是为了在工具类中自动注入service // 前提是在applicationContext.xml中,将该 ...
- 《Linux内核分析》第五周:分析system_call中断处理过程
实验 分析system_call中断处理过程 使用gdb跟踪分析一个系统调用内核函数(您上周选择那一个系统调用),系统调用列表参见http://codelab.shiyanlou.com/xref/l ...
- 第二个Sprint冲刺第四天(燃尽图)
- week9:个人博客作业
团队作业(5) 以下内容多数是网上的内容,只是做了整合的过程. 要求 在PM 带领下, 每个团队深入分析下面行业的App, 找到行业的Top 5 (从下面的三个备选中,任选一个行业即可) 英语学习/词 ...
- 以webService为客户端获取List泛型结果集
首先搭建好webService,添加XFire1.2Core Libraries 和XFire1.2HTTP Client Libraries,连接上数据库,下例以oracle为数据库. 连接Oral ...