`

MySQL中的char与varchar详解

阅读更多

(1)mysql中char与varchar的区别

char:定长,效率高,一般用于固定长度的表单提交数据存储  ;例如:身份证号,手机号,电话,密码等

varchar:不定长,效率偏低

 

(2)详解

1、varchar类型的变化

(a) 存储限制

varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。

(b) 编码长度限制

字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;

字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。

若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。

(c) 行长度限制

导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。

 

2、CHAR(M), VARCHAR(M)不同之处

CHAR和VARCHAR最大的不同就是一个是固定长度,一个是可变长度。由于是可变长度,因此实际存储的时候是实际字符串再加上一个记录 字符串长度的字节(如果超过255则需要两个字节)。如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉 的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入

 

 

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

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

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

    mysql实现char类型主键自增长

    本文将深入探讨如何在MySQL中利用触发器实现CHAR类型主键的自增长功能,这将为我们提供一种灵活且独特的主键生成策略。 ### MySQL中CHAR类型主键自增长的原理 在传统的数据库设计中,我们通常使用整型数据类型作为...

    MySQL中把varchar类型转为date类型方法详解

    在MySQL和Oracle这两个广泛使用的数据库管理系统中,我们经常遇到需要将字符串(varchar)类型的日期转换为日期(date)类型的情况。这通常是因为原始数据以字符串格式存储,而我们需要对这些日期进行比较、排序或...

    MySQL数据类型varchar详解

    MySQL中的`VARCHAR`数据类型是用于存储可变长度的字符串数据的,它的主要特点是只存储必要的数据量,节省存储空间。在MySQL 4.1之后,`VARCHAR(N)`中的`N`代表字段最多能存储的字符数,而非字节数。无论是英文、数字...

    MySQL-数据库-索引详解

    MySQL 数据库索引详解 MySQL 数据库索引是一种特殊的数据库结构,可以快速查询数据库表中特定记录。索引是提高数据库性能的重要方式。 索引的概念 ---------------- 索引是表中数据的目录。如果使用索引,则扫描...

    史上最详细的一线大厂Mysql面试题详解.pdf

    varchar 和 char 是 MySQL 中两种常见的字符串类型,它们之间有许多区别: 1. 长度固定:char 是一种固定长度的类型,而 varchar 是一种可变长度的类型。 2. 存储空间:varchar 会根据实际情况占用存储空间,而 ...

    MYSQL_C_API详解.pdf

    标题和描述均指向同一主题:“MYSQL_C_API详解”,这表明文件是一份关于MySQL C API的技术文档,它主要针对C语言开发者的数据库编程接口。 从提供的部分内容来看,文档详细解释了使用MySQL C API进行数据库操作的...

    mysql常见面试题及答案

    2. CHAR 和 VARCHAR 是 MySQL 中的字符串类型,前者固定长度,后者可变长度。 3. ENUM 是 MySQL 中的一种字符串对象,用于指定一组预定义的值。 四、索引 1. 索引是 MySQL 中的一种数据结构,用于提高查询效率。 2...

    MySql从零开始学-必知必会

    1. 数据类型:了解整型(TINYINT, INT, BIGINT)、浮点型(FLOAT, DOUBLE)、字符串(CHAR, VARCHAR, TEXT)、日期时间类型(DATE, TIME, DATETIME, TIMESTAMP)等。 2. 约束:学习NOT NULL约束确保字段不为空,...

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

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

    MySQL详解2.doc

    MySQL详解文档旨在深入探讨MySQL数据库系统,包括其概念、安装配置、SQL语言的使用以及不同类型的SQL语句。首先,数据库被定义为按照特定规则存储在计算机存储设备上的数据集合,而数据库管理系统(DBMS)则是一种...

    mysql技术详解

    MySQL支持多种数据类型,如整数(INT, TINYINT等)、浮点数(FLOAT, DOUBLE)、字符串(VARCHAR, CHAR)、日期和时间(DATE, TIME, DATETIME, TIMESTAMP)等。理解这些数据类型对于设计合适的数据库模式至关重要。 ...

    一线大厂Mysql面试题详解.pdf

    本文档将详细解释MySQL面试中的一些常见问题,包括MySQL的复制原理、InnoDB与MyISAM的区别、varchar与char的区别、事务与日志的实现方式等。 MySQL的复制原理 ---------------- MySQL的复制原理主要基于三个线程...

    MySql中 delimiter 详解.docx

    在MySQL中,`delimiter`命令是用来设定SQL语句的结束符的,它的主要作用是告诉MySQL解释器何时一个完整的命令结束,从而可以开始执行。在默认情况下,MySQL使用分号(;)作为命令的终止符。这意味着当你在MySQL...

    mysql数据类型

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

    mysql数据类型详解[定义].pdf

    MySQL 数据类型详解 MySQL 数据类型是 MySQL 中非常重要的一部分,它决定了数据库中每个列可以存储的数据类型。了解 MySQL 数据类型是我们使用 MySQL 的基础。 数值型 MySQL 中的数值型可以是整数或浮点数,例如 ...

Global site tag (gtag.js) - Google Analytics