MySQL类型定义 - 字符串类型

2023-10-27

1.char类型

1. CHAR类型和VARCHAR类型
CHAR类型和VARCHAR类型都在创建表时指定了最大长度,其基本形式如下:

  • 字符串类型(M)
  • 其中,“字符串类型”参数指定了数据类型为CHAR类型还是VARCHAR类型;M参数指定了该字符串的最大长度为M。例如,CHAR(4)就是数据类型为CHAR类型,其最大长度为4。
  • CHAR类型的长度是固定的,在创建表时就指定了。其长度可以是0~255的任意值。例如,CHAR(100)就是指定CHAR类型的长度为100。CHAR 存储值时,它们会用空格右填充到指定的长度。
  • VARCHAR类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取0~65535之间的任意值。指定VARCHAR类型的最大值以后,其长度可以在0到最大长度之间。例如,VARCHAR(100)的最大长度是100,但是不是每条记录都要占用100个字节,而是在这个最大值范围内使用多少就分配多少。VARCHAR类型实际占用的空间为字符串的实际长度加1或2,这样即可有效节约系统的空间。在这里插入图片描述
    在这里插入图片描述
mysql> use test;   #选择数据库test 
mysql> create table char1(e_char char(5), e_varchar varchar(5)); #创建数据库表
mysql> insert into char1 values('12345','12345');  #正常插入数据
mysql> insert into char1 values('1 2  ','1 2  ');   #char类型会屏蔽后面隐藏的空格,varchar 不会
mysql>select concat('(',e_char, ')'), concat('(',e_varchar, ')')  from char1 ; #让char 后面屏蔽的空格原型毕露 

在这里插入图片描述

在这里插入图片描述
char 后面插入的空格直接给屏蔽了, 而 varchar 后面的空格没有被屏蔽
在这里插入图片描述
也可以用concat(’|’, ‘|’), 就是把引号里面的符号换一下
在这里插入图片描述

实战建议

  1. char一定会使用指定的空间,varchar是根据数据来定空间
  2. char的数据查询效率比varchar高:varchar是需要通过后面的记录数来计算
  3. 如果确定数据一定是占指定长度,那么使用char类型;
  4. 如果不确定数据到底有多少,那么使用varchar类型;
  5. 如果数据长度超过255个字符而在65535之内,直接使用varchar
  6. 如果字符串尾部要保留空格,必须选择varchar

 
 
 

2. TEXT类型

TEXT类型是一种特殊的字符串类型,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,其长度和存储空间的对比下表所示:
在这里插入图片描述

  • 各种TEXT类型的区别在于允许的长度和存储空间不同。因此,在这几种TEXT类型中,根据需求选取既能满足需要又节省空间的类型即可。

特别注意:

  1. 以上各类型无须指定长度!
  2. 允许的长度是指实际存储的字节数,而不是实际的字符个数,比如假设一个中文字符占两个字节, 那么TEXT 类型可存储 65535/2 = 32767 个中文字符,
    而varchar(100)可存储100个中文字符,实际占200个字节,但varchar(65535) 并不能存储65535个中文字符,因为已超出表达范围.
    在这里插入图片描述
    插入90个中文字符, 会提示数据过长, 无法插入 390=270 超出255字节!!
    在这里插入图片描述
    插入80个中文字符, 可以插入成功, 因为一个中文在UTF-8中占3个字节, 3
    80=240
    在这里插入图片描述
     
     
     
     

实战建议

  1. char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。超过255字节的只能用varchar或者text;
  2. varchar可变长度,可以设置最大长度;适合用在长度可变的属性。
  3. text不设置长度, 当不知道属性的最大长度时,适合用text, 能用varchar的地方不用text
  4. 如果都可以选择,按照查询速度: char最快, varchar次之,text最慢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL类型定义 - 字符串类型 的相关文章

随机推荐

  • 权重设计介绍

    相关产品 RocketMQ 之前在阿里的 负载均衡 比赛中 就有这个算法 RocketMQ 中包含多种负载算法 其中 权重 算法就属于其中一种 也是最实用的一种 奖励系统 经常会有许多活动 或则任务 当用户完成后 可以获得相关的奖励 当然可
  • 华为OD机试 - 评论转换输出(Java)

    题目描述 在一个博客网站上 每篇博客都有评论 每一条评论都是一个非空英文字母字符串 评论具有树状结构 除了根评论外 每个评论都有一个父评论 当评论保存时 使用以下格式 首先是评论的内容 然后是回复当前评论的数量 最后是当前评论的所有了评论
  • 操作系统内核

    现代操作系统一般将OS划分为若干个层次 再将OS的不同功能分别设置在不同的层次中 通常将一些与硬件紧密相关的模块 如中断处理程序等 各种常用及运行频率较高的模块 如时钟管理 进程调度和许多模块所公用的二些基本操作 都安排在紧靠硬件的软件层次
  • vue生命周期

    随着对 vue 的不断了解 会越来越发现它生命周期的重要性 只有了解了它的生命周期 才能在开发项目的时候在逻辑上的很好的判断什么时候该发生什么事件 即很好的控制页面 一 什么是 vue 生命周期 Vue 实例从创建到销毁的过程 就是生命周期
  • kong+Verdaccio+ldap(docker)

    需求 使用Kong来代理Verdaccio 实现直接通过域名 path的方式来访问 并且Verdaccio使用ldap来管理 前提 Kong ldap已部署好 并且也部署好了Kong Dashboard 后面有需求再写关于Kong代理的各种
  • 国内的Ubuntu镜像源

    国内的Ubuntu镜像源 Ubuntu清华镜像源 今天学习docker需要在线Ubuntu镜像 所以做了一个镜像下载地址笔记 方面以后的下载 官方镜像下载访问地址 https cn ubuntu com download alternati
  • 明哥复习MyBatis(1)

    这不是原创 借鉴尚硅谷的 不是原创 一 核心配置文件详解
  • impdp或expdp报错ORA-39002: invalid operation,ORA-39070: Unable to open the log file

    oracle oracle rac01 backup cat expdp par USERID as sysdba DIRECTORY KMDATA EXP job name jinky exp filesize 5000m paralle
  • Java集合——Iterable和Iterator接口介绍

    Iterable Iterable和Iterator是什么 Iterable源码 Iterator源码 使用 Iterable和Iterator是什么 Iterable是Collection的实现接口 即是集合的最顶级父类 Iterator
  • 小白学股票基金_2

    到底是买股票还是买基金 说基金和股票差不多指的应该是偏股型基金 但是基金里面还有债券型 QDII以及非常大众化的货币型基金 众所周知的余额宝就是一款货币型基金啦 等等 风险等级也不一样 所以 为防止这样混为一谈 我们这里讨论的就是炒股和买偏
  • 0.0 Windows + Linux(Ubuntu20.04) 超简单的双系统安装

    目录 一 U盘启动盘的制作 1 下载操作系统 2 下载U启动制作工具 二 磁盘分配 三 Ubuntu20 04系统安装 1 修改bios为U启动 2 安装配置Ubuntu 2 1 Install Ubuntu 2 2 安装关键之处在于分区
  • 4年经验来面试20K的测试岗,连基础都不会,还不如招应届生!

    公司前段时间缺人 也面了不少测试 结果竟然没有一个合适的 一开始瞄准的就是中级的水准 也没指望来大牛 提供的薪资在10 20k 面试的人很多 但平均水平很让人失望 看简历很多都是3 4年工作经验 但面试中 不提工具和编程 仅仅基础的技术很多
  • Flink简单教学5-时间

    时间 Time Flink支持三种不同的时间 处理时间 processing time 指当前操作的时间 如 map 当程序以处理时间运行 所有基于时间的操作 窗口 都依赖各个operator的机器时间 事件时间 event time 事件
  • office 2010 projectn visio 下载

    Office 2010 project专业版 64位 ed2k file cn project professional 2010 x64 515551 exe 453437272 84D14496F889767D46C9DE576154B
  • 矩阵的基本演算

    目录 转置 逆 迹 行列式 转置 A B T
  • 网易低代码引擎Tango正式开源

    一 Tango简介 Tango 是一个用于快速构建低代码平台的低代码设计器框架 借助 Tango 只需要数行代码就可以完成一个基本的低代码平台前端系统的搭建 Tango 低代码设计器直接读取前端项目的源代码 并以源代码为中心 执行和渲染前端
  • element ui Tag 动态添加标签

    1 首先调接口获取到标签列表 级联选择器如果选择的不是第三级菜单 async getParamsData if this selectedCateKeys length 3 级联选择器不会有参数 下面的面板也都为空 this selecte
  • 三层架构到DDD四层架构演进

    应用架构演化 三层架构 三层架构 为什么还画了一层 Model 呢 因为 Model 只是简单的 Java Bean 里面只有数据库表对应的属性 有的应用会将其单独拎出来作为一个 但实际上可以合并到 DAO 层 第一步 数据模型与DAO层合
  • 检测是否为快乐数

    编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 1 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 2 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 3 如果可以变为1 那么这个数就是快
  • MySQL类型定义 - 字符串类型

    1 char类型 1 CHAR类型和VARCHAR类型 CHAR类型和VARCHAR类型都在创建表时指定了最大长度 其基本形式如下 字符串类型 M 其中 字符串类型 参数指定了数据类型为CHAR类型还是VARCHAR类型 M参数指定了该字符