mysql中varchar50_02 VARCHAR(50)中的50到底是能存50个字还是50个字节?

你好,我是李辉。

这是专栏的第一篇文章,在专栏的前几个小节,我会先和你先聊一聊 MySQL 的数据类型。了解 MySQL 的数据类型是开发人员在使用 MySQL 数据库的时候,必备的基础技能之一。也正因为此,这部分知识也是面试官面试的时候屡屡提及的高频问题,所以尽量不要在这个地方栽跟头。这一小节我们就先来说说在数据建模设计时使用非常频繁的字符串类型 – VARCHAR。

为了在阅读时不引起歧义,本专栏中我们先做一个简单的约定:

MySQL 数据库版本 5.7

使用 InnoDB 存储引擎

默认隔离级别是 Repeatable Read

默认使用 UTF8 编码

本专栏中的所有文章都使用上述约定,有不同的地方我们再单独做说明。

1. VARCHAR (50) 中的 50 到底是能存 50 个字还是 50 个字节?

我们先做个简单的实验:

mysql> create database imooc_mysql_interview;

Query OK, 1 row affected (0.00 sec)

mysql> use imooc_mysql_interview

Database changed

mysql> create table varchar_test(col_1 varchar(8));

Query OK, 0 rows affected (0.01 sec)

mysql> insert into varchar_test values('ABCDEFGH'),('数一数是不是八个');

Query OK, 2 rows affected (0.01 sec)

Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from varchar_test;

+--------------------------+

| col_1 |

+--------------------------+

| ABCDEFGH |

| 数一数是不是八个 |

+--------------------------+

2 rows in set (0.00 sec)

从上述实验的结果可知,显然是能存 8 个字符而不是 8 个字节,也就是说 VARCHAR 的括号中的数字代表的是字符。如果存的是字节,由于中文、英文和 emoji 在 utf-8 中的字节数都不一样,势必会给编程造成一定的困扰。

1.1 CHAR (50) 和 VARCHAR (50) 有什么区别?

刚工作不久

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值