数据库中char和varchar的区别 数据库:char和varchar数据类型的区别

mysql\u4e2dchar\u548cvarchar\u6709\u4ec0\u4e48\u533a\u522b?

char\u662f\u4e00\u79cd\u56fa\u5b9a\u957f\u5ea6\u7684\u7c7b\u578b\uff0cvarchar\u5219\u662f\u4e00\u79cd\u53ef\u53d8\u957f\u5ea6\u7684\u7c7b\u578b\uff0c\u5b83\u4eec\u7684\u533a\u522b\u662f\uff1a

char(M)\u7c7b\u578b\u7684\u6570\u636e\u5217\u91cc\uff0c\u6bcf\u4e2a\u503c\u90fd\u5360\u7528M\u4e2a\u5b57\u8282\uff0c\u5982\u679c\u67d0\u4e2a\u957f\u5ea6\u5c0f\u4e8eM\uff0cMySQL\u5c31\u4f1a\u5728\u5b83\u7684\u53f3\u8fb9\u7528\u7a7a\u683c\u5b57\u7b26\u8865\u8db3\uff0e\uff08\u5728\u68c0\u7d22\u64cd\u4f5c\u4e2d\u90a3\u4e9b\u586b\u8865\u51fa\u6765\u7684\u7a7a\u683c\u5b57\u7b26\u5c06\u88ab\u53bb\u6389\uff09\u5728varchar(M)\u7c7b\u578b\u7684\u6570\u636e\u5217\u91cc\uff0c\u6bcf\u4e2a\u503c\u53ea\u5360\u7528\u521a\u597d\u591f\u7528\u7684\u5b57\u8282\u518d\u52a0\u4e0a\u4e00\u4e2a\u7528\u6765\u8bb0\u5f55\u5176\u957f\u5ea6\u7684\u5b57\u8282\uff08\u5373\u603b\u957f\u5ea6\u4e3aL+1\u5b57\u8282\uff09\uff0e

\u5728MySQL\u4e2d\u7528\u6765\u5224\u65ad\u662f\u5426\u9700\u8981\u8fdb\u884c\u5bf9\u636e\u5217\u7c7b\u578b\u8f6c\u6362\u7684\u89c4\u5219

1\u3001\u5728\u4e00\u4e2a\u6570\u636e\u8868\u91cc\uff0c\u5982\u679c\u6bcf\u4e00\u4e2a\u6570\u636e\u5217\u7684\u957f\u5ea6\u90fd\u662f\u56fa\u5b9a\u7684\uff0c\u90a3\u4e48\u6bcf\u4e00\u4e2a\u6570\u636e\u884c\u7684\u957f\u5ea6\u4e5f\u5c06\u662f\u56fa\u5b9a\u7684\uff0e
2\u3001\u53ea\u8981\u6570\u636e\u8868\u91cc\u6709\u4e00\u4e2a\u6570\u636e\u5217\u7684\u957f\u5ea6\u7684\u53ef\u53d8\u7684\uff0c\u90a3\u4e48\u5404\u6570\u636e\u884c\u7684\u957f\u5ea6\u90fd\u662f\u53ef\u53d8\u7684\uff0e
3\u3001\u5982\u679c\u67d0\u4e2a\u6570\u636e\u8868\u91cc\u7684\u6570\u636e\u884c\u7684\u957f\u5ea6\u662f\u53ef\u53d8\u7684\uff0c\u90a3\u4e48\uff0c\u4e3a\u4e86\u8282\u7ea6\u5b58\u50a8\u7a7a\u95f4\uff0cMySQL\u4f1a\u628a\u8fd9\u4e2a\u6570\u636e\u8868\u91cc\u7684\u56fa\u5b9a\u957f\u5ea6\u7c7b\u578b\u7684\u6570\u636e\u5217\u8f6c\u6362\u4e3a\u76f8\u5e94\u7684\u53ef\u53d8\u957f\u5ea6\u7c7b\u578b\uff0e
\u4f8b\u5916\uff1a\u957f\u5ea6\u5c0f\u4e8e4\u4e2a\u5b57\u7b26\u7684char\u6570\u636e\u5217\u4e0d\u4f1a\u88ab\u8f6c\u6362\u4e3avarchar\u7c7b\u578b

