MySQL 中的字符串类型有 CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET 等。

下表中列出了 MySQL 中的字符串数据类型,括号中的M表示可以为其指定长度。

VARCHAR 和 TEXT 类型是变长类型,其存储需求取决于列值的实际长度(在前面的表格中用 L 表示),而不是取决于类型的最大可能尺寸。

例如,一个 VARCHAR(10) 列能保存一个最大长度为 10 个字符的字符串,实际的存储需要字符串的长度 L 加上一个字节以记录字符串的长度。对于字符 “abcd”,L 是 4,而存储要求 5 个字节。

CHAR 和 VARCHAR 类型

CHAR(M) 为固定长度字符串,在定义时指定字符串列长。当保存时,在右侧填充空格以达到指定的长度。M 表示列的长度,范围是 0~255 个字符。

例如,CHAR(4) 定义了一个固定长度的字符串列,包含的字符个数最大为 4。当检索到 CHAR 值时,尾部的空格将被删除。

VARCHAR(M) 是长度可变的字符串,M 表示最大列的长度,M 的范围是 0~65535。VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定,而实际占用的空间为字符串的实际长度加 1。

例如,VARCHAR(50) 定义了一个最大长度为 50 的字符串,如果插入的字符串只有 10 个字符,则实际存储的字符串为 10 个字符和一个字符串结束字符。VARCHAR 在值保存和检索时尾部的空格仍保留。

将不同的字符串保存到 CHAR(4) 和 VARCHAR(4) 列,说明 CHAR 和 VARCHAR 之间的差别,如下表所示。

对比结果可以看到,CHAR(4) 定义了固定长度为 4 的列,无论存入的数据长度为多少,所占用的空间均为 4 个字节。VARCHAR(4) 定义的列所占的字节数为实际长度加 1。

TEXT 类型

TEXT 列保存非二进制字符串,如文章内容、评论等。当保存或查询 TEXT 列的值时,不删除尾部空格。

TEXT 类型分为 4 种:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。不同的 TEXT 类型的存储空间和数据长度不同。

 TINYTEXT 表示长度为 255(28-1)字符的 TEXT 列。TEXT 表示长度为 65535(216-1)字符的 TEXT 列。MEDIUMTEXT 表示长度为 16777215(224-1)字符的 TEXT 列。LONGTEXT 表示长度为 4294967295 或 4GB(232-1)字符的 TEXT 列。

ENUM 类型

ENUM 是一个字符串对象,值为表创建时列规定中枚举的一列值。其语法格式如下:

<字段名> ENUM( '值1', '值1', …, '值n' )

字段名指将要定义的字段,值 n 指枚举列表中第 n 个值。

ENUM 类型的字段在取值时,能在指定的枚举列表中获取,而且一次只能取一个。如果创建的成员中有空格,尾部的空格将自动被删除。

ENUM 值在内部用整数表示,每个枚举值均有一个索引值;列表值所允许的成员值从 1 开始编号,MySQL 存储的就是这个索引编号,枚举最多可以有 65535 个元素。

定义 ENUM 类型的列(‘first’,‘second’,‘third’),该列可以取的值和每个值的索引如下表所示。


ENUM 值依照列索引顺序排列,并且空字符串排在非空字符串前,NULL 值排在其他所有枚举值前。

提示:ENUM 列总有一个默认值。如果将 ENUM 列声明为 NULL,NULL 值则为该列的一个有效值,并且默认值为 NULL。如果 ENUM 列被声明为 NOT NULL,其默认值为允许的值列表的第 1 个元素。

SET 类型

SET 是一个字符串的对象,可以有零或多个值,SET 列最多可以有 64 个成员,值为表创建时规定的一列值。指定包括多个 SET 成员的 SET 列值时,各成员之间用逗号,隔开,语法格式如下:

SET( '值1', '值2', …, '值n' )

与 ENUM 类型相同,SET 值在内部用整数表示,列表中每个值都有一个索引编号。当创建表时,SET 成员值的尾部空格将自动删除。

但与 ENUM 类型不同的是,ENUM 类型的字段只能从定义的列值中选择一个值插入,而 SET 类型的列可从定义的列值中选择多个字符的联合。
提示:如果插入 SET 字段中的列值有重复,则 MySQL 自动删除重复的值;插入 SET 字段的值的顺序并不重要,MySQL 会在存入数据库时,按照定义的顺序显示;如果插入了不正确的值,默认情况下,MySQL 将忽视这些值,给出警告。

