广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

佛山Java培训说说MySQL中char和varchar

作者:admin01发布时间:2021-07-10分类:Java技术浏览:812


导读:一、char与varchar的定义在MYSQL中,char是指使用指定长度的固定长度来表示字符串的字段类型;比如char(8),数据库会用一个固定的1字节(八位)来存储数据,小于...


一、char与varchar的定义


在MYSQL中,char是指使用指定长度的固定长度来表示字符串的字段类型; 比如char(8),数据库会用一个固定的1字节(八位)来存储数据,小于8位的字符串后面会填充空白字符。  Varchar(M) 是一种比 char 更灵活的数据类型。 它也用于表示字符数据,但 varchar 可以存储变长字符串。 在本文中,我们将介绍 MySQL 中的 char 和 varchar。


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

  varchar:可变长度,低效率。

  二、CHAR(M)和VARCHAR(M)的区别


  CHAR和VARCHAR最大的区别就是一个是定长,一个是变长。 由于长度可变,实际存储的字符串实际加一个字节来记录字符串的长度(如果超过255,则需要两个字节)。 如果分配给 CHAR 或 VARCHAR 列的值超过该列的最大长度,则会裁剪该值以使其适合。 如果修剪后的字符不是空格,则会生成警告。 如果裁剪非空格字符,将导致错误(而不是警告)并通过使用严格 SQL 模式禁用值插入。


  三 VARCHAR 与 TEXT 和 BlOB 类型的区别


  VARCHAR、BLOB 和 TEXT 类型是变长类型,它们的存储要求取决于列值的实际长度(上表中由 L 表示),而不是类型的最大可能大小。 例如,VARCHAR(10) 列可以存储最大长度为 10 个字符的字符串。 实际的存储需求是字符串的长度,加上1个字节来记录字符串的长度。 对于字符串“abcd”,L 为 4,存储要求为 5 个字节。


  BLOB 和 TEXT 类型需要 1、2、3 或 4 个字节来记录列值的长度,具体取决于类型的最大可能长度。  VARCHAR 需要定义大小,最大限制为 65535 字节;  TEXT 不需要它。 如果将超过列类型最大长度的值分配给 BLOB 或 TEXT 列,则该值将被截断以适应它。


  BLOB 是一个大型二进制对象,可以容纳可变数量的数据。 四种 BLOB 类型 TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB 的区别仅在于它们可以存储的值的最大长度。


  BLOB 可以存储图片,TEXT 不能,TEXT 只能存储纯文本文件。  4种TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应4种BLOB类型,具有相同的最大长度和存储要求。  BLOB 和 TEXT 类型的唯一区别是 BLOB 值的排序和比较是以区分大小写的方式进行的,而 TEXT 值是不区分大小写的。 换句话说,TEXT 是不区分大小写的 BLOB。


  四.char、varchar和text的区别


  长度不同,char范围0~255,varchar最长64k,但注意这里的64k是整行的长度,考虑其他列,如果不为null,也会占用一位 ,对不同的字符集有效长度不同,比如utf8,最多21845,其他列必须去掉,但是varchar一般情况下存储就够了。 如果遇到大文本,可以考虑使用文本,最高可达4G。


  效率基本上是char>varchar>text,但是如果你使用的是Innodb引擎,建议使用varchar而不是char。


  Char 和 varchar 可以有默认值,而 text 不能指定默认值。


  数据库还是需要选择合适的数据类型进行存储,对性能有一定的影响。 对于int类型,如果不需要访问负值,最好加上unsigned; 对于where语句中经常出现的字段,可以考虑加索引,shape特别适合加索引。




  免责声明:本文文字及图片均由编者自网络转载。 版权属于原作者。 如有侵权,请及时联系我们删除。


  以上是小编带来的最新资讯。 喜欢的朋友可以继续关注本站最新动态,或者咨询在线客服。


Java技术排行
标签列表
网站分类
文章归档
最近发表