我只是mysql中的新手。
我想宣布我的表格是这样的,
CREATE TABLE `test` (
`NO` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`ID` char(50) CHARACTER SET utf8 NOT NULL ,
`FIRST_NAME` char(50)CHARACTER SET utf8 NOT NULL,
`LAST_NAME` smallint(50)char(50)CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`NO`),
)
我在mysql中读到了关于char和varchar的内容
The length of a CHAR column is fixed to the length that you declare when you create the table.
我的问题是,如果我对中文,日文,韩文或其他unicode字符使用unicode char(50),这些列是否会在数据库中使用过多的存储并影响性能?
对于英文字符,如果我这样声明我的表格,它最多只能接受50个字符?
有没有更好的方法或使用char(100)作为unicode? p>
如果我错了,请纠正我。
答案 0 :(得分:1)
根据MySQL manual,CHAR(M)
列所需的字节数为 M x w ,其中 w < / em>是“字符集中最大长度字符所需的字节数”。这清楚地表明,CHAR(50)
列将存储50个字符,而不是50个字节。如果你的角色碰巧是中国人等,它仍然会存储多达50个。请注意,VARCHAR(50)
最多也会存储50个字符,但如果忽略VARCHAR
列附带的1-2字节开销,则会占用比CHAR(50)
更少的存储空间存储少于50个字符的列。
编辑这仅适用于使用MySQL 5.5或更高版本的情况。早期版本将字符和文本字段的长度解释为字节,而不是字符。