首页 数据库 mysql教程 text,varchar,char 在存贮长度方面个人的理解_MySQL

text,varchar,char 在存贮长度方面个人的理解_MySQL

May 31, 2016 am 08:46 AM

此文档限制在mysql 5.5以上成立

在utf8 的格式情况下的总结


﹙1﹚             在mysql提供的官方文档中描述如下

1﹚ 在mysql5.1参考手册中如下描述

  TEXT[(M)]

最大长度为65,535(216–1)字符的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个字符



﹙2﹚             对字符和字节的关系做个介绍

1﹚ 字符是指计算机中使用的字母、数字、字和符号

2﹚ 在 ASCII 编码中,一个英文字母字符存储需要1个字节

3﹚ 在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节

4﹚ 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节(在我的计算机环境上是一个汉字存贮需要3个字节)

5﹚ 在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)

6﹚ 在UTF-32编码中,世界上任何字符的存储都需要4个字节

7﹚ 我们现在数据库编码使用的是utf-8编码格式,所以一个字符占有3个字节

﹙3﹚             但是通过实验我们得出了和上面手册文档中不同的值(在utf8编码下)

1﹚ Text类型最多可以存贮65535个字节,而非65535个字符,就是存贮英文等字符的时候是可以存贮65535个字符,存贮纯汉字最多可以存贮21485个汉字

2﹚ Varchar类型可以设置的最大值为21491,存贮形式为字符,varchar(21491)最多可以存贮21491个英文字符,也可以存贮最多为21491个汉字

3﹚ Char类型最大可设的值为255个字符,char(255)最多可以存贮255个英文字符,最多也可以存贮255个汉字,char(M)当你使用char了之后就该字段不管有多少值占用的空间都是M个字符

4﹚ 检索效率char>varchar>text

﹙4﹚             通过以上的讨论,我们的数据库设计可以设计一个原则

1﹚ 当数据库存贮的是html或者一些文章性的不需要检索的使用text,存贮量大,也比较少的需要检索.存贮的性能上来说是最佳的.,可以少占空间多存内容

2﹚ 当一些字符比较少而且需要比较高的检索效率我们首先考虑char,比如字典表的类型可以使用char类型,这样对字典表的读取效率会有比较大的提高

3﹚ 除了以上这些特殊的,其他建议都采用varchar,但是对于不同的字段要定不同的长度,比如:标题用varchar(200)不管是英文还是汉语作为标题应该都是比较够了

4﹚ 对于一些个人简介以及名医简介等类似的一些东西来说是需要不同的需求分配不同的长度.所以我们类型用varchar.长度按照需求定义



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用Alter Table语句在MySQL中更改表? 如何使用Alter Table语句在MySQL中更改表? Mar 19, 2025 pm 03:51 PM

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

如何为MySQL连接配置SSL/TLS加密? 如何为MySQL连接配置SSL/TLS加密? Mar 18, 2025 pm 12:01 PM

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

您如何处理MySQL中的大型数据集? 您如何处理MySQL中的大型数据集? Mar 21, 2025 pm 12:15 PM

文章讨论了处理MySQL中大型数据集的策略,包括分区,碎片,索引和查询优化。

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么? 哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么? Mar 21, 2025 pm 06:28 PM

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

如何使用Drop Table语句将表放入MySQL中? 如何使用Drop Table语句将表放入MySQL中? Mar 19, 2025 pm 03:52 PM

本文讨论了使用Drop Table语句在MySQL中放下表,并强调了预防措施和风险。它强调,没有备份,该动作是不可逆转的,详细介绍了恢复方法和潜在的生产环境危害。

您如何用外国钥匙代表关系? 您如何用外国钥匙代表关系? Mar 19, 2025 pm 03:48 PM

文章讨论了使用外国密钥来代表数据库中的关系,重点是最佳实践,数据完整性和避免的常见陷阱。

如何在JSON列上创建索引? 如何在JSON列上创建索引? Mar 21, 2025 pm 12:13 PM

本文讨论了在PostgreSQL,MySQL和MongoDB等各个数据库中的JSON列上创建索引,以增强查询性能。它解释了索引特定的JSON路径的语法和好处,并列出了支持的数据库系统。

如何保护MySQL免受常见漏洞(SQL注入,蛮力攻击)? 如何保护MySQL免受常见漏洞(SQL注入,蛮力攻击)? Mar 18, 2025 pm 12:00 PM

文章讨论了使用准备好的语句,输入验证和强密码策略确保针对SQL注入和蛮力攻击的MySQL。(159个字符)

See all articles