一、mysql 中包涵的字符类型:

[national] char     [(m)] [character set charset_name] [collate collation_name]
[national] varchar [(m)] [character set charset_name] [collate collation_name] binary(m) -- 和char 只不过它用来保存二进制字节串,m 指定了字节串的长度
varbinary(m) -- 和varchar 只不过它用来保存二进制字节串,m 指定了字节串的长度 tinyblob -- 使用一字节前缀,所以最多保存255个byte
blob[(m)] -- 使用二字节前缀,所以最多保存65535个byte
mediumblob -- 使用三字节前缀
longblob -- 使用四字节前缀 tinytext [character set charset_name] [collate collation_name] -- 使用一字节前缀,所以最多保存255个字符
text [character set charset_name] [collate collation_name] -- 使用二字节前缀,所以最多保存65535个字符
mediumtext [character set charset_name] [collate collation_name] -- 使用三字节前缀,所以最多保存2^24 -1个字符
longtext [character set charset_name] [collate collation_name] -- 使用四字节前缀,所以最多保存2^32 -1个字符 enum('value1','value2',...) [character set charset_name] [collate collation_name]
set('value1','value2',...) [character set charset_name] [collate collation_name]

二、char(m) 与 varchar(m) 类型:

  1、char 和 varchar 之间是不同点主要表现在对值的“保存” & “检索” 。

  2、从保存说起:定义中的 m 表示所能保存的最大的字符数;如char(4) 是多能保存4个字符,varchar(4) 也是最多只保存四个字符;

  它们两的不同之处就在于varchar是按需分配的,也就是说如果你只要保存'ab'那么varchar会只为你分配两个字符的空间,

  而char它一次就会分配m个字符的空间,那怕你用不了这么多。

  3、以“检索”结尾:对于char来说没有用的的空间会以空格的方式来填充,所以检索时char会自发的去掉空格!听起来没有毛病,但是

  如果你要保存的值真的是要在最后留几个空格的呢?如果这种情况下用char的话,就会搞的存进去再拿出来就不对了。所以这个要主意。

  4、例子:由char做主键引起的血案

mysql> create table t(x char(4) not null primary key);
Query OK, 0 rows affected (0.00 sec) mysql> insert into t(x) values('a');
Query OK, 1 row affected (0.01 sec) mysql> insert into t(x) values('a '); -- 由于char会自动去掉空格,使得主键冲突了。
ERROR 1062 (23000): Duplicate entry 'a' for key 'PRIMARY'

  5、最后说一下、由于char(m)不是按需分配的,有可能会特别的占空间,所以mysql在设计时就只允许它最多保存255个字符。

三、binary 与 varbinary 类型:

  1、这个就与char 和 varchar 差不多了,不同的是binary 与 varbinary 这些保存字节串。

四、blob* 与 text* 类型:

  1、blob* 的全称是 binary larg object 它与binary&varbinary 相对应它们都是保存字节串的类型,只不过blob的空间更大。

  2、text* 与char&varchar 相对应它们都保存字符串。

----

学习交流

mysql string types ---- mysql 字符类型详解的更多相关文章

  1. Mysql 数据库字符类型详解

    MySQL 中提供了多种对字符数据的存储类型,不同的版本可能有所差异.以5.0 版本为例,MySQL 包括了CHAR.VARCHAR.BINARY.VARBINARY.BLOB.TEXT.ENUM 和 ...

  2. (转)MySQL字段类型详解

    MySQL字段类型详解 原文:http://www.cnblogs.com/100thMountain/p/4692842.html MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间 ...

  3. mysql float类型详解

    mysql float类型详解float类型长度必须设置3以上 不然会报错 out of range如果设置3 就只是 整数+小数的长度 比方说3.23 3.2等等 3.333就不行了 4位了

  4. MySQL中tinytext、text、mediumtext和longtext等各个类型详解

    转: MySQL中tinytext.text.mediumtext和longtext等各个类型详解 2018年06月13日 08:55:24 youcijibi 阅读数 26900更多 个人分类: 每 ...

  5. (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解

    总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...

  6. MySQL数据库使用mysqldump导出数据详解

    mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...

  7. 【转】MySQL用户管理及SQL语句详解

    [转]MySQL用户管理及SQL语句详解 1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysq ...

  8. MySQL数据库的各种存储引擎详解

    原文来自:MySQL数据库的各种存储引擎详解   MySQL有多种存储引擎,每种存储引擎有各自的优缺点,大家可以择优选择使用: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB ...

  9. MYSQL之数据库初识、安装详解、sql语句基本操作

    目录 MYSQL之数据库初识及安装详解 1.什么是数据库? 1.什么是数据?(data) 2.什么是数据库?(databases,简称DB) 2.为什要用数据库? 3.什么是数据库管理系统?(Data ...

随机推荐

  1. Java ClassLoader加载机制理解

    今天看到了一篇介绍Java ClassLoader加载机器的文章, 才发觉一直来自己的肤浅, 好好地给补了一课, 不得不存档! 原文地址: http://www.blogjava.net/lhulcn ...

  2. Python 列表(Lists)

    Python 列表(Lists) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类 ...

  3. python -m xxx.py和python xxx.py的区别

    先看下python -m site作用是显示sys.path的值内容,也就是python搜索模块的目录,作用类似于linux下的PATH python -m SimpleHTTPServer 会在sy ...

  4. 循环链表的创建、插入、删除、逆序、显示(C++实现)

    对于单链表,因为每一个结点仅仅存储了向后的指针.到了尾标志就停止了向后链的操作,这样,其中某一结点就无法找到它的前驱结点了. 对于单链表的操作大家能够看我的这篇博客http://blog.csdn.n ...

  5. 使用PowerDesigner建立数据库模型【转】

    1. 打开PowerDesigner,点击File->New 2. 选择Conceptual Data Model,并修改Model name. 3.  在Palette工具栏中点击Entity ...

  6. webshell三剑客[aspxspy、phpspy、jspspy]

    ASPSPY:http://www.rootkit.net.cn/article.asp?id=132<已关闭> 下载:ASPXspy2 JSPSPY:http://www.forjj.c ...

  7. Qt 播放音频文件

    Qt播放音频文件的方法有好多中,简单介绍几种 不过一下几种方式都需要在Qt工程文件中添加 QT       += multimedia 第一 QMediaPlayer类 可以播放MP3文件,同时使用也 ...

  8. 【Project Euler 1】Multiples of 3 and 5

    题目要求是: If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and ...

  9. Oracle spatial抽稀函数(SDO_UTIL.SIMPLIFY)

    在使用Oracle spatial做空间查询和展示时,经常会遇到展示或者查询过慢,这时候我可以通过空间数据抽稀来优化查询展示效率. 在Oracle spatial中的抽稀函数为:SDO_UTIL.SI ...

  10. KineticJS教程(5)

    KineticJS教程(5) 作者: ysm  5.事件响应 5.1.图形的事件响应 图形对象对事件的响应处理可以使用 on() 方法绑定事件类型和相应方法. On() 方法需要一个事件类型参数和相应 ...