mysql char 与varchar的区别 mysql 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\u662f\u5b9a\u957f\u7684,\u58f0\u660e\u4e00\u4e2achar\u5b57\u6bb5\u65f6\u9700\u8981\u6307\u5b9a\u957f\u5ea6,\u6bd4\u5982\u5b57\u6bb5\u58f0\u660e\u4e3achar(10),\u8fd9\u4e2a\u5b57\u6bb5\u7684\u503c\u5c31\u6700\u957f10\u4e2a\u5b57\u7b26,\u6700\u77ed\u53ef\u4ee5\u6ca1\u6709,\u4e0d\u8bba\u5b9e\u9645\u5b58\u50a8\u7684\u5185\u5bb9\u6709\u6ca1\u6709\u523010\u4e2a\u5b57\u7b26,\u8fd9\u4e2a\u5b57\u6bb5\u5728\u5b58\u50a8\u4e0a\u603b\u662f\u5360\u752810\u4e2a\u5b57\u7b26\u7684\u7a7a\u95f4,\u6700\u5927\u652f\u6301\u5230255
varchar \u662f\u4e0d\u5b9a\u957f\u7684,\u6bd4\u5982\u58f0\u660e\u4e00\u4e2a\u5b57\u6bb5\u4e3avarchar(20),\u90a3\u4e48\u8fd9\u4e2a\u5b57\u6bb5\u5b9e\u9645\u5360\u7528\u7684\u63a7\u4ef6\u662f\u52a8\u6001\u7684,\u5e76\u4e0d\u662f\u56fa\u5b9a\u7684\u5360\u752820\u4e2a\u5b57\u7b26\u7684\u7a7a\u95f4,\u6700\u5927\u652f\u6301\u523065535
text\u4e00\u822c\u7528\u4e8e\u5b58\u653e\u8d85\u957f\u7684\u6587\u672c\u65f6\u4f7f\u7528,text\u5b57\u6bb5\u4e0d\u80fd\u8bbe\u7f6e\u9ed8\u8ba4\u503c,\u6700\u5927\u652f\u63012\u768416\u6b21\u65b9\u957f\u5ea6
\u4e00\u822c\u60c5\u51b5\u4e0b\u5bf9\u4e8e\u56fa\u5b9a\u957f\u5ea6\u7684\u5b57\u6bb5\u4f7f\u7528char\u6765\u5b58\u653e,\u67e5\u8be2\u6027\u80fd\u4f1a\u597d,\u6bd4\u5982\u624b\u673a\u53f7\u8fd9\u79cd,\u56fa\u5b9a\u957f\u5ea6\u7684
\u6bd4\u5982\u5b58\u50a8\u9875\u9762\u5730\u5740\u8fd9\u79cd\u4e0d\u5b9a\u957f\u5ea6\u7684,\u5c31\u4f7f\u7528varchar\u7c7b\u578b\u5b58\u50a8,\u975e\u56fa\u5b9a\u957f\u5ea6\u7684\u503c\u80fd\u7528varchar\u5b58\u50a8\u7684,\u5c31\u4e0d\u8981\u7528text,text\u7684\u68c0\u7d22\u6548\u7387\u5b9e\u5728\u4e0d\u597d

char:
使用指定长度的固定长度表示的字符串;比如char(8),则数据库会使用固定的8个字节来存储数据

,不足8为的字符串在其后补空字符;
varchar
在oracle中varchar跟char是一个类型;sqlserver中varchar相当于oracle中的varchar2
varchar2
用实际字符数+2个字节来存储的变长字符串;比如一个字段定义为varchar(10),而实际存储的内容为

‘A’,则数据库会用3个字节来存储该字符串,其中前两个字节用来存储字符的长度;
在数据库中的字段,由于一个字段大小不能超过一个block的长度,所以varchar和char都是最大为

8000个字节,由于可能会存储汉字,也就是一个字符用2个字节来存储,所以字段中最大定义为varchar

(4000),而在plsql中,这个大小的限制变为32000左右,这是因为表示其大小的字节只有两个。

char是单字符存储 varchar是2个字符存储 如果你像保存有关汉字的字段你就用varchar
像用字母数字就用char

char是定义时就固定了长度,varchar是可变长度的,比较灵活

char是不可变,varchar是可变的的,就是这么简单

扩展阅读:mysql左连接查询sql语句 ... mysql varchar2 ... mysql char varchar区别 ... mysql explan ... mysql varchar长度 ... mysql varchar最大 ... mysql varchar 中文 ... mysql tochar ... mysql char最大长度 ...

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