iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中varchar和char类型有什么区别
  • 425
分享到

MySQL中varchar和char类型有什么区别

2023-06-25 14:06:55 425人浏览 八月长安
摘要

本篇内容介绍了“MySQL中varchar和char类型有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!VARCHAR类型VARCH

本篇内容介绍了“MySQL中varchar和char类型有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

VARCHAR类型

VARCHAR类型用于存储可变长字符串,是最常见的字符串数据类型。它比定长类型更节省空间,因为它仅使用必要的空间(例如,越短的字符串使用越少的空间)。有一种情况例外,如果Mysql表使用ROW_FORMAT=FIXED创建的话,每一行都会使用定长存储,这会很浪费空间。

VARCHAR需要使用1或2个额外字节记录字符串的长度:如果列的最大长度小于或等于255字节,则只使用1个字节表示,否则使用2个字节。假设采用latin1字符集,一个VARCHAR(10)的列需要11个字节的存储空间。VARCHAR(1000)的列则需要1002个字节,因为需要2个字节存储长度信息。

VARCHAR节省了存储空间,所以对性能也有帮助。但是,由于行是变长的,在UPDATE时可能使行变得比原来更长,这就导致需要做额外的工作。如果一个行占用的空间增长,并且在页内没有更多的空间可以存储,在这种情况下,不同的存储引擎的处理方式是不一样的。例如,MyISAM会将行拆成不同的片段存储,InnoDB则需要分裂页来使行可以放进页内。其他一些存储引擎也许从不在原数据位置更新数据。

VARCHAR适用情况

下面这些情况下适用VARCHAR是合适的:

  • 字符串列的最大长度比平均长度大很多

  • 列的更新很少,所以碎片不是问题

  • 使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储

CHAR类型

CHAR类型是定长的:MySQL总是根据定义的字符串长度分配足够的空间。当存储CHAR值时,mysql会删除所有的末尾空格。CHAR值会根据需要采用空格进行填充以方便比较。

CHAR适合存储很短的字符串,或者所有值都接近同一个长度。例如,CHAR非常适合存储密码的MD5值,因为这是一个定长的值。对于经常变更的数据,CHAR也比VARCHAR更好,因为定长的CHAR类型不容易产生碎片。对于非常短的列,CHAR比VARCHAR在存储空间上也更有效率。例如用CHAR(1)来存储只有Y和N的值,如果采用单字节字符集只需要一个字节,但是VARCHAR(1)却需要两个字节,因为还有一个记录长度的额外字节。

测试

下面通过例子来具体说明CHAR与VARCHAR行为上的不同,首先,我们创建一张只有一个CHAR(10)字段的表,并且往里面插入一些值:

CREATE TABLE char_test(    char_col CHAR(10)); INSERT INTO char_test VALUES    ('string1').    ('  string2').    ('string3  ');

当我们检索这些值的时候,会发现string3末尾的空格被截断了。

SELECT CONCAT("'", char_col, "'")FROM char_test;

MySQL中varchar和char类型有什么区别 

执行结果

如果用VARCHAR(10)字段存储相同的值,可以得到如下结果:

CREATE TABLE varchar_test(    varchar_col VARCHAR(10)); INSERT INTO varchar_test VALUES    ('string1').    ('  string2').    ('string3  '); SELECT CONCAT("'", varchar_col, "'")FROM varchar_test;

MySQL中varchar和char类型有什么区别 

执行结果

VARCHAR(5)与VARCHAR(200)的区别

我们倘若用VARCHAR(5)和VARCHAR(200)来存储'hello',我们知道这两者的空间开销是一样的。那么我们可以让VARCHAR的长度始终保持很大吗?使用更短的列有什么优势吗?

事实证明有很大的优势。更长的列会消耗更多的内存,因为Mysql通常会分配固定大小的内存块来保存内部值。尤其是使用内存临时表进行排序或操作时会特别糟糕。在利用磁盘临时表进行排序时也同样糟糕。

所以最好的策略是只分配真正需要的空间。

“MySQL中varchar和char类型有什么区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中varchar和char类型有什么区别

