varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?

 varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?

1.知识背景

什么是VARCHAR、Text、LongText?

它们都是MySQL数据库的字符串类型,用来存储字符数据。区别是存储的数据长度、大小不一样。我们可以根据需求选择使用哪种字符串类型。

2.知识剖析

首先介绍下字节和字符

字节的定义:字节(byte)是一种计量单位,8个二进制位为一个字节.表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。

字符的定义:字符是指计算机中使用的文字和符号,如:1、2、3、A、B、C、!、#、¥、.....、+、——等这些符号。

在UTF8编码中,一个英文字符占用一个字节,一个中文字符占用三个字节。

VARCHAR是可以保存长度可变的字符串。如:一个用户名字段不能确定长度,只知道不超过10个字符,就可以选择varchar类型。而另一种CHAR类型是只能保存长度固定的字符。如:六位的邮编、股票代码。

需要注意的是:

mysql数据库的varcahr类型在4.1以下版本中最大长度限制为255字节

mysql5.0以上的版本中varchar数据类型的长度支持到了65535字节。

Text和LongText 也是长度可变的类型

Text的最大长度是可以存储 65535 (2^16 – 1) 个字符

LongText的最大长度是可以存储4294967295 (2^32 – 1) 个字符。

3.常见问题

1.定义varchar字段时,可不可以短的定义成varchar(20),长的定义成varchar(50),超长另算?

2.什么时候使用char,varchar,text

4.解决方案

1.根据需求与实际情况来考虑,不能千篇一律。 比如:用户名,谁的名字会有255/3=85个字符?所以也没必要那么长,但又不能定义成CHAR(),所以给个够用的长度varchar(20)或更少varchar(10)即可,考虑少数民族可以长点。 varchar的长度,最好是在够用(需要适当预测未来需求)且方便管理的前提下尽可能短。

2详见:

http://blog.csdn.net/ww122081351/article/details/18221013

5.扩展思考

如果把字符串字段都设置成varchar(255)会怎样?

1.MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为20*3(utf-8)(+2+1),255*3(utf-8)(+2+1),其中"+2"用来存储长度信息,“+1”用来标记是否为空,加载索引信息时用varchar(255)类型会占用更多的内存;(备注:当字段定义为非空的时候,是否为空的标记将不占用字节)

2.varchar(20)与varchar(255)都是保持可变的字符串,当使用ROW_FORMAT=FIXED(表中不存在可变字段,即静态表)创建MyISAM表时,会为每行使用固定的长度空间,这样设置不同的varchar长度值时,存储相同数据所占用的空间是不一样。通常情况下使用varchar(20)和varchar(255)保持'hello'占用的空间都是一样的,但使用长度较短的列却有巨大的优势。较大的列使用更多的内存,因为MySQL通常会分配固定大小的内存块来保存值,这对排序或使用基于内存的临时表尤其不好。同样的事情也会发生在使用文件排序或者基于磁盘的临时表的时候。

6.基本数据类型需不需要设置显示长度?int(M)中的M代表什么?

在int(m)中,这里的M代表的并不是存储在数据库中的具体的长度,当我们在选择使用int类型的时候,不论int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。除了显示给用户的方式有点不同外,int(M) 跟 int 数据类型是相同的。

如果int的值为10

int(10)显示结果为0000000010

int(3)显示结果为010

就是显示的长度不一样而已 都是占用四个字节的空间

问答环节:

问题1:MySQL的索引加载是进内存还是在硬盘处理?

回答:数据都会先进内存.

问题2:int(M)代表什么?

int型数据的显示长度并没有什么意义.完全可以不加.

问题3:一个中文占用几个字节?

Unicode码表的占用3个字节

GBK码表的占用2个字节.

鸣谢

感谢观看,如有出错,恳请指正

BY : 杨以杰



undefined_腾讯视频

视频中的PPT连接:ptteng.github.io/PPT/PPT-java/Java-task1-varchar.html#/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容