字符串类型

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

类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

数据库实例操作charvarvhar:

mysql> create table t5 (-> n1 char(10),-> n2 varchar(10)-> );
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t5 values (' hello ',' hello ');
Query OK, 1 row affected (0.01 sec)
mysql> select concat('!',n1,'!'),concat('!',n2,'!') from t5;
+--------------------+--------------------+
| concat('!',n1,'!') | concat('!',n2,'!') |
+--------------------+--------------------+
| ! hello!           | ! hello !          |
+--------------------+--------------------+
1 row in set (0.00 sec)

CHAR(M), VARCHAR(M)不同之处

CHAR(M)定义的列的长度为固定的,M取值可以为0~255之间,当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检 索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义 char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。

VARCHAR(M)定义的列的长度为可变长字符串,M取值可以为0~65535之间,(VARCHAR的最大有效长度由最大行大小和使用 的字符集确定。整体最大长度是65,532字节)。VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则 使用两个字节)。VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。varchar存储变长数据,但存储效率没有 CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么”+1″呢?这一个字节用于保存实际使用了多大的长度。 从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

CHAR和VARCHAR最大的不同就是一个是固定长度,一个是可变长度。由于是可变长度,因此实际存储的时候是实际字符串再加上一个记录 字符串长度的字节(如果超过255则需要两个字节)。如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉 的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入.

字符串text实例:

mysql> create table t6 (-> n1 text-> );
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t6 values ("sdasadsadsaaaaadassd")-> ;
Query OK, 1 row affected (0.01 sec)
mysql> select * from t6;
+----------------------+
| n1                   |
+----------------------+
| sdasadsadsaaaaadassd |
+----------------------+
1 row in set (0.00 sec)

注意:与char和varchar不同的是,text不可以有默认值,其最大长度是2的16次方-1。

ENUM 类型

ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举。

在下列某些情况下,值也可以是空串("") 或 NULL;

如果将一个无效值插入一个 ENUM (即,一个不在允许值列表中的字符串),空字符串将作为一个特殊的错误值被插入。事实上,这个字符串有别于一个"普通的"空字符串,因为这个字符串有个数字索引值为 0。稍后有更详细描述。

如果一个 ENUM 被声明为 NULL,NULL 也是该列的一个合法值,并且该列的缺省值也将为NULL 。如果一个 ENUM 被声明为 NOT NULL,该列的缺省值将是该列表所允许值的第一个成员。

mysql> create table t7 (-> gender enum ('男','女')-> );
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t7 values ('男');
Query OK, 1 row affected (0.01 sec)
mysql> insert into t7 values ('女');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t7 values ('中');
ERROR 1265 (01000): Data truncated for column 'gender' at row 1
mysql> select * from t7;
+--------+
| gender |
+--------+
| 男     |
| 女     |
+--------+
2 rows in set (0.00 sec)

转载于:https://blog.51cto.com/215687833/2349068

mysql 字符串类型相关推荐

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

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

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

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

  3. MySQL字符串类型

    MySQL 中的字符串类型有 CHAR.VARCHAR.TINYTEXT.TEXT.MEDIUMTEXT.LONGTEXT.ENUM.SET 等. 下表中列出了 MySQL 中的字符串数据类型,括号中 ...

  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. 一款由css3和jquery实现的响应式设计导航
  2. 递增三元组蓝桥杯c语言,第九届蓝桥杯_递增三元组(枚举的优化思路)
  3. nginx反向代理编译异常
  4. python语言中的注释符_各种语言中的注释符总结
  5. python 无序列表中第k大元素_Python要求O(n)复杂度求无序列表中第K的大元素实例...
  6. 常用JavaScript函数 31 - 46(自我总结)
  7. javascript 西瓜一期 02 编程语言与标记语言的区别
  8. 7-18 QQ帐户的申请与登陆 (10 分)
  9. 设计师们还不快着手准备圣诞海报?PSD分层模板,轻松交稿
  10. HTML 图片加载问题
  11. Linux审计sudo
  12. python str转json_Python中如何将一个字符串转换为json格式呢?
  13. 四级网络工程师和四级信息安全工程师考试须知与学习方法
  14. autoit3 自动安装QQ音乐【版本QQMusicV7.96.2062.0525】
  15. 网吧部分机器耳麦line in线要重插一下才能说话的设置
  16. 蓝桥杯入门即劝退(六)等差素数数列
  17. 友盟 集成到 java web_友盟消息推送SDK集成
  18. uniapp设置百度小程序索引页dynamicLib、usingComponents、swan-sitemap-list
  19. 五一是深圳买新房的最佳时机吗?
  20. julia fit 函数_Julia中的符号和绝对值函数

热门文章

  1. python笔记之函数参数(缺省参数,命名参数,不定长参数)
  2. Linux软件包组的选择
  3. java socket参数详解:OOBInline和UrgentData .
  4. mysql da_DA面板如何管理Mysql数据库?
  5. centos mysql pmm_【MySQL】MySQL监控利器PMM
  6. android属性动画作用范围,Android开发之动画效果浅析(一)
  7. 华为新系统鸿蒙有哪些手机_华为鸿蒙OS系统传来新消息!外媒宣布:未来几年内华为手机都将无缘...
  8. 福建省高职单招分数怎么计算机,2019福建高职单招切线 高职招考分数线是多少...
  9. cefsharp.wpf离线安装包下载_在vscode里编写c++程序(解决gdb下载失败问题)
  10. DjangoHTML页面加载和静态文件加载