MySQL字符串类型相关推荐

  1. mysql字符串类型时间比较大小

    日常随笔:        这里记录一个最近遇到的mysql字符串类型时间的问题 数据结构: |year(int)| month(int)| |2016 | 7 | |2016 |10| 使用CONCA ...

  2. mysql 字符串类型

    字符串类型 字符串类型指CHAR.VARCHAR.BINARY.VARBINARY.BLOB.TEXT.ENUM和SET.该节描述了这些类型如何工作以及如何在查询中使用这些类型. 类型 大小 用途 C ...

  3. mysql 字符串类型 分区_MySQL分区类型

    博文大纲: 1.RANGE分区 2.LIST分区 3.HASH分区 4.key分区 5.MySQL分表和分区的区别 6.附加:如何实现将分区放在不同的目录下进行存储 MySQL分区类型如下: RANF ...

  4. mysql 将字符串转换数字类型的_MySQL 字符串类型用数字可以查出来 MySQL字符串类型会转换成数字 MySQL隐式类型转换...

    一.发现问题 1.在一次MySQL查询中,某字段为 varchar 字符串类型,传入参数值为 int 数字类型,发现查询的结果和预期的不一致. 如: 某两列 name='11' , name = '1 ...

  5. 学习笔记:MySQL字符串类型

    字符串类型 a)         char和varchar 1.都需要指定字符的长度,char中的长度是字符的长度,而varchar的长度是字节的长度 2. char中指定的长度就是实际占用的长度,而 ...

  6. mysql字符串类型的数字比较大小sql该如何写呢

    今天上线一个需求,线上产品验收发现一个bug,lot号范围是1-99,而实际数值应该是1-449才对 原来的sql SELECT     min( ITEM_LOT ) AS minLot,      ...

  7. mysql 字符串类型 char varchar

    字符类型用在存储名字.邮箱地址.家庭住址等描述性数据   char指的是定长字符,varchar指的是变长字符 #官网:https://dev.mysql.com/doc/refman/5.7/en/ ...

  8. mysql字符串类型建立全文索引

    数据库表结构如下 现在做的是给name 成语名称建立全文索引 用字匹配到含此字的成语 修改mysql配置文件 :linux和mac,则位置为 /etc/my.cnf 然后重起mysql服务,使配置项生 ...

  9. mysql字符串类型的数字如何排序

    对字符串姓数字进行数学操作 1.字符串型数字+0 select * from table order by field+0 desc 2.字符串型数字*1 select * from table or ...

最新文章

  1. 2021年春季学期-信号与系统-第十一次作业参考答案-第八小题
  2. linux编程综合案例
  3. linux删除某个用户的共享内存,删除Linux上的所有共享内存和信号量
  4. CSS基础选择器(选择器的优先级),CSS样式块( 长度/颜色/显示方式/文本样式),盒模型组成,盒模型-block,盒模型布局...
  5. InfoPath读取数据库
  6. day31(GIL锁)
  7. java加载配置文件_java 读取和修改配置文件
  8. 最长递增子序列和双序列
  9. opencart笔记
  10. 工业控制系统(ICS)
  11. 中国台湾研发miniLED技术进展迅速,将给面板技术带来变革
  12. Linux配置免密码登录(原理 + 实践)
  13. \t\t桌面图标无法删除 删除桌面IE图标 桌面图标整理
  14. 推荐阅读20100812
  15. Java //PP2.11 编写一个程序,提示输入一个代表总钱数的双精度值,然后确定每种纸币和硬币需要的最少数量以达到输入的总钱数(假设10美元纸币为所需要的最大面额)。例如,如果输入的值为47.63
  16. 微信支付V3版商家转账到零钱
  17. VLOOKUP函数的多条件引用
  18. ts 在vue中的使用总结
  19. 【Unity3D Shader编程】之六 暗黑城堡篇 表面着色器 Surface Shader 的写法 一
  20. 现在的程序员都是Gay

热门文章

  1. ieda ts文件报错_使用TS开发微信小程序(1):环境搭建——VSCode+TS
  2. win7系统安装信息服务器不可用怎么办,Win7系统下iis服务器应用程序不可用怎么办?...
  3. JAVA script 循环 图片_深入分析JavaScript 事件循环(Event Loop)
  4. 开机按f12怎么恢复系统 开机按f12恢复系统
  5. eclipse中The JSP specification requires that an attribute name is preceded by whitespace
  6. idea(mac) 使用收集
  7. win7 找不到 计算机策略组,win7打开组策略报错:找不到资源string.Advanced_EnableSSL3Fallback...
  8. c语言的表达式2 4 6 8的值,C语言程序设计测试题二
  9. cam350怎么看顶层_厉害的人是怎么分析问题的?(实操干货)
  10. 手机上网流量统计_数据统计 | 上半年手机流量同比增110.2%,你贡献了多少?