美文网首页
Mysql字符串数据类型总结

Mysql字符串数据类型总结

作者: 雅俗共赏M | 来源:发表于2016-09-29 00:07 被阅读34次

一、目录:

1.VARCHAR和CHAR的区别
2.BLOB和TEXT的区别

二、VARCHAR 和 CHAR 的区别

2.1 对于VARCHAR类型:

  1. 例如VARCHAR(5), 代表可以存储5个字符,当只存储了3个字符,而不够5个的时候,就自动分配三个字符长度,而不会像CHAR一样填充空白。定义VARCHAR必须指定大小。
  2. 范围:0-65535个字符
  3. 空格符:当带有空格填充的字符被取出时,空格字符不会被去掉
  4. 数据超过范围:如果插入的数据超过范围,在严格的SQL模式下(using strict SQL Mode ),会产生一条错误通知,并且插入操作不会被执行。但是如果多余的字符是空格,那么无论在哪种模式下(regardless of SQL mode),空格都会被切割掉,并且产生一条警告通知。

2.2 对于CHAR类型

  1. 例如CHAR(5),代表可以存储5个字符,当不够5个的时候,用空格(space)填充。如果定义CHAR类型没有给出长度,则默认为1。
  2. 范围:0-255个字符
  3. 空格符:当带有空格填充的字符被取出时,空格字符将会被去掉(remove),除非SQL模式:PAD_CHAR_TO_FULL_LENGTH被开启
  4. 数据超过范围:当插入数据超过范围的时候,在严格的SQL模式下(using strict SQL Mode ),会产生一条错误通知,并且插入操作不会被执行。但是如果多余的字符是空格,那么无论在哪种模式下(regardless of SQL mode),空格都会被切割掉。

2.3 下图用一张表格较为形象地来表示这两者的范围:

VARCHAR CHAR
类型表示 VARCHAR(5):存储5个字符,当不够5的时候,自动分配相应长度,而不会填充空白。定义VARCHAR必须指定大小 CHAR(5):存储5个字符,当不够5个的时候,用空格(space)填充。如果定义CHAR类型没有给出长度,则默认为1
范围 0-65535个字符 0-255个字符
空格符 当带有空格填充的字符被取出时,空格字符不会被去掉 当带有空格填充的字符被取出时,空格字符将会被去掉(remove),除非SQL模式:PAD_CHAR_TO_FULL_LENGTH被开启
数据超过范围 如果插入的数据超过范围,在严格的SQL模式下(using strict SQL Mode ),会产生一条错误通知,并且插入操作不会被执行。但是如果多余的字符是空格,那么无论在哪种模式下(regardless of SQL mode),空格都会被切割掉,并且产生一条警告通知。 当插入数据超过范围的时候,在严格的SQL模式下(using strict SQL Mode ),会产生一条错误通知,并且插入操作不会被执行。但是如果多余的字符是空格,那么无论在哪种模式下(regardless of SQL mode),空格都会被切割掉。
三、 BLOB 和 TEXT 的区别

3.1 BLOB类型:

  1. BLOB类型: TINYBLOB BLOB MEDIUMBLOB LONGBLOB
  2. 存储方式:二进制,没有字符集
  3. 排序:基于二进制数值
  4. 数据超过范围:对于所存数据超过容量大小的情况,在非严格的SQL模式下(strict SQL mode is not enabled),多余的字符将会被切割掉,并且会产生一条警告通知,如果在严格的SQL模式下(using strict SQL Mode ),会产生一条错误通知,并且插入操作不会被执行。但是如果多余的字符是空格,那么无论在哪种模式下(regardless of SQL mode),空格都会被切割掉,并且产生一条警告通知。
  5. 存储数据后边的空格

3.2 TEXT类型

  1. TEXT类型: TINYTEXT TEXT MEDIUMTEXT LONGTEXT
  2. 存储方式:字符串,有字符集
  3. 排序:基于字符集排序
  4. 数据超过范围:对于所存数据超过容量大小的情况,在非严格的SQL模式下(strict SQL mode is not enabled),多余的字符将会被切割掉,并且会产生一条警告通知,如果在严格的SQL模式下(using strict SQL Mode ),会产生一条错误通知,并且插入操作不会被执行。但是如果多余的字符是空格,那么无论在哪种模式下(regardless of SQL mode),空格都会被切割掉,并且产生一条警告通知。
  5. 不会存储数据后边的空格

2.3 用一张表格来表示:

BLOB TEXT
类型表示 TINYBLOB BLOB MEDIUMBLOB LONGBLOB TINYTEXT TEXT MEDIUMTEXT LONGTEXT
存储方式 二进制,没有字符集 字符串,有字符集
排序 基于二进制数值 基于字符集排序
空格符 存储 不存储
数据超过范围 对于所存数据超过容量大小的情况,在非严格的SQL模式下(strict SQL mode is not enabled),多余的字符将会被切割掉,并且会产生一条警告通知,如果在严格的SQL模式下(using strict SQL Mode ),会产生一条错误通知,并且插入操作不会被执行。但是如果多余的字符是空格,那么无论在哪种模式下(regardless of SQL mode),空格都会被切割掉,并且产生一条警告通知。 一样的

相关文章

网友评论

      本文标题:Mysql字符串数据类型总结

      本文链接:https://www.haomeiwen.com/subject/vgskyttx.html