首页
学习
活动
专区
圈层
工具
发布

(转)MySQL之char、varchar和text的设计

2、同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1char和varchar的n设置后,字符串会被截断。 4、char的上限为255字节,varchar的上限65535字节,text的上限为65535。...5、char在存储的时候会截断尾部的空格,varchar和text不会。 6、varchar会使用1-3个字节来存储长度,text不会。...首先从空间方面: 从官方文档中我们可以得知当varchar大于某些数值的时候,其会自动转换为text,大概规则如下: 大于varchar(255)变为 tinytext 大于varchar(500)...(M), VARBINARY(M) L + 1 bytes if column values require 0 – 255 bytes, L + 2 bytes if values may require

3K20

char、varchar、binary和varbinary的区别与联系

如果需要存储的字符串的长度跟所有值的平均长度相差不大,适合用char,如MD5。 对于经常改变的值,char优于varchar,原因是固定长度的行不容易产生碎片。...对于很短的列,char优于varchar,原因是varchar需要额外一个或两个字节存储字符串的长度。...:Myisam引擎中使用ROW_FORMAT=FIXED时,每行使用相同的空间,造成浪费 char和varchar后面如果有空格,char会自动去掉空格后存储,varchar虽然不会去掉空格,但在进行字符串比较时...| | bn | varbinary(4) | YES | | NULL | | | b | binary(8) | YES |...> select * from zcy where name='a '; //由于name是varchar,比较时,'a '自动转换为'a' +----+------+------+------+-

