文本字符串类型

类型 值的长度 长度范围 占用的存储空间
CHAR(M) M 0<=M<=255 M个字节
VARCHAR(M) M 0<=M<=65535 实际长度+1个字节
TINYTEXT L 0<=L<=255 L+2个字节
TEXT L 0<=L<=65535 L+2个字节
MEDIUMTEXT L 0<=L<=16777215 L+3个字节
LONGTEXT L 0<=L<=4294967295 L+4个字节
ENUM L 0<=L<=65535 1或2个字节
SET L 0<=L<=64 1,2,3,4或8个字节

1、CHAR与VARCHAR类型

CHARVARCHAR类型都可以存储比较短的字符串。CHAR固定长度,VARCHAR可变长度

  • CHAR:
    CHAR(M) 类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。
    如果保存时,数据的实际长度比CHAR类型声明的长度小,则会在右侧填充空格以达到指定的长度。当MySQL检索CHAR类型的数据时,CHAR类型的字段会去除尾部的空格。
    定义CHAR类型字段时,声明的字段长度即为CHAR类型字段所占的存储空间的字节数。

  • VARCHAR:
    VARCHAR(M) 定义时,必须指定长度M,否则报错。
    MySQL4.0版本以下,varchar(20):指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;MySQL5.0版本以上,varchar(20):指的是20字符。
    检索VARCHAR类型的字段数据时,会保留数据尾部的空格。VARCHAR类型的字段所占用的存储空间为字符串实际长度加1个字节。

2、TEXT类型

  • 在MySQL中,TEXT用来保存文本类型的字符串,总共包含4种类型,分别为TINYTEXTTEXTMEDIUMTEXT
    LONGTEXT类型。
  • 在向TEXT类型的字段保存和查询数据时,系统自动按照实际长度存储,不需要预先定义长度。这一点和VARCHAR类型相同。
  • 由于实际存储的长度不确定,MySQL 不允许 TEXT 类型的字段做主键。遇到这种情况,你只能采用CHAR(M),或者 VARCHAR(M)。

TEXT文本类型,可以存比较大的文本段,搜索速度稍慢,因此如果不是特别大的内容,建议使用CHAR,VARCHAR来代替。还有TEXT类型不用加默认值,加了也没用。而且text和blob类型的数据删除后容易导致“空洞”,使得文件碎片比较多,所以频繁使用的表不建议包含TEXT类型字段,建议单独分出去,单独用一个表。

3、ENUM类型

  • ENUM类型也叫作枚举类型,ENUM类型的取值范围需要在定义字段时进行指定。设置字段值时,ENUM类型只允许从成员中选取单个值,不能一次选取多个值

  • 其所需要的存储空间由定义ENUM类型时指定的成员个数决定。
    当ENUM类型包含1~255个成员时,需要1个字节的存储空间;
    当ENUM类型包含256~65535个成员时,需要2个字节的存储空间。

举例:

#创建表如下:
CREATE TABLE test_enum(
season ENUM('春','夏','秋','冬','unknow')
);
#添加数据:
INSERT INTO test_enum
VALUES('春'),('秋');# 忽略大小写
INSERT INTO test_enum
VALUES('UNKNOW');# 允许按照角标的方式获取指定索引位置的枚举值
INSERT INTO test_enum
VALUES('1'),(3);# 当ENUM类型的字段没有声明为NOT NULL时,插入NULL也是有效的
INSERT INTO test_enum
VALUES(NULL);#报错:Data truncated for column 'season' at row 1
INSERT INTO test_enum
VALUES('ab');

4、SET类型

SET表示一个字符串对象,可以包含0个或多个成员,但成员个数的上限为64。设置字段值时,可以取取值范围内的0个或多个值
当SET类型包含的成员个数不同时,其所占用的存储空间也是不同的,体如下:

成员个数范围 占用的存储空间
1<=L<=8 1个字节
9<=L<=16 2个字节
17<=L<=24 3个字节
25<=L<=32 4个字节
33<=L<=64 8个字节

SET类型在存储数据时成员个数越多,其占用的存储空间越大。注意:SET类型在选取成员时,可以一次选择多个成员,这一点与ENUM类型不同。

举例:

#创建表如下:
CREATE TABLE test_set(
s SET ('A', 'B', 'C')
);
#添加数据:
INSERT INTO test_set (s) VALUES ('A'), ('A,B');#插入重复的SET类型成员时,MySQL会自动删除重复的成员
INSERT INTO test_set (s) VALUES ('A,B,C,A');#向SET类型的字段插入SET成员中不存在的值时,MySQL会抛出错误。
INSERT INTO test_set (s) VALUES ('A,B,C,D');

