sql表中的 varchar 字段前面补0_CHAR与VARCHAR面面观

前言: 

前面写过一篇介绍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 &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值