深入理解MySQL varchar(50)
作者:YYAugenstern
一、理解MySQL varchar(50)
1.1、概述
日常开发中,数据库建表是必不可少的一个环节,建表的时候通常会看到设定某个字段的长度为varchar(50),例如如下建表语句:
那么怎么理解varchar(50)?这个分情况的,MySQL的版本不同,存储的字符长度也不同,具体来讲如下:
(1)4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节);
(2)5.0版本以上,varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个;
其实最好的办法是在自己数据库中建个表试试可以放多少汉字,现在公司开发中MySQL的版本至少都为5.xx版本及以上版本了,所以说varchar(50)是可以存50个汉字的;
1.2、验证
1.2.1、当前MySQL的版本
1.2.2、数据库验证
(一)初始化表
DROP TABLE IF EXISTS `account`; CREATE TABLE `account` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `is_deleted` int NOT NULL DEFAULT 0 COMMENT '删除标识 0:未删除、1:已删除', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间', `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名', `money` decimal(10,0) NULL DEFAULT NULL COMMENT '账户余额', `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '账户表' ROW_FORMAT = DYNAMIC; insert into `account` values (null,0,now(),now(),'张三','1000000','zhangsan@qq.com'), (null,0,now(),now(),'尼古拉斯赵四','3000000','zhaosi@qq.com');
(二)查询name占用几个字符
select `name`,char_length(`name`) from account;
1.3、题外话
MySQL中的length VS char_length:
length():mysql里面的length()函数是一个用来获取字符串长度的内置函数;
char_length():在mysql内置函数里面查看字符串长度的还有一个函数是char_length();
区别:
length(): 单位是字节,utf8编码下,一个汉字三个字节,一个数字或字母一个字节。gbk编码下,一个汉字两个字节,一个数字或字母一个字节;
char_length():单位为字符,不管汉字还是数字或者是字母都算是一个字符;
MySQL 中 varchar 与 char 的区别?varchar(30) 中的 30 代表的涵义?
在MySQL中,varchar和char都是用于存储可变长度字符串的数据类型,但它们之间存在一些关键的区别。
- 存储空间:varchar存储的是实际存储在其中的字符数,而char存储的是指定的固定长度的字符数。这意味着如果一个字符串的实际长度小于varchar类型指定的长度,那么存储空间会得到更有效的利用。相反,如果一个字符串的实际长度超过char类型指定的长度,那么多余的字符会被忽略。
- 性能:由于varchar根据实际存储的数据量分配空间,所以它通常比char更快,特别是在处理大量数据时。
- 可变长度:varchar允许字符串的长度改变,这意味着它可以存储不同长度的字符串。另一方面,char在创建时就已经确定了长度,所以它不能动态地改变大小。
现在来看一下varchar(30)中的数字30:
varchar(30)表示一个可以存储最多30个字符的可变长度字符串。这里的数字30是一个最大值,实际存储的字符数可能会少于这个数字,具体取决于实际存储的字符串长度。
总的来说,选择使用varchar还是char主要取决于你的具体需求。如果你知道你的数据可能会包含不同长度的字符串,那么使用varchar可能是一个更好的选择。如果你知道你的字符串将始终具有相同的长度,那么使用char可能更为合适。
到此这篇关于深入理解MySQL varchar(50)的文章就介绍到这了,更多相关MySQL varchar(50)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!