前言:
前面写过一篇介绍int类型的文章,一直想写一篇介绍字符串字段类型的文章,一直拖着也没思路要怎么下手。最近多关注了下这方面的文章,决定还是把拖了好久的文章了结了吧。本篇文章主要会介绍字符串类型char及varchar的用法及区别。
本文实验环境为MySQL 5.7.23版本,存储引擎为Innodb,sql_mode采用严格模式,字符集是utf8。
▍1.CHAR类型介绍
我们平时使用char类型定义字段时,往往会指定其长度M,即char(M)。其实M指的是字符数,即这个字段最多存储多少个字符,M可不指定,默认为1,范围是[0,255],单个字母、数字、中文等都是占用一个字符。utf8字符集下一个中文字符占用3个字节。下面我们简单测试下:
# 假设以如下建表语句创建测试表CREATE TABLE `char_tb1` ( `col1` char DEFAULT NULL, `col2` char(5) DEFAULT NULL, `col3` char(10) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;# 进入数据库查询建表语句如下 发现char(M) M可不指定,默认为1mysql> show create table char_tb1\G*************************** 1. row *************************** Table: char_tb1Create Table: CREATE TABLE `char_tb1` ( `col1` char(1) DEFAULT NULL, `col2` char(5) DEFAULT NULL, `col3` char(10) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)# 插入数据 可以看出M表示保存的最大字符数,字母、数字、中文等都是占用一个字符mysql> insert into char_tb1 (col1) values ('a'),('1'),('王'),(']');Query OK, 4 rows affected (0.01 sec)mysql> insert into char_tb1 (col1) values ('aa'),('12');ERROR 1406 (22001): Data too long for column &#