char\u548cvarchar\u90fd\u662f\u5b57\u7b26\u4e32\u7c7b\u578b\u7684
char\u56fa\u5b9a\u957f\u5ea6\u7684\u975e Unicode \u5b57\u7b26\u6570\u636e\uff0c\u6700\u5927\u957f\u5ea6\u4e3a 8,000 \u4e2a\u5b57\u7b26\u3002
\u6240\u5360\u5b58\u50a8\u7a7a\u95f4\u4e3a\u4f60\u5b9a\u4e49\u65f6\u7684\u5927\u5c0f\u3002
\u6570\u636e\u91cf\u8f83\u5927\u65f6\u4ee5char\u5b57\u6bb5\u4e3a\u67e5\u8be2\u6761\u4ef6\u65f6\u67e5\u8be2\u5f97\u5feb\u4e00\u4e9b.

varchar\u53ef\u53d8\u957f\u5ea6\u7684\u975e Unicode \u6570\u636e\uff0c\u6700\u957f\u4e3a 8,000 \u4e2a\u5b57\u7b26\u3002
\u6240\u5360\u5b58\u50a8\u7a7a\u95f4\u4e3a\u5b9e\u9645\u5927\u5c0f\uff08\u5728\u4e0d\u8d85\u8fc7\u4f60\u5b9a\u4e49\u957f\u5ea6\u65f6\uff09
\u5982\u679c\u8981\u5b58\u50a8\u7684\u5b57\u6bb5\u4e0d\u662f\u5b9a\u957f\u7684.\u7528varchar\u8f83\u597d\u4e00\u4e9b\u3002

\u6240\u4ee5\uff0c\u5bf9\u7ecf\u5e38\u4fee\u6539\uff08\u6216\u63d2\u5165\uff09\u7684\u5b57\u6bb5\u9009\u7528char\uff0c\u800c\u4e0d\u5e38\u4fee\u6539\u7684\u5efa\u8bae\u7528varchar

数据库中char和varchar的区别为:长度不同、效率不同、存储不同。

一、长度不同

1、char类型:char类型的长度是固定的。

2、varchar类型:varchar类型的长度是可变的。

二、效率不同

1、char类型:char类型每次修改的数据长度相同,效率更高。

2、varchar类型:varchar类型每次修改的数据长度不同,效率更低。

三、存储不同

1、char类型:char类型存储的时候是初始预计字符串再加上一个记录字符串长度的字节,占用空间较大。

2、varchar类型:varchar类型存储的时候是实际字符串再加上一个记录字符串长度的字节,占用空间较小。



char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).

在MySQL中用来判断是否需要进行对据列类型转换的规则

1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型

在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,今天想总结一下它们两者的区别,明确一下选择塔门的理由。

首先明确的是,char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的
是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时
候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,尽管如此,char的存取数度还是要比varchar要快得多,因为其
长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间
效率,而varchar是以空间效率为首位的。再者,char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而
varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

char和varchar都是字符串类型的
char固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
所占存储空间为你定义时的大小。
数据量较大时以char字段为查询条件时查询得快一些.

varchar可变长度的非 Unicode 数据,最长为 8,000 个字符。
所占存储空间为实际大小(在不超过你定义长度时)
如果要存储的字段不是定长的.用varchar较好一些。