本文链接: https://www.lsjlt.com/news/305589.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中varchar和char类型有什么区别
    本篇内容介绍了“MySQL中varchar和char类型有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!VARCHAR类型VARCH...
    99+
    2023-06-25
  • MySQL中varchar和char类型的区别
    目录前述VARCHAR类型VARCHAR适用情况CHAR类型测试VARCHAR(5)与VARCHAR(200)的区别总结前述 VARCHAR和CHAR是两种最主要的字...
    99+
    2022-11-12
  • MySQL字符串类型中VARCHAR和CHAR的区别
    前述VARCHAR和CHAR是两种最主要的字符串类型。不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关。下面的描述假设使用的存储引擎是InnoDB和/或者MyISAM...
    99+
    2022-10-18
  • varchar和char有什么区别
    varchar和char的区别:char是固定长度的字符类型,而Varchar是可变长度的字符类型。char能存放的字符个数是255,而 varchar 能存放65532个字符。char和varchar的最大长度限制是mysql规定的。ch...
    99+
    2022-10-20
  • mysql中的char与varchar有什么区别
    这篇文章将为大家详细讲解有关mysql中char与varchar的区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。varchar类型用于存储可变长的字符串,是比较常见常...
    99+
    2022-10-18
  • MYSQL中 char 和 varchar的区别
    CHAR和VARCHAR类型相似,差别主要在存储,尾随空格和检索方式上。 CHAR和VARCHAR相同的是:CHAR和VARCHAR都指定了字符长度,注意是字符长度。例如char(30) 和 varcha&...
    99+
    2022-05-22
    MySQL char MySQL varchar
  • mysql中char和varchar的区别有哪些
    本篇内容主要讲解“mysql中char和varchar的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中char和varchar的区别有哪些...
    99+
    2022-10-19
  • 数据库char和varchar有什么区别
    数据库char和varchar有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据库char和varchar的区别:1...
    99+
    2022-10-18
  • Mysql中varchar与char的区别有哪些
    这篇文章给大家分享的是有关Mysql中varchar与char的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mysql中varchar与char的区别以及varcha...
    99+
    2022-10-18
  • MySQL中char、varchar和text三者的区别是什么
    今天就跟大家聊聊有关MySQL中char、varchar和text三者的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体说明:char:...
    99+
    2022-10-18
  • mysql innodb引擎中varchar和char的区别
    一. 行记录格式 innodb在存储数据的时候是以行的形式存储的,版本相关,并且有固定的格式。可以通过下面的语句查询当前所用版本的行记录格式: show table status like ‘表名‘; 在版本5.6中默认使用格式是Com...
    99+
    2021-10-13
    mysql innodb引擎中varchar和char的区别 数据库入门 数据库基础教程 数据库 mysql
  • char、varchar、nchar、nvarchar、text之间有什么区别
    这篇文章给大家分享的是有关char、varchar、nchar、nvarchar、text之间有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。char、varchar、n...
    99+
    2022-10-18
  • MySQL中CHAR和NCHAR有什么区别?
    CHAR 和 NCHAR 都是固定长度字符串数据类型。它们有以下区别 -CHAR 数据类型NCHAR 数据类型它的全名是 CHARACTER。它的全名是 NATIONAL CHARACTER它使用 ASCII 字符集它使用 Unicode ...
    99+
    2023-10-22
  • MySQL中的char和varchar&mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别
    1、varchar能存多少汉字、数字? 具体还是要看版本的,一个字符占用3个字节 ,一个汉字(包括数字)占用3个字节=一个字符4.0版本以下,varchar(100),指的是100字节,如果...
    99+
    2023-09-05
    Java MySQL char varchar
  • MySQL中的char和varchar&mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别
    1、varchar能存多少汉字、数字? 具体还是要看版本的,一个字符占用3个字节 ,一个汉字(包括数字)占用3个字节=一个字符4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉...
    99+
    2023-08-19
    Java MySQL char varchar
  • Oracle中的BYTE和CHAR有什么区别呢?
    Oracle定义字符串类型VARCHAR2和CHAR指定长度的用法如下:varchar2(<SIZE> <BYTE|CHAR>) <SIZE>是介于1~4000...
    99+
    2022-10-18
  • MySQL DATETIME 和 TIMESTAMP 数据类型有什么区别?
    两种数据类型都以“YYYY-MM-DD HH:MM:SS”格式存储数据,并包含日期和时间。尽管有这些相似之处,但它们还是有以下区别 -范围 - 日期时间数据类型支持 1000 之间的日期和时间-01-01 00:00:00 和 9999-1...
    99+
    2023-10-22
  • MySQL 中的 BLOB 和 TEXT 数据类型有什么区别?
    BLOB代表Binary Large Objects,顾名思义,它可以用于存储二进制数据,而TEXT用于存储大量字符串。 BLOB可以用来存储二进制数据,这意味着我们还可以存储图片、视频、声音和程序。 例如,下面的图像可以存储为 BLOB,...
    99+
    2023-10-22
  • c语言string和char有什么区别
    在C语言中,string和char都是字符类型的数据,但是有一些区别:1. char是单个字符的数据类型,而string是一串字符的...
    99+
    2023-09-12
    c语言
  • javascript中原始类型和引用类型有什么区别
    小编给大家分享一下javascript中原始类型和引用类型有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、区别(1)原始类型存储的是值,引用类型存储的...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作