MySQL数据类型之CHAR与VARCHAR及row size max=65535bytes

本文探讨了MySQL中CHAR和VARCHAR数据类型的存储限制,特别是行记录大小不超过65535字节的问题。在UTF8MB4字符集下,CHAR(255)不会超出限制,而VARCHAR类型受到额外的长度字节和行大小限制。例如,在UTF8字符集中,单个VARCHAR列最大长度为21844,而在latin1中则为65532。当有多个VARCHAR列时,需要计算总长度以确保不超过行大小限制。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值