MySQL中mysql text类型长度的长度有没有限制

mysql的text类型长度限制
mysql的text类型有64K长度限制的,MEDIUMTEXT中型是2G,LONGTEXT大型是4G
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结
一.VARCHAR存储和行长度限制
1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是65535个字节,但并不支持65535长度的varchar,65535中应该包含了所有字段的长度、变长字段长度标示位、NULL标示位的累计。其中内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节)。所以还有别的开销,实际能存放的长度为65532.
(MySQL数据库的varchar类型在5.0.3以下的版本中的最大长度限制为255,其数据范围可以是0~255)
2.因为null标示位占用了一个字节,所以可以去掉not null限制。
3.MySQL要求一个行的定义长度不能超过65535 是指所有列的长度总和不能超过65535.如果列的长度总和超过这个长度,依然无法创建.
二.VARCHAR长度的编码限制
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;
字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。
若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。
(1)若一个表只有一个varchar类型,如定义为
create table t4(c varchar(N)) charset=
则此处N的最大值为()/2= 32766。
减1的原因是实际行存储从第二个字节开始&;
减2的原因是varchar头部的2个字节表示长度;
除2的原因是字符编码是gbk。
(2) 若一个表定义为
create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;
则此处N的最大值为 (-4-30*3)/3=21812
减1和减2与上例相同;
减4的原因是int类型的c占4个字节;
减30*3的原因是char(30)占用90个字节,编码是utf8。
如果被varchar超过上述的b规则,被强转成text类型,则每个字段占用定义长度为11字节,当然这已经不是&varchar&了。
三.关于SQL模式
在MySQL中,SQL模式常用来解决下面几类问题:
1.通过设置SQL Mode,可以完成不同严格程度的数据校验,有效地保障数据准确性。
2.通过设置SQL Mode为ANSI模式,来保证大多数SQL符合标准的SQL语法,这样应用在不同数据库之间进行迁移时,则不需要对业务SQL进行较大的修改。
3.在不同数据库之间进行数据迁移之前,通过设置SQL Mode可以使MySQL上的数据更方便地迁移到目标数据库中。
查看当SQL模式
mysql&select @@sql_
STRICT_TRANS_TABLES(严格模式) 实现数据的严格校验,使错误数据不能插入表中.
如果将sql_mode设为'',则可能会出现可以建立表,但是会有一条警告信息,
mysql&set session sql_mode='';
mysql&create table test4(a varchar(25000)) charset=utf8;
警告信息提示了,之所以可以创建,是因为MySQL自动将VARCHAR转换成了Text类型。
mysql&show create table test4;
1.UTF8编码介绍
2.查看字符集方法:
(1)查看MySQL数据库服务器和数据库MySQL字符集。
show variables like '%char%';&
(2)查看MySQL数据表(table)的MySQL字符集。
show table status from dbName where name='tableName';
(3)查看MySQL数据列(column)的MySQL字符集。
show full columns from tableN
阅读(...) 评论()贴心代码 && php/mysql
mysql,mssql,TEXT类型最大长度
http://blog.csdn.net/sm_crystal/article/details/3428757
&*** mysql:
CHAR(n) 固定长度,最多 255 个字符&
VARCHAR(n) 可变长度,MySQL 4.1 及以前最大 255 字符,MySQL 5 之后最大 65535 字节&
TINYTEXT 可变长度,最多 255 个字符&
TEXT 可变长度,最多 65535 个字符&
MEDIUMTEXT 可变长度,最多 ^24 - 1)个字符&
LONGTEXT 可变长度,最多 (2^32 - 1)(4G)个字符&
&*** mssql:
可变长度 Unicode 数据的最大长度为 2^30 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext 在 SQL-92 中的同义词是 national text。&
服务器代码页中的可变长度非 Unicode 数据的最大长度为 2^31-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。
-----------------
64 x 16 = 1024
本地测试 : 100K 左右。
&以下为 理论资料
一个BLOB或TEXT列,最大长度为-1)个字符。
MEDIUMBLOB&
MEDIUMTEXT&
一个BLOB或TEXT列,最大长度为^24-1)个字符。
一个BLOB或TEXT列,最大长度为(2^32-1)个字符。
13:00:29@14.222.26.166
来源: blog.csdn.nettext,varchar,char 在存贮长度方面个人的理解
此文档限制在mysql 5.5以上成立在utf8 的格式情况下的总结v1w&&&&&&&&&&&&&在mysql提供的官方文档中描述如下1w 在mysql5.1参考手册中如下描述&&TEXT[(M)]最大长度为65,535(216C1)字符的TEXT列。可以给出可选长度M。则MySQL将列创建为最小的但足以容纳M字符长的值的TEXT类型。[NATIONAL] VARCHAR(M) [BINARY]变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定。最大有效长度是65,532字节)。&&[NATIONAL] CHAR(M) [BINARY| ASCII | UNICODE]固定长度字符串,当保存时在右侧填充空格以达到指定的长度。M表示列长度。M的范围是0到255个字符v2w&&&&&&&&&&&&&对字符和字节的关系做个介绍1w 字符是指计算机中使用的字母、数字、字和符号2w 在 ASCII 编码中,一个英文字母字符存储需要1个字节3w 在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节4w 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节(在我的计算机环境上是一个汉字存贮需要3个字节)5w 在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)6w 在UTF-32编码中,世界上任何字符的存储都需要4个字节7w 我们现在数据库编码使用的是utf-8编码格式,所以一个字符占有3个字节v3w&&&&&&&&&&&&&但是通过实验我们得出了和上面手册文档中不同的值(在utf8编码下)1w Text类型最多可以存贮65535个字节,而非65535个字符,就是存贮英文等字符的时候是可以存贮65535个字符,存贮纯汉字最多可以存贮21485个汉字2w Varchar类型可以设置的最大值为21491,存贮形式为字符,varchar(21491)最多可以存贮21491个英文字符,也可以存贮最多为21491个汉字3w Char类型最大可设的值为255个字符,char(255)最多可以存贮255个英文字符,最多也可以存贮255个汉字,char(M)当你使用char了之后就该字段不管有多少值占用的空间都是M个字符4w 检索效率char&varchar&textv4w&&&&&&&&&&&&&通过以上的讨论,我们的数据库设计可以设计一个原则1w 当数据库存贮的是html或者一些文章性的不需要检索的使用text,存贮量大,也比较少的需要检索.存贮的性能上来说是最佳的.,可以少占空间多存内容2w 当一些字符比较少而且需要比较高的检索效率我们首先考虑char,比如字典表的类型可以使用char类型,这样对字典表的读取效率会有比较大的提高3w 除了以上这些特殊的,其他建议都采用varchar,但是对于不同的字段要定不同的长度,比如:标题用varchar(200)不管是英文还是汉语作为标题应该都是比较够了4w 对于一些个人简介以及名医简介等类似的一些东西来说是需要不同的需求分配不同的长度.所以我们类型用varchar.长度按照需求定义网管之家
顶一下(0) 踩一下(0)
热门标签:

我要回帖

更多关于 mysql中text长度 的文章

 

随机推荐