MySQL学习(十七):数据类型之文本字符串类型相关推荐

  1. MySQL数据库基础:数据类型详解-文本字符串类型

    前言 正好趁着这次一起学习复习一下MySQL数据库的基本知识.也是一直在用这个数据库,有些基础的知识点长久不用就会遗忘,就比如数据类型溢出的问题,很多时候建表的时候随便给定个类似,结果导入数据的时候报 ...

  2. MySQL 学习笔记(3)— 字符串函数、数值函数、日期时间函数、流程函数、聚集函数以及分组数据

    1. 字符串函数 MySQL 的常用函数包括字符串函数.数值函数.日期时间函数.流程函数等. SELECT ascii("abc"),char(97),concat("h ...

  3. MySQL学习笔记:全文本搜索

    本文为本人学习书籍<MySQL必知必会>笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~ 18 全文本搜索 并非所有搜索引擎都支持全文搜索.最常用的两个搜索引擎MyISAM(支持 ...

  4. Redis数据类型-String(字符串类型)

    String是redis最基本的类型,你可以理解成Memcached一模一样的类型,一个key对应一个value. String类型是二进制安全的,意思是redis的string可以包含任何数据,比如 ...

  5. mysql学习-常用的函数(字符串函数)

    mysql中的字符串函数 函数 功能 CONCAT(s1,s2,...sn) 连接s1,s1...sn为一个字符串 INSERT(str,x,y,instr) 将字符串str从x位置开始,y个字符长的 ...

  6. 前端学习(631):字符串类型

  7. 不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏

    文章目录 1. MySQL中的数据类型 2. 整数类型 3. 浮点数类型 4. 定点数类型 5. 位类型:BIT 6. 日期与时间类型 7. 文本字符串类型 8. ENUM类型 9. SET类型 10 ...

  8. mysql数据库的字符串表示什么意思_MySQL数据库的字符串类型详解(01)

    Mysql的数据类型主要分为三类:数字类型.字符串(字符)类型.日期和时间类型,由于时间紧迫,根据学习的需要 数字类型暂不做详解,等待有时间了在修改此文档,此文主要介绍mysql 数据类型中的字符串类 ...

  9. MySQL学习(十五):数据类型之数值型

    1.MySQL中的数据类型 类型 类型举例 整数类型 TINYINT.SMALLINT.MEDIUMINT.INT(或INTEGER).BIGINT 浮点类型 FLOAT.DOUBLE 定点数类型 D ...

最新文章

  1. iPhone中的heic格式怎么查看,heic文件怎么打开
  2. JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解
  3. spring(3)高级装配
  4. Android布局加载慢,Android布局优化(四)X2C — 提升布局加载速度200%
  5. 51系列计算机字长,计算机等级考试之MsOffice练习题第51套
  6. 高校学霸情侣 双双保研中科院,3年获近9万奖学金,120余项个人荣誉……
  7. 半监督学习的概述与思考,及其在联邦场景下的应用(续)
  8. SpringBoot 分布式session
  9. 动态lacp和静态lacp区别_LACP学习笔记
  10. 【AllenNLP入门教程】: 1、基于Allennlp2.4版本的文本分类
  11. c语言scanf中输入根号2,C语言格式输入函数scanf()详解
  12. windows下发文件到linux中文名乱码解决办法
  13. 测试3.0u盘速度软件,SanDisk USB3.0接口的U盘测试
  14. source insight护眼模式颜色
  15. 云服务器防火墙开放端口访问--电信云服务器
  16. ORACLE数据库字段类型说明
  17. 网站建设多少钱(做一个网站需要多少钱)
  18. win10 软件移动位置信息服务器,如何修改win10软件默认安装位置
  19. 解决U盘文件变成快捷方式的最佳方法
  20. linux账号与群组

热门文章

  1. 天天生鲜Django项目①
  2. 神策数据首批入驻「WPS企业服务联盟」
  3. 3DMAX与MAYA在Unity与UE中的旋转、轴向关系梳理
  4. JAVA经典例题二(10 examples)
  5. 计算机主机后面com口,怎么查看com口?电脑的的com口(串口)更改的方法
  6. 雪球在股市风暴下的高可用架构改造分享
  7. 关于Oracle的ORA 12505错误 ORA-12505, TNS:listener does not currently know of SID given in connect descrip
  8. 网络工程师成长日记162-网络工程师的定位
  9. Polkadot的轻白皮书
  10. Linux利用yum仓库安装软件