varchar,char,text的区别

1. 区别一:定长和变长

char表示定长,长度固定;varchar是变长,即长度可变。

char如果插入的长度小于定义的长度时,则用空格填充;

varchar小于定义长度时,还是按实际长度存储,插入多长就存多长,但要在总长度上加1字符,这个用来存储位置。如果数据存在空格,当值保存和检索时,空格会保留。

建议!

1. myisam 存储引擎 建议使用固定长度,数据列代替可变长度的数据列。

2. memory存储引擎 目前都使用固定数据行存储,因此无论使用char varchar列都没关系,

3. innodb 存储引擎 建意使用varchar 类型

因为长度固定,char的存取速度还是要比varchar要快得多,方便程序的存储和查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,可谓是以空间换取时间效率。varchar刚好相反,以时间换空间

2. 区别二:存储的容量不同

对char来说,最多能存放的字符个数255,和编码无关

而varchar,最多能存放65532个字符。varchar的最大有效长度由最大行大小和使用字符集确定。整体最大长度是65532

在MySQL中,char, varchar, text类型的字段都可以用来存储字符类型的数据,char和varchar都可以指定最大的字符长度,但text不可以

数据的检索效率是:char > varchar > text

具体说明:

char: 存储定长数据很方便,char字段上的索引效率更高,必须在括号里定义长度,可以有默认值,比如定义char(10), 那么不论存储的数据是否达到10个字节,都要占去10个字节的空间(自动用空格填充),char在存储的时候会将右侧空格进行剔除,保留左侧空格。

varchar: 存储变长数据,但存储效率没有char高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。

varchar和char在查询的时候都只会根据where条件中的左侧空格进行判断,右侧末尾的空格会忽略

text: 存储可变长度的非unicode数据,最大长度为2^31-1个字符。text列不能有默认值,存储和检索过程中,不存在大小写转换,后面如果指定长度,不会报错,但这个长度是不起作用的,在插入数据时,超过你指定长度还是可以正常插入的。

关于存储空间:

在使用UTF8字符集的时候,MySQL手册上是这样描述的:

1. 基本拉丁字母、数字和标点符号使用一个字节;

2. 大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言;

3. 韩语、中文和日本象形文字使用三个字节序列。

结论:

1、经常变化的字段用varchar;

2、知道固定长度的用char;

3、超过255字节的只能用varchar或者text;

4、能用varchar的地方不用text;

5、能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;

6、同一张表出现多个大字段,能合并时尽量合并,不能合并时考虑分表

