`
fireq3
  • 浏览: 37939 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL中char、varchar和text的区别

 
阅读更多

他们的存储方式和数据的检索方式都不一样。

数据的检索效率是:char>varchar>text

空间占用方面,要具体情况具体分析了。

CHAR(M) M个字节,0 <=M<= 255
VARCHAR(M) L+1个字节,其中L<=M且0 <=M<= 65535
TEXT L+2个字节,其中L< 216

Char为定长,varchar,text为变长

Char在保存的时候,后面(右边)会用空格填充到指定的长度,在检索的时候后面的空格会去掉,所以检索出来的数据需要再用什么trim之类的函数去处理。(与sql server可能有些不同)

Varchar在保存的时候,不进行填充。当值保存和检索时尾部的空格仍保留。

TEXT列不能有默认值,存储或检索过程中,不存在大小写转换.

当存储的字符超过他们定义的长度时候,如果不是在sql服务器的严格模式下,都会自动截取合适的字段存储,而不会出现错误。但是,如果是中文的话同样要报错误:)比如定义char(4),然后insert (‘c哈哈’).

 注意一点的,Char,Varchar不像数值类型,有系统默认长度,所以必须在括号里定义长度,可以有默认值

text不可以写默认值,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入(严格模式下没有测试:))

存储计算:

在使用UTF8字符集的时候,手册上是这样描叙的:

·        基本拉丁字母、数字和标点符号使用一个字节。

·        大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言。

·        韩语、中文和日本象形文字使用三个字节序列。

char会造成空间浪费,但是有速度优势;而varchar节省了空间,但是速度就不如char。

  1. 经常变化的字段用varchar
  2. 知道固定长度的用char
  3. 尽量用varchar
  4. 超过255字节的只能用varchar或者text
  5. 能用varchar的地方不用text
分享到:
评论

相关推荐

    MySQL中字段类型char、varchar和text的区别

    在MySQL数据库中,字段类型的选择...综上所述,理解并正确选择`char`、`varchar`和`text`字段类型对于优化MySQL数据库性能至关重要。在设计数据库结构时,应根据数据特性和需求谨慎选择,以实现最佳的存储和查询效率。

    MySQL中CHAR和VARCHAR类型演变和详解

    MySQL中的CHAR和VARCHAR是两种常见的字符串数据类型,用于存储文本数据。它们在数据库设计和优化中扮演着重要的角色,理解它们的区别和使用场景至关重要。 首先,让我们深入了解一下两者的演变。在MySQL 5.0.3之前...

    mysql中插入多text类型问题

    Mysql 中插入多 text 类型问题解决方案 ...通过修改 MySQL 的配置文件和表的行格式,我们可以解决 MySQL 中插入多个 text 类型字段的问题。同时,我们也可以根据实际情况选择合适的行格式来存储数据。

    varChar和Char之间的区别?

    `char`和`varchar`是两种常见的字符数据类型,它们在处理字符串数据时有着显著的区别。 首先,`char`是固定长度的字符串类型。这意味着无论你存储的数据实际长度是多少,它都会占用指定长度的空间。例如,如果你...

    mysql面试题100题

    - 字符串类型:VARCHAR、CHAR、TEXT 和 BLOB,其中 VARCHAR 和 CHAR 区别在于 VARCHAR 变长,CHAR 定长。 - 日期和时间类型:DATETIME、DATE 和 TIMESTAMP,建议优先使用 TIMESTAMP,因为它在空间效率上优于 ...

    MySQL中文参考手册

    3. **数据类型**:MySQL支持多种数据类型,如数值类型(整型、浮点型、定点型)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)等。理解这些类型及其用途对于有效存储和...

    Java中数据类型和MYSQL中数据类型的对比

    3. 字符串类型:MySQL 的字符串类型主要包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET。CHAR 和 VARCHAR 用于存储非二进制文本,其中 VARCHAR 更适合存储可变长度的字符串。BINARY 和 VARBINARY ...

    Mysql varchar大小长度问题介绍

    MySQL中的VARCHAR类型是一种可变长度的字符串数据类型,它在存储空间上相比固定长度的CHAR类型更为节省。本文将深入探讨VARCHAR类型的大小长度问题及其在不同版本和编码下的限制。 首先,VARCHAR字段的长度限制主要...

    mysql-存储引擎和数据库对象实验五.docx

    本实验报告主要介绍 MySQL 中的存储引擎和数据库对象,涵盖了 MEMORY 存储引擎、MERGE 存储引擎、CHAR、VARCHAR、TEXT、BLOB 等类型的使用和特点,以及浮点数、定点数、日期类型的使用和设置规则。 一、MEMORY 存储...

    mysql与oracle差异总结

    MySql 中的 VARCHAR 类型相当于 Oracle 中的 VARCHAR2。MySql 中的 INT 可以替代 Oracle 中的 NUMBER。 4. 函数查询 在 MySql 中,可以使用 SELECT 语句查询所有函数,而 Oracle 需要使用allah VIEW 来查询函数。 ...

    MySQL进阶面试题,数据库三范式、数据库优化、索引有哪些种类、索引的工作机制、MySQL 的基础操作

    9.mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵 义?10.MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区 别?11.表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,...

    Mysql基础概念及常见面经.pdf

    - CHAR和VARCHAR支持设置默认值,而TEXT不行。 - 效率上,CHAR通常优于VARCHAR,但InnoDB引擎推荐使用VARCHAR。 5. **三大范式**: - **第一范式(1NF)**:确保每列都是不可分割的原子单元。 - **第二范式(2...

    MySQL面试题及答案.pdf

    MySQL 中的字符串类型包括 SET、BLOB、ENUM、CHAR、TEXT 和 VARCHAR。 13. 获取当前 MySQL 版本 可以使用 SELECT VERSION(); 语句来获取当前 MySQL 的版本。 14. 存储引擎 存储引擎是 MySQL 中的一种技术,涉及...

    mysql 中文文档下载

    MySQL支持多种数据类型,如整型(TINYINT、SMALLINT、INT、BIGINT)、浮点型(FLOAT、DOUBLE)、字符串型(CHAR、VARCHAR、TEXT)、日期时间型(DATE、TIME、DATETIME、TIMESTAMP)等,每种类型都有其特定的存储需求...

    MySQL中文参考手册.chm

    7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3.6.4 YEAR类型 7.3.7 字符串类型 7.3.7.1 CHAR和VARCHAR类型 7.3.7.2 BLOB和TEXT类型 7.3.7.3 ENUM类型 7.3.7.4...

    mysql数据类型

    MySQL 中的字符串包括 char、varchar、tinytext、text、mediumtext、longtext 等六种。char 和 varchar 的区别在于,char 是固定长度的,而 varchar 是可变长度的。tinytext、text、mediumtext、longtext 都是可变...

    SQLServer和MySql语法和关键字的区别详解

    2. **字符类型**: SQLServer 支持 `nchar`, `nvarchar`, 和 `ntext` 这些 Unicode 字符类型,MySQL 不支持这些类型,而是使用 `char`, `varchar`, 和 `text` 类型来处理字符数据。 3. **自动增长字段**: MySQL 使用 ...

Global site tag (gtag.js) - Google Analytics