所以,对经常修改(或插入)的字段选用char,而不常修改的建议用varchar

  数据类型区别如下:

  1. char表示的是固定长度,

  2. varchar表示的是实际长度的数据类型

  比如:如果是char类型,当你输入字符小于长度时,后补空格;而是varchar类型时,则表示你输入字符的实际长度



  • sql涓畾涔夊勾榫勭敤浠涔鏁版嵁绫诲瀷,闀垮害涓哄灏?
    绛旓細sql涓畾涔夊勾榫勫彲浠ョ敤鐨勭敤鏁版嵁绫诲瀷鍙婇暱搴︼細1銆char(3)锛氶暱搴︿负3鐨勫瓧绗︿覆銆傚皬浜10浣嶄笖闀垮害鍩烘湰鍥哄畾鐨勫瓧绗︿覆鐢╟har銆2銆乿archar(3)锛氶暱搴︿负3鐨勫瓧绗︿覆銆傞暱搴﹀ぇ浜10鐨勭敤varchar锛varcha鍦10浠ュ唴鍗犵敤绌洪棿姣攃har澶с3銆乮nt锛氶暱搴︿负4涓瓧鑺傦紝瀛樺偍浠(-2147483648)鍒(2147483647)銆4銆丼mallint锛氶暱搴︿负2涓瓧鑺...
  • 鐢≒B濡備綍鍦ㄨ〃涓姞鍏ュ瓧娈
    绛旓細妤间笂鐨勶紝浣犺繖鏄線琛ㄤ腑鎻掑叆涓琛岋紝ALTER TABLE st add a6 char(6)锛岃繖鏄坊鍔犲瓧娈电殑璇彞 锛岃繕鏈夌畝鍗曠殑鍔炴硶锛屽氨鏄敤pb杩炴帴浜嗘暟鎹簱锛岀偣database锛岄噷闈㈣兘鐪嬪埌浣犺繛鎺鐨勬暟鎹簱閲岄潰鐨勬墍鏈夌殑琛紝鐒跺悗鐐瑰埌瑕佹坊鍔犲瓧娈电殑琛紝鍙抽敭alter table..锛屼細鏄剧ず琛ㄤ腑鎵鏈夌殑瀛楁锛岀偣鍒版渶鍚庝竴琛岋紝鍥炶溅灏辫兘閲...
  • oracle瀵煎叆琛ㄦ姤閿
    绛旓細浠庝綘鐨閿欒淇℃伅涓婃潵鐪嬶紝浣犺瀵煎叆杩欎釜琛ㄤ竴娆℃ч渶瑕佸垎閰4294967294瀛楄妭鐨勭┖闂达紝杩欎簺绌洪棿鏄渶瑕佺浉涓淬佽繛缁殑锛岃岃〃绌洪棿GZCMS铏界劧鐪嬭捣鏉ユ湁寰堝绌洪棿锛屼絾閮芥槸纰庣墖锛屾墍浠ヤ細鍑虹幇闂锛屽缓璁綘鏁寸悊涓涓嬬┖闂达紝鎴栬呭澶х幇鏈鏁版嵁鏂囦欢澶у皬锛屾垨鑰呭姞鏁版嵁鏂囦欢
  • oracle 鏃犳硶瀵煎叆,鏁版嵁搴瀛楃闆嗘槸涓鏍风殑
    绛旓細浣犺繖涓槸鐩爣搴撻噷闈㈠凡缁忔湁杩欎釜琛ㄤ簡PUBTEXT_TMP锛岃窡瀛楃闆嗘病鍏崇郴鐨勩俧ollowing statement failed because the object already exists銆備綘鐪嬩笅鐩爣搴撹繖涓〃鏄笉鏄湁鏁版嵁锛屽鏋滄病鏈夋暟鎹氨鍏堟妸鐩爣搴撶殑杩欎釜琛╠rop鎺夛紝鍐嶅
  • sql涓畾涔夊勾榫勭敤浠涔鏁版嵁绫诲瀷,闀垮害涓哄灏?
    绛旓細sql涓畾涔夊勾榫勫彲浠ョ敤鐨勭敤鏁版嵁绫诲瀷鍙婇暱搴︼細1銆char(3) 锛氶暱搴︿负3鐨勫瓧绗︿覆銆傚皬浜10浣嶄笖闀垮害鍩烘湰鍥哄畾鐨勫瓧绗︿覆鐢╟har銆2銆乿archar(3)锛氶暱搴︿负3鐨勫瓧绗︿覆銆傞暱搴﹀ぇ浜10鐨勭敤varchar锛varcha鍦10浠ュ唴鍗犵敤绌洪棿姣攃har澶с3銆乮nt锛氶暱搴︿负4涓瓧鑺傦紝瀛樺偍浠(-2147483648)鍒(2147483647)銆4銆丼mallint锛氶暱搴︿负2涓瓧鑺...
  • sql涓畾涔夊勾榫勭敤浠涔鏁版嵁绫诲瀷,闀垮害涓哄灏?
    绛旓細sql涓畾涔夊勾榫勫彲浠ョ敤鐨勭敤鏁版嵁绫诲瀷鍙婇暱搴︼細1銆char(3) 锛氶暱搴︿负3鐨勫瓧绗︿覆銆傚皬浜10浣嶄笖闀垮害鍩烘湰鍥哄畾鐨勫瓧绗︿覆鐢╟har銆2銆乿archar(3)锛氶暱搴︿负3鐨勫瓧绗︿覆銆傞暱搴﹀ぇ浜10鐨勭敤varchar锛varcha鍦10浠ュ唴鍗犵敤绌洪棿姣攃har澶с3銆乮nt锛氶暱搴︿负4涓瓧鑺傦紝瀛樺偍浠(-2147483648)鍒(2147483647)銆4銆丼mallint锛氶暱搴︿负2涓瓧鑺...
  • 扩展阅读:数据库varchar和nvarchar ... char和varchar的区别在于 ... 数据库中char 10 表示什么 ... 数据库中character ... char和varchar2区别 ... char和varchar最大长度 ... mysql中char和varchar ... char和varchar联系 ... char和varchar数据类型区别 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网