小米技术社区
小米技术社区管理员 关于小米

27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]

E-mail:mzze@163.com

Q Q:32362389

W X:xiaomi168527

小米技术社区大牛王飞 关于王飞

27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]

E-mail:wf_live@126.com

Q Q:3940019

微博:王小贱ss

小米技术社区设计小艳 关于小艳

大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]

E-mail:97157726@qq.com

Q Q:97157726

标签云
精品推荐
您的位置:首页 > 后端编程 > 数据库 > mysql

mysql数据类型之字符串型,char和varchar;text以及longtext等

分类: mysql82个赞

知识点:

(1)MySQL中的数据类型是强类型

(2)MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。

(3)数据类型选择的范围尽可能小,范围越小占用资源越少

(4)MySQL 支持多种类型,大致可以分为三类:

1.数值(整数型 浮点数 定点数)

2.日期/时间

3.字符串(字符)类型。


数值-整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT

数值-浮点数类型:FLOAT、DOUBLE

数值-定点数型:DECIMAL

字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

日期类型:Date、DateTime、TimeStamp、Time、Year


还有一些其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等


本篇文章主要介绍字符串类型的数据:

字符串要点:

(1)在mysql中,字符或字符串要用单引号包裹 

(2)char(n) 和 varchar(n) 中括号中 n 代表字符的个数,char(4)存放4个字符,中英文一样

(3)varchar(L)实现变长机制,需要额外的空间来记录数据真实的长度。


类型大小用途
char0-255 字节定长字符串
varchar0-65535 字节变长字符串
tinytext0-255 字节 2的8次方-1短文本字符串
text0-65 535 字节 2的16次方-1长文本数据
mediumtext0-16 777 215 字节 2的24次方-1中等长度文本数据
longtext0-4 294 967 295 字节 2的32次方-1极大文本数据
tinyblob0-255 字节不超过 255 个字符的二进制字符串
blob0-65 535 字节二进制形式的长文本数据
mediumblob0-16 777 215 字节二进制形式的中等长度文本数据
longblob0-4 294 967 295 字节二进制形式的极大文本数据



注意:

(1)char是定长,var是变长;char最大值是255,varchar最大值是65535,具体存多少字要看字符编码



(2)VARCHAR的L的理论长度是65535字节,但事实上达不到这么多字符,因为有的字符是多字节,所以L达不到65535。

如,在UTF8编码下,一个字符占3个字节,最大字符只有21845,而GBK下因为一个只占2个字节,所以可以达到32767个


在utf8编码下,一个字符占3个字节,而GBK下因为一个只占2个字节


(3)char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),

所以varchar(4),存入3个字符将占用4个字节。 


(4)char类型的字符串检索速度要比varchar类型的快。缺点是浪费存储空间。char的平均占用空间多于varchar

mysaim存储引擎:建议使用char

innodb存储引擎:建议使用varchar,因为innodb内部的行存储格式没有区分长度和可变长度。


(5)结尾是txt的系列类型,在表中存储的是地址,占用大小大约10个字节



(6)一个表中的的所有字段的总长度也不能超过65535个字节。

mysql中表中的所有字段加起来不能超过65535个字节


(7)varchar和text的区别: 


1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字

节。 

2.text类型不能有默认值。 

3.varchar可直接创建索引,text创建索引要指定前多少个字符。

4.varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。


小米技术社区

本站内容均为小米原创,转载请注明出处:小米技术社区>> mysql数据类型之字符串型,char和varchar;text以及longtext等