CHAR与VARCHAR,字符类型。
比如CHAR(10),表示定长的最大存储10个字符的数据类型。
我们知道mysql数据库表中的行记录的最大size为65535个byte。
并且就目前来看,mysql所支持的字符集中也只有utf8mb4需要4个byte来表示一个字符。
(说错了,4个字节的还有utf32和gb18030,以及utf16和utf16le。)
所以即使在utf8mb4字符集下,使用CHAR(255)时,也不会超过65535个byte的限制。
但是VARCHAR类型就不一定了。
由于行size最大为65535个byte。
所以在utf8字符集下,比如(这里的表都考虑为只有一个列name的情况下,如果多个列,同样遵循row size max = 65535bytes):
C:\Users\Administrator>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 5.7.11-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SELECT
-> SCHEMA_NAME,
-> DEFAULT_CHARACTER_SET_NAME
-> FROM
-> information_schema.`SCHEMATA`
-> WHERE SCHEMA_NAME LIKE 'test%';
+-------------+----------------------------+
| SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME |
+-------------+----------------------------+
| test | utf8 |
| test1 | utf8mb4 |
| test2 | latin1 |
+-------------+----------------------------+
3 rows in set (0.00 sec)
mysql> use test
Database changed