1.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库之数据类型详解

    、VARCHAR 、BINARY 、VARBINARY 、BLOB 、TEXT 、ENUM 、SET。...优化建议: 字符串的长度相差较大用VARCHAR; 字符串短,且所有值都接近一个长度用CHAR; BINARY和VARBINARY存储的是二进制字符串,与字符集无关; BLOB系列存储二进制字符串,与字符集无关...1、char和varchar CHAR(M) 为固定长度的字符串,在定义时指定字符串列长,当保存时在右侧填充空格以达到指定的长度,M 表示列长度,取值范围是 0~255 个字符,例如,CHAR(4) 定义了一个固定长度的字符串列...,而其实际占用的空间为字符串的实际长度加一(一个字符串结束符); 例: #新建一个表,字符类型分别为char和varchar mysql> create table tab8(c char(4),vc...6、BINARY 和 VARBINARY BINARY 和 VARBINARY 类型类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字节字符串; BINARY 类型的长度是固定的,指定长度之后

    6.4K30

    Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day14】—— 数据库3

    、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。...该节描述了这些类型如何工作以及如何在查询中使用这些类型。...BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。...4.0版本及以下,MySQL中varchar长度是按字节展示,如varchar(20),指的是20字节; 5.0版本及以上,MySQL中varchar长度是按字符展示。...2、查询结果不准确   第一部分我们已经举例说明,MySQL在隐式转换时的varchar转double,会出现很多意想不到的情况,比如 “123”," 123","123a"都会转成123,实际场景中都是不允许出现的

    2.2K20

    MySQL从零开始:05 MySQL数据类型

    其中的 int、varchar、char 和 decimal 都是 MySQL 所支持的数据类型,本节将详细介绍 MySQL 支持的数据类型。 MySQL 中定义数据字段的类型对数据库的优化非常重要。...字符串类型指 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。 ?...3.1 CHAR 和 VARCHAR CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。...下表展示了CHAR和VARCHAR之间的差异,它展示了将各种字符串值存储到CHAR(4)和VARCHAR(4)列的结果(假设此列使用了一个单字节字符集,如latin1)。 ? 请看下面例子: ?...01.vchar_varchar 3.2 BINARY 和 VARBINARY BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串

    3.3K30

    mysql数据类型

    mysql数据的数据类型,指定了字段的类型,不符合指定的字段类型,传入的值则会提示错误; ?...每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。   ...mysql中常用timestamp 4.字符串类型 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。...该节描述了这些类型如何工作以及如何在查询中使用这些类型。 CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。...BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。

    2.3K40

    Mysql常见数据类型探索

    Mysql常见数据类型探索 数值类型 MySQL 支持所有标准 SQL 数值数据类型。...字符串类型 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。...(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。...CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。...BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。

    50900

    MYSQL数据库数据类型

    mysql设置为严格模式。...与varchar char:定长字符串,字符长度0-255个字节之间,存储时占用固定字节空间 相对于varchar来讲 优点: 读取存储速度快于varchar varchar:可变长度字符串,字符长度在...0-65532个字节,存储式占用空间实际字节长度+1,而+1是存的他的长度 原因:因为char我们如果规定6,然后输入3个字符,他后面的内容会用宫格来填充,而varchar不会用空格填充,所有存的时候空间节省了...,而读的时候需要发送字符的数量所有读取会变慢 2.binary 与 varbinary BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要二进制字符串...输入值的和char 与varchar差不多的填充效果 3.text与blob blob:没有编码的二进制大字符串.

    3.5K20

    细说varchar与char有哪些区别?

    喏 → MySQL江湖路 | 专栏目录   CHAR和VARCHAR是MySQL中两种最重要的字符串类型,两者的原理和区别也是面试中高频问题,如果是你,会从哪几个角度去回答这个问题呢?...二、CHAR和VARCHAR在SQL中需要注意的点 三、类似的二进制类型:VARBINARY 附、一张有故事的照片(八) 一、CHAR和VARCHAR有哪些区别 1、固定长度 & 可变长度 VARCHAR...当存储CHAR值时,MySQL会删除字符串中的末尾空格(在MySQL 4.1和更老版本中VARCHAR 也是这样实现的——也就是说这些版本中CHAR和VARCHAR在逻辑上是一样的,区别只是在存储格式上...4.0版本及以下,MySQL中varchar长度是按字节展示,如varchar(20),指的是20字节; 5.0版本及以上,MySQL中varchar长度是按字符展示。...三、类似的二进制类型:VARBINARY   与CHAR和VARCHAR类似的类型还有BINARY和VARBINARY,它们存储的是二进制字符串。

    2.2K40

    MySQL中BLOB和TEXT类型学习--MySql语法

    在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。同样,可以将TEXT列视为VARCHAR列。...BLOB和TEXT在以下几个方面不同于VARBINARY和VARCHAR: · 当保存或检索BLOB和TEXT列的值时不删除尾部空格。...(这与VARBINARY和VARCHAR列相同)。 请注意比较时将用空格对TEXT进行扩充以适合比较的对象,正如CHAR和VARCHAR。...对于CHAR和VARCHAR,前缀长度是可选的。 · BLOB和TEXT列不能有 默认值。 LONG和LONG VARCHAR对应MEDIUMTEXT数据类型。这是为了保证兼容性。...-> ORDER BY comment; 当你想要使超过max_sort_length的字节有意义,对含长值的BLOB或TEXT列使用GROUP BY或ORDER BY的另一种方式是将列值转换为固定长度的对象

    3.9K10

    【MySQL笔记】数字类型、时间和日期类型、字符串类型

    和VARCHAR类型 TEXT类型 ENUM类型 SET类型 SET和ENUM相似之处 BINARY和VARBINARY类型 BLOB类型 JSON数据类型 总结 ---- 前言 使用MySQL数据库存储数据时...字符串类型 数据类型 类型说明 CHAR 固定长度字符串 VARCHAR 可变长度字符串 TEXT 大文本数据 ENUM 枚举类型 SET 字符串类型 BINARY 固定长度的二进制数据 VARBINARY...对于CHAR(M)和VARCHAR(M)来说,CHAR(M)无论插入值的长度是多少,所占用的存储空间都是M字节,而VARCHAR(M)占用的字节数为实际长度加1。...CHAR和VARCHAR类型在插入数据时,如果字符串末尾有空格,CHAR会自动去掉空格然后保存,VARCHAR类型会保留空格。...BINARY和VARBINARY类型 BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。

    5.8K20

    MySQL数据类型详解

    (2)若四舍五入后,整数部分超出范围,则MySQL报错,并拒绝处理。 如FLOAT(5,2)列内插入999.995和-999.995都会报错。...2.4、字符串类型 MySQL中,文本字符串总体上分为 CHAR 、VARCHAR 、 TINYTEXT 、 TEXT 、 MEDIUMTEXT 、LONGTEXT 、 ENUM 、 SET 等类型。...3、定义CHAR类型字段时,声明的字段长度即为CHAR类型字段所占的存储空间的字节数 (2)VARCHAR类型 1、 VARCHAR(M) 定义时, 必须指定长度M,否则报错。...(2)MEMORY 存储引擎和数据列:MEMORY数据表目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系,两者都是作为CHAR类型处理的。...BINARY与VARBINARY类型介绍 (1)BINARY和VARBINARY类似于CHAR和VARCHAR,只是它们存储的是二进制字符串。

    86630

    第四章《MySQL的数据类型和运算符》

    、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET 二、数值类数据类型: (1)数值类数据类型主要用来存储数字,不同的数值类型提供不同的取值范围,可以存储的值范围越大...默认会把TIMESTAMP列设为当前时间 3.字符串; 3.1 CHAR和VARCHAR; (1)CHAR(M)是固定长度字符,VARCHAR(M)是可变长度的字符;CHAR会自动删除插入数据尾部的空格...,VARCHAR不会删除尾部空格, CHAR(M): ‘abcd’ M字节 VARCHAR(M) ‘abcd ’ 6字节 (2)CHAR时固定长度,所以他的处理速度比VARCHAR的速度更快,但是他的特点时浪费存储空间...对于InnoDB引擎,使用可变长度的数据列,因为InnoDB数据表的存储格式不分固定长度和可变长度,因此使用CHAR不一定比使用VARCHAR更快,但由于VARCHAR是按照实际的长度来存储的,比较节省空间...(M) (1)BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是他们包含二进制字符串; (2)BINARY类型的长度是固定的,指定长度后,不足最大长度的,将在他们右边填充,

    1.6K20

    【说站】mysql中有哪些字符串类型

    mysql中有哪些字符串类型 说明 1、char和varchar都用来保存MySQL中的短字符串。varchar列中的值是可变长字符串。...两者的主要区别在于存储方式的不同:char列的长度固定为创建表中声明的长度。char在检索时会删除尾部的空格,而varchar则不会。 2、binary和varbinary存储二进制字符串。...实例 --创建表tbc,包含字段bc(binary(6))、vbc(varbinary(6)) mysql> create table tbc (bc binary(6),vbc varbinary(6...)); --向表中插入数据('a  ','a  ') mysql> insert into tbc values('a  ','a  '); --查看字段值长度 mysql> select length...更多mysql学习指路:MySQL 推荐操作系统:windows7系统、mysql5.8、DELL G3电脑 收藏 | 0点赞 | 0打赏

    1.2K30

    SQL笔记(3)——MySQL数据类型

    CHAR 类型的优点在于直观、易于处理和排序。在一些特定的场景中,如存储邮政编码、电话号码等,最大长度固定的 CHAR 数据类型很适合使用。...与固定长度的 CHAR 类型相比,VARCHAR 更加灵活,因为它可以动态地调整所占用的存储空间,节省了存储空间的使用。 在创建表时,需要指定 VARCHAR 列的最大长度。...当将其他数据类型转换为二进制或VARBINARY类型时,数据会在左侧填充或截断。填充使用十六进制零。因此,如果需要在各种系统之间传输二进制数据,使用VARBINARY类型可能是最简单的方式。...在MySQL中,将Boolean类型转换为整数时,TRUE会被转换为1,而FALSE会被转换为0。...CHAR和TEXT的区别 在MySQL中,VARCHAR和TEXT均用于存储字符串类型的数据,它们的主要区别在于存储方式和使用场景。

    3.3K50

    程序员常犯的坑:别再用 VARCHAR 存 IP 了!用对方式,性能何止提升10倍!

    今天我就带你一步一步搞懂如何在MySQL里优雅地存储IP地址。为啥不能直接用字符串?很多小伙伴第一反应:IP地址不就是"192.168.0.1"这种字符串嘛?...那我直接用VARCHAR(15)或者CHAR(15)存不就行了吗?表面上来看没啥大的问题,但这样做有几个弊端:空间浪费:字符串比数字类型占用更多字节,还要额外存储长度信息。...更推荐的做法是用BINARY(16)或VARBINARY(16)存二进制形式。...这就更简单了,直接:字段类型设为VARBINARY(16)或BINARY(16)统一用INET6_ATON()/INET6_NTOA()存取MySQL会自动把IPv4地址映射到IPv6格式里,做到兼容存储...(16),一表解决IPv4和IPv6老铁们,下次设计数据库表的时候,就可以考虑不用VARCHAR(15)去存IP了,用这种方式,性能和优雅度都会大幅提升!

    34900
    领券