MYSQL数据类型----字符串类型
可以使用命令查看常见编码所占字节数:
MariaDB [(none)]> SHOW CHARACTER SET;
查看默认字符: SHOW VARIABLES LIKE 'character%';,发现数据库编码均已改成utf8
1. utf8编码一个字符占3个字节; 2. gbk编码一个字符占2个字节; 3. latin1编码一个字符占1个字节。 |
更改某个字段的字符集: VARCHAR(20) character set utf8;
更改数据库的字符集: CREATE DATABASE 数据库名 character set utf8;;
char(M) 与 varchar(M) 的理解可以参考int(M). varchar(n) 表示n个字符,无论汉字和英文,MySql都能存入 n 个字符,仅实际字节长度有所区别。
2 varchar
(1)保存可变长字符串。 理解:比固定长度占用更少的存储空间,因为它只占用自己需要的空间。例外情况:使用ROW_FORMAT=FIXED创建的MyISAM表,它为每行使用固定长度的空间,可能会造成浪费。 (2)存储长度信息。 如果定义的列小于或等于255,则使用1个字节存储长度值,假设使用latin1字符集,如varchar(10)将占用11个字节的存储空间。反过来,varchar(1000),则占用1002个字节的存储空间。 (3)节约空间,对性能有帮助。 (4)5.0版本以上,无论是取值还是保存,MySQL都会保留字符串末尾的空格。 (5)对于变长字段如varchar,mysql会用额外的字节来存储字符长度,255个字符以内用1个字节存,多于255个字符用2字节存; |