精华内容
下载资源
问答
  • 数据库 varchar 和char区别



    在建立数据表的时候,会经常遇到给一个string 数据定义一个数据类型、我们会选择varchar 和 char 、两者的关系也就是 时间效率、和空间效率、

    char 也就是 固定长度、假如  char(10)  、写进去一个字符串,'abcd' ,那么显然char所占的长度为10,出了 ‘abcd’,后面会跟上6个空格,

    而varhcar 长度就为4,因为varchar 要计算长度、然后存进去,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,可以看出,char的速度比varchar 还是要快的,而char是时间效率、而varchar是在空间效率,


    展开全文
  • 名字 描述 character varying(n), varchar(n) 变长,有长度限制 ...简单来说,varchar的长度可变,而char的长度不可变,对于postgresql数据库来说varchar和char的区别仅仅在于前者是变长,

    名字 描述
    character varying(n), varchar(n) 变长,有长度限制
    character(n), char(n) 定长,不足补空白
    text 变长,无长度限制

    简单来说,varchar的长度可变,而char的长度不可变,对于postgresql数据库来说varchar和char的区别仅仅在于前者是变长,而后者是定长,最大长度都是10485760(1GB)

    varchar不指定长度,可以存储最大长度(1GB)的字符串,而char不指定长度,默认则为1,这点需要注意。

    text类型:在postgresql数据库里边,text和varchar几乎无性能差别,区别仅在于存储结构的不同

    对于char的使用,应该在确定字符串长度的情况下使用,否则应该选择varchar或者text


    官方解读:

    SQL定义了两种基本的字符类型:character varying(n)character(n),这里的n 是一个正整数。两种类型都可以存储最多n个字符的字符串(没有字节)。试图存储更长的字符串到这些类型的字段里会产生一个错误,除非超出长度的字符都是空白,这种情况下该字符串将被截断为最大长度。这个看上去有点怪异的例外是SQL标准要求的。如果要存储的字符串比声明的长度短,类型为character的数值将会用空白填满;而类型为character varying的数值将只是存储短些的字符串。

    如果我们明确地把一个数值转换成character varying(n)character(n),那么超长的数值将被截断成n 个字符,且不会抛出错误。这也是SQL标准的要求。

    varchar(n)char(n) 分别是character varying(n)character(n)的别名,没有声明长度的character等于character(1);如果不带长度说明词使用character varying,那么该类型接受任何长度的字符串。后者是PostgreSQL的扩展。

    另外,PostgreSQL提供text类型,它可以存储任何长度的字符串。尽管类型text不是SQL 标准,但是许多其它SQL数据库系统也有它。

    character类型的数值物理上都用空白填充到指定的长度n,并且以这种方式存储和显示。不过,填充的空白是无语意的。在比较两个character 值的时候,填充的空白都不会被关注,在转换成其它字符串类型的时候, character值里面的空白会被删除。请注意,在character varyingtext数值里,结尾的空白是有语意的。并且当使用模式匹配时,如LIKE,使用正则表达式。

    一个简短的字符串(最多126个字节)的存储要求是1个字节加上实际的字符串,其中包括空格填充的character。更长的字符串有4个字节的开销,而不是1。长的字符串将会自动被系统压缩,因此在磁盘上的物理需求可能会更少些。更长的数值也会存储在后台表里面,这样它们就不会干扰对短字段值的快速访问。不管怎样,允许存储的最长字符串大概是1GB 。允许在数据类型声明中出现的n 的最大值比这还小。修改这个行为没有什么意义,因为在多字节编码下字符和字节的数目可能差别很大。如果你想存储没有特定上限的长字符串,那么使用text 或没有长度声明的character varying,而不要选择一个任意长度限制。

    提示: 这三种类型之间没有性能差别,除了当使用填充空白类型时的增加存储空间,和当存储长度约束的列时一些检查存入时长度的额外的CPU周期。虽然在某些其它的数据库系统里,character(n) 有一定的性能优势,但在PostgreSQL里没有。事实上,character(n)通常是这三个中最慢的,因为额外存储成本。在大多数情况下,应该使用textcharacter varying



    展开全文
  • 数据库varchar和char的比较

    千次阅读 2014-09-24 17:20:36
    varchar和char的比较

    部分信息转自别处.....

    一.数据存储开销

    1.char(n) 是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符

    在程序中,会返回给你8位,后面的用空格补上;

    在数据库中,char(8),占用16个字节(1个字符=2个字节);

    2.varchar(n) 是长度为 n 个字节的可变长度且非 Unicode 的字符数据。n必须是一个介于1和 8000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。

    二.插入数据

    1.char列的NULL值占用存储空间。

     2. varchar列的NULL值不占用存储空间。

     插入同样数量的NULL值,varchar列的插入效率明显高出char列。

     插入不为null的数据时,无论插入数据涉及的列是否建立索引,varchar列的插入效率也是明显高出char列。

    三.更新数据

    如果更新的列上未建立索引,则char的效率低于varchar,但效率差异不大。

    如果更新的列上建立索引,则char的效率低于varchar,并且效率差异很大。

    四.修改结构

    无论增加或删除的列的类型是char还是varchar,操作都能较快的完成,而且效率上没有什么差异。

    对于增加列的宽度而言,char与varchar有非常明显的效率差异,varchar列基本上不花费时间,而修改char列需要花费很长的时间。

    五.数据检索

    无论是否通过索引,varchar类型的数据检索略优于char的扫描。


    那实际开发中,我们使用哪种呢?

    当确定字符串为定长、数据变更频繁、数据检索需求少时,使用char;

    当不确定字符串长度、对数据的变更少、查询频繁时,使用varchar。

    展开全文
  • 总结: VARCHAR是可变长度,在存储时,它是根据待存储的数据长度来分配存储空间。需要多用一个字节来存放长度信息(不占用varchar指定的长度)。...因此VARCHAR相比CHAR节省了存储空间,但由于CHAR的长度

    总结:

    VARCHAR是可变长度,在存储时,它是根据待存储的数据长度来分配存储空间。需要多用一个字节来存放长度信息(不占用varchar指定的长度)。

    CHAR是固定长度,在存储时,它是根据CHAR指定的长度来分配存储空间。如果待存储的数据长度小于CHAR规定的长度,则用空格补齐。

    因此VARCHAR相比CHAR节省了存储空间,但由于CHAR的长度固定,所以提高存储的效率。


    CHAR(1)与VARCHAR(1)个定义,有什么区别?虽然这两个都只能够用来保存单个的字符,但是 VARCHAR要比CHAR多占用一个存储位置。这主要是因为使用VARCHAR数据类型时,会多用1个字节用来存储长度信息。这个开销CHAR 字符类型是没有的。




    展开全文
  • 存储的时候varchar长度可变,char长度不可变; oracle: 存储的时候varchar长度不可变,char长度不可变,但是varchar2的长度可变。 对于我上面说的长度可变或者不可变,举一个例子:比如在mysql中的一个属性的...
  • 数据库中,varchar和char都是用于存储字符串类型的数据的,并且,在创建数据表时,使用这2种类型时都必须显式的指定长度。 区别: varchar是变长的,即:存储的字符串的长度是可变得,即使设计为varchar(8),...
  • char是存储字符(无论字母还是汉字都最多存255个) char(20)表示这个字段最多存20个字符 如果存了16个字符 那么会只占用16个字符的空间varchar是存储字节(1个字母1个字节 1个汉字3个字节) varchar(50)表示这...
  • 在mysql教程中charvarchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型。 charvarchar的区别 char (13)长度固定, 如'www.jb51.net' ...
  • 数据库–关于varchar和char的区别 1.定长和变长 char 表示定长,长度固定;最大长度为255字符; char(20),指的是20个字符,如果存放的字符小于20时,多余空间会自动填充空格 varchar的最大长度为65535即2^16字节...
  • 首先,VARCHAR和CHAR是两种最主要的字符串类型。在设计用于存储字符串的表字段时,可能会对到底选哪个类型有所犹豫,确实如果不了解它们之间的区别,选择上是不会那么容易,本篇将详细介绍它们之间的区别以及如何...
  • Char是一种固定长度的类型,varchar是一种可变长度的类型
  • 数据库字符类型char和varchar的区别 char char数据类型用来存储长度为n个字节的固定长度非Unicode字符数据,每个字符占一个字节。当定义一列为此类型时,必须制定列长,否则默认长度为1, 格式:char[(n)] 说明:n:1...
  • 4. varchar 和char类型 4.1 varchar类型的存储特点 用于存储变长字符串, 只是占用必要的存储空间. 记得存储的是字符为单位. 30个字符并不代表是30个字节, 需要根据具体选择的编码格式来进行确定的 列的长度小于255...
  • char和varchar类型相似,但是它们的存储检索方式不同。在MySQL5.0.3,它们在最大长度是否保留尾部空格也不相同。 char和varchar定义了字符串的最大长度。例如,char(30)可以放30个字符。 char列的长度在你建表...
  • VARCHAR:变长的字符串,需要在声明字段时指定能存储的最大字符数,真实占用的空间取决于存入的字符数,存入的越多占用空间越多。适合保存内容长度不定的字符类型数据。能包含数据的大小,mysql5.0以前0~255字节,...
  • 1. 数据库中,char和varchar长度设置为5时,汉字能存5个,英语字母能存5个。
  • 数据库中的char分配多少位,查询条件就是多少位,写入数据的时候,不足的补空格,而varchar/varchar2则是按需分配,不足位数,不补空格,查询条件不需补足位数。 明明查询语句是对的,条件也是对的,为啥查不出结果...
  • varchar和char的区别: 1、varchar在存取方面与char相反,它存取慢,因为长度不固定,但正因如此,不占据多余的空间,是时间换空间的做法; 2、对于varchar来说, 多能存放的字符个数为65532 总之,结合性能角度...
  • 数据库char和varchar啥区别 1) char的长度是不可变的,而varchar的长度是可变的。 也就是说,定义一个char[10]和varchar[10],如果存进去的 是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟...
  • varchar的列长度是可变的,在mysql5.0.3之前varchar的长度范围为0-255字符,mysql5.0.3之后varchar的长度范围为0-65535个字节.(自己的理解是一共可以存储65535个字节,但是转化为具体的可以存储的字符个数还要看具体...
  • 在MySQL数据库中,用的最多的字符型数据类型就是Varchar和Char,这两种数据类型虽然都是用来存放字符型数据,但是无论从结构还是从数据的保存方式来看,两者相差很大。而且其具体的实现方式,还依赖与存储引擎。我...
  • 在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库数据库类型,一般参考的都是char或者varchar,今天想总结一下它们两者的区别 1. char的长度是不可变的 varchar的长度是可变的 2....
  • varchar和char的区别

    2019-09-13 13:58:42
    一度怀疑人生,也怀疑过是不是连接池的bug问题,知道后来我比较了以前我写的数据库 现在写的数据库表 create table dormitory( uanme char(20) not null, uaccount char(20) primary key, upwd char(20) not ...
  • varchar和char的区别。

    2021-06-04 13:24:14
    varchar 一般是用来存储长度可变的字符串,我们经常见到varchar(255)的数据库设计。但其存入数据库的长度其实并不一定是这么多,当存入的字符串长度x小于255时,实际存入数据库的长度是 “x多一点” 是x加上一些...
  • 在字符型数据中,用的最多的就是 CharVarchar两种类型。前面的是固定长度,而后面的是可变长度。现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用 Varchar字符型数据。 一、VARCHARCHAR...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,729
精华内容 1,091
关键字:

数据库varchar和char