MySQL之varchar和char的区别

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL之varchar和char的区别

MySQL中有很多种数据类型,其中存储字符串的类型就有varchar、char、text等等,抛开text类型不说,因为这个数据类型本身存储的就是大文本,又加上MySQL中没有nvarchar数据类型, 所以直接比较的是varchar和char的区别。


varchar和char有什么区别呢,下面我们就是一起来看看吧。


char


char数据类型表示的是定长的字符串, 当你输入小于指定的数目。


假设你指定的数目是char(10), 当你输入小于10个字符的时候,char数据类型会在你最后一个字符后面补空值。当你输入超过指定允许最大长度后, MySQL就会报以下错误了。


Data too long for column 'username' at row 1


varchar


varchar数据类型不再是定长的字符串了,它是一个可变长度的字符串,并且是非Unicode的字符数据,字符长度在0-8000之间,存储时如果是字符长度为100的字符串,则只会在数据库中占用字符长度100的空间,没有char数据类型的补空值的情况。


这里的Unicode 是一种字符编码方案, 它为每种语言中的每个字符都设定了统一唯一的二进制编码, 以 实现跨语言、跨平台进行文本转换、处理的要求。

使用 char 存储定长的数据非常方便、char 检索效率高, 无论你存储的数据是否到了 10 个字节, 都要 去占用 10 字节的空间。


使用 varchar 可以存储变长的数据, 但存储效率没有 char 高。


如何选择使用


如果选择使用varchar还是char数据类型,是要根据具体的场景,还有当前字段的数据来决定的。


比如一般固定长度,且字符长度短,如小区名称、小区门牌号之类的,或者是学号、班级号等等这种类型的选用char类型来保存会比较好。


比如一些大的文本信息,短文之类的信息,就不可能去使用char了,还是使用varchar性能比较好一些。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 SQL 运维
TIDB和MySQL的区别
TIDB和MySQL的区别
174 0
|
1月前
|
存储 缓存 关系型数据库
MySQL的varchar水真的太深了——InnoDB记录存储结构
varchar(M) 能存多少个字符,为什么提示最大16383?innodb怎么知道varchar真正有多长?记录为NULL,innodb如何处理?某个列数据占用的字节数非常多怎么办?影响每行实际可用空间的因素有哪些?本篇围绕innodb默认行格式dynamic来说说原理。
835 6
MySQL的varchar水真的太深了——InnoDB记录存储结构
|
1月前
|
存储 缓存 关系型数据库
Mysql的两种存储引擎以及区别
Mysql的两种存储引擎以及区别
17 1
|
16天前
|
存储 关系型数据库 MySQL
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
31 0
|
1月前
|
存储 缓存 关系型数据库
MySQL两种存储引擎及区别
MySQL两种存储引擎及区别
24 4
MySQL两种存储引擎及区别
|
3天前
|
NoSQL 关系型数据库 MySQL
[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别
[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别
|
17天前
|
存储 数据库
5. CHAR和VARCHAR的区别?
`CHAR`和`VARCHAR`在数据库中有所不同:`CHAR`长度固定,用空格填充,存储效率高,英文占1字节,汉字占2字节;而`VARCHAR`长度可变,节省空间,英文和汉字都占2字节。
15 0
|
19天前
|
存储 关系型数据库 MySQL
深入理解MySQL中varchar和text的区别
在MySQL中,varchar和text都是用于存储文本数据的数据类型。varchar是可变长度字符串,存储时按实际长度分配空间,适合存储较短的、长度可变的字符串,如用户名。text类型用于存储大量文本,始终占用足够空间,适合文章内容。varchar在存储和查询时可能更快,可被索引,而text需特殊搜索技术。在数据库设计时,应根据存储需求和性能平衡选择。
51 0
|
4天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用
|
8天前
|
关系型数据库 MySQL 数据库
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
34 4