//资料来源于网络 脚本之家

  • SQL SERVER涓煇涓瓧娈靛睘鎬т负varchar,鎴戞兂鎶婅繖涓瓧娈垫敼鎴恑nt鍨,濡備綍鎿 ...
    绛旓細1銆侀鍏堝湪妗岄潰涓婏紝鐐瑰嚮鈥淢anagement Studio鈥濆浘鏍囥2銆佺劧鍚庡湪璇ョ晫闈腑锛岄変腑鈥滆淇敼瀛楁灞炴х殑鏁版嵁琛ㄢ濄3銆佷箣鍚庡湪璇ョ晫闈腑锛屽彸閿偣鍑烩滆璁♀濋夐」銆4銆佹帴鐫鍦ㄨ鐣岄潰涓紝閫変腑瑕佷慨鏀圭殑鈥滃瓧娈靛睘鎬р濋夐」銆5銆佺劧鍚庡湪璇ョ晫闈腑锛屼慨鏀归夋嫨涓衡渋nt灞炴р濋夐」銆6銆佷箣鍚庡湪璇ョ晫闈腑锛岀偣鍑讳笂鏂光滀繚瀛樷濇寜閽7銆...
  • oracle imp 瀵煎叆鏁版嵁搴撳嚭閿 ,姹傚ぇ绁炲府蹇欑湅鐪!!
    绛旓細鏍规嵁浣犵殑閿欒淇℃伅锛屽彂鐜颁綘瀵煎嚭鐨勭敤鎴锋槸AMARCMS 锛岃岃瀵煎叆鐨勭敤鎴锋槸system锛岃嫢瀵煎嚭鍜屽鍏ヤ笉鏄悓涓涓敤鎴凤紝蹇呴』浣跨敤fromuser=瀵煎嚭鐢ㄦ埛鍚 touser=瀵煎叆鐢ㄦ埛鍚嶃傚彟澶栧緢濂囨紝浣犱负浠涔堣瀵煎叆鍒皊ystem鐢ㄦ埛锛宻ystem鐢ㄦ埛鏄疧racle绯荤粺鐢ㄦ埛锛屼笉寤鸿鍦ㄦ鐢ㄦ埛涓嬪鍏ュ叾浠栨暟鎹
  • 鑰冭瘯ORACLE澶氳〃澧炲垹鏀规煡棰,姹傚ぇ绁炲府蹇
    绛旓細SELECT * FROM temployees TE , Tsalarys TS WHERE TE,C_employeeno AND TS.C_employeeno AND F_salary BETWEEN 8000 AND 10000
  • 鍏ㄦ枃鎼滅储涔婱ySQL涓嶦lasticSearch鎼滅储寮曟搸
    绛旓細MySQL鏀寔鍏ㄦ枃绱㈠紩鍜屾悳绱㈠姛鑳姐傚湪MySQL涓彲浠ュ湪CHAR銆VARCHAR鎴朤EXT鍒椾娇鐢‵ULLTETXT鏉ュ垱寤哄叏鏂囩储寮曘 FULLTEXT绱㈠紩涓昏鐢∕ATCH()...AGAINST璇硶鏉ュ疄鐜版悳绱細MySQL鐨勫叏鏂囨悳绱㈠瓨鍦ㄤ互涓嬪眬闄愶細閫氬父鏉ヨMySQL鑷甫鐨勫叏鏂囨悳绱娇鐢ㄨ捣鏉ュ眬闄愭ф瘮杈冨ぇ锛屾ц兘鍜屽姛鑳介兘涓嶅お鎴愮啛锛屼富瑕侀傜敤浜庡皬椤圭洰锛屽ぇ椤圭洰杩樻槸寤鸿浣跨敤elasti...
  • 鍦ㄦ暟鎹簱涓垜瀹氫箟涓涓猰ailsize 濡備綍鏄剧ず鏂囦欢澶у皬銆傘傚湪JAVA涓敤SQL鍐...
    绛旓細1.浣犵敤鐨刼racle鏁版嵁搴擄紝閲岄潰涓嶅簲璇ョ敤char鍨嬶紝搴旇鐢varchar2鍨 2.浣犵殑sql璇彞閿欒锛宨nsert into 鍩烘湰琛 (鑱屽伐缂栧彿,濮撳悕,鎬у埆,鑱岀О,鑱屽姟,閮ㄩ棬,鍑虹敓鏃ユ湡,绫嶈疮,韬唤璇,鍚堝悓鏈熼檺,鍙傚姞宸ヤ綔鏃堕棿)values (?,?,?,?,?,?,?,?,?,?,?)鏄痸alues涓嶆槸value 鐒跺悗鍏朵粬鎴戣繕娌$湅鍑轰粈涔堥敊璇 浣犳敼涓涓嬬湅鍙互涓...
  • 鍐欏嚭鍒涘缓濡備笅涓夊紶鏁版嵁琛ㄧ殑SQL璇彞銆
    绛旓細鍦⊿SMS涓紝鐢ㄣ愬垱寤鸿〃銆戞潵璁捐锛屽寘鎷害鏉燂紱鐒跺悗淇濆瓨锛岄変腑璇ユ柊琛紝鍙抽敭銆愮紪鍐欒〃鑴氭湰銆戯紝SQL灏辨湁浜嗛」鐩濊〃缁撴瀯:椤圭洰鍙:鏅氱紪鐮佸畾闀垮瓧绗︾被鍨,闀垮害涓10,涓婚敭銆傞」鐩啓鍑哄垱寤哄涓嬩笁寮犺〃鐨剆QL璇彞銆傛寜鐓ц姹傜敤SQL璇彞鍒涘缓琛ㄦ牸锛氶夎琛細琛ㄥ悕鈥斺擲C灞炴э細Sno瀛楃鍨嬶紝鏈澶7涓瓧绗﹁〃绀哄鐢熷鍙枫侰no瀛楃鍨嬶紝鏈...
  • 鍐欏嚭鍒涘缓濡備笅涓夊紶鏁版嵁琛ㄧ殑SQL璇彞
    绛旓細鍦⊿SMS涓紝鐢ㄣ愬垱寤鸿〃銆戞潵璁捐锛屽寘鎷害鏉燂紱鐒跺悗淇濆瓨锛岄変腑璇ユ柊琛紝鍙抽敭銆愮紪鍐欒〃鑴氭湰銆戯紝SQL灏辨湁浜嗛」鐩濊〃缁撴瀯:椤圭洰鍙:鏅氱紪鐮佸畾闀垮瓧绗︾被鍨,闀垮害涓10,涓婚敭銆傞」鐩啓鍑哄垱寤哄涓嬩笁寮犺〃鐨剆QL璇彞銆傛寜鐓ц姹傜敤SQL璇彞鍒涘缓琛ㄦ牸锛氶夎琛細琛ㄥ悕鈥斺擲C灞炴э細Sno瀛楃鍨嬶紝鏈澶7涓瓧绗﹁〃绀哄鐢熷鍙枫侰no瀛楃鍨嬶紝鏈...
  • 鏄撻ERP 棰勮鍙婃暟鎹闃呰缃唴SQL濡備綍鍐
    绛旓細create trigger [MOCTA-UPDATE] ON [dbo].[MOCTA] FOR UPDATE AS Declare @a1 varchar(20), @a2 varchar(1000), @time char(17), @time1 char(8), @riqi char(8), @olddh char(14), @dh char(14), @TA001 CHAR(4), @TA002 CHAR(11), ...
  • C#涓皢鏁版嵁鎻掑叆鍒癊xcel琛ㄤ腑
    绛旓細sqlStr = @"create table 淇℃伅琛(鎵嬫満 char(15),濮撳悕 nvarchar(10),鐢熸棩 char(8),宸ヤ綔 nvarchar(20),閭 varchar(30),鍦板潃 nvarchar(50))";OleDbCommand oleCmd = new OleDbCommand(sqlStr, oleConn);oleCmd.ExecuteNonQuery();} string phone = textBox1.Text;string name = textBox2.Text;...
  • 鍏充簬SQL鏁版嵁搴撲互鍙奐AVA鐨勪竴浜涢棶棰,鍦ㄧ嚎鎬ョ瓑
    绛旓細varchar(闀垮害),鍙彉闀垮瓧绗︿覆,char(闀垮害) 瀹氶暱number(..,..),number 琛ㄧず娴偣鏁,鎴栬呮槸鏁存暟long 澶у璞,clog 瀛楃鐨勫ぇ瀵硅薄,鐩稿綋浜庢枃鏈枃浠跺湪琛ㄤ腑鍙瓨鏀句竴涓浉褰撲簬鍙拡瀵瑰 blog 浜岃繘鍒剁殑澶у璞,涔熸槸浠ョ浉褰撲簬鎸囬拡鐨勫舰寮忓瓨鏀剧殑銆俻rimary key绾︽潫:涓婚敭绾︽潫鐨勫畾涔:绗竴绉嶅畾涔夊舰寮:create table test(c number ...
  • 扩展阅读:mysql varchar ... nvarchar与varchar区别 ... chamberlain ... reference ... constraint ... varchar2 ... varchar 50 ... values ... tinyint ...

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