【MYSQL】字符串存储类型该怎么选:mysql中char、varchar、text的区别

文章目录

  • [一. 简述](#一. 简述)
  • [二. 各自特点](#二. 各自特点)

参考官网:mysql-string-type-syntax

一. 简述

  1. char长度固定: 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。
  2. varchar可变长度:可以设置最大长度;适合用在长度可变的属性。
  3. text不设置长度: 当不知道属性的最大长度时,适合用text。

二. 各自特点

char

  • char(n)中的n表示字符数,最大长度是255个字符;
  • 如果是utf8编码方式, 那么char类型占255 * 3个字节。(utf8下一个字符占用1至3个字节)

varchar:

  • varchar(n)中的n表示字符数,最大空间是65535个字节, 存放字符数量跟字符集有关系;
  • varchar实际范围是65532或65533, 因为内容头部会占用1或2个字节保存该字符串的长度;如果字段default null(即默认值为空),整条记录还需要1个字节保存默认值null。
  • 如果是utf8编码, 那么varchar最多存65532/3 = 21844个字符。

text:

  • 跟varchar基本相同,理论上最多保存65535个字符,实际上text占用内存空间最大也是65535个字节;
  • 考虑到字符编码方式, 一个字符占用多个字节, text并不能存放那么多字符;
  • 跟varchar的区别是text需要2个字节空间记录字段的总字节数。

最后

查询速度: char最快, varchar次之,text最慢,所以 能用varchar的时候就不用text。

相关推荐
xvch31 分钟前
Kotlin 2.1.0 入门教程(二十五)类型擦除
android·kotlin
夜泉_ly33 分钟前
MySQL -安装与初识
数据库·mysql
qq_529835352 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New4 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6754 小时前
数据库基础1
数据库
我爱松子鱼4 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo4 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser5 小时前
【SQL】多表查询案例
数据库·sql
Galeoto5 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)6 小时前
MySQL主从架构
服务器·数据库·mysql