一、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. React的第一个例子

    准备: 官网:https://facebook.github.io/react/downloads.html Github地址:https://github.com/facebook/react 首先 ...

  2. 【转载】Redis Sentinel 高可用服务架构搭建

    作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...

  3. android mount win2008 nfs

    win2008下添加NFS 安卓下运行(需要安装busybox 还有root) busybox mount -t nfs 192.168.1.2:/NFS /nfs -o nolock

  4. Openshift 3.11和LDAP的集成

    1. OpenLDAP的安装 只记录主要步骤,详细可参考 https://access.redhat.com/solutions/2484371 # yum install -y openldap o ...

  5. KB/KiB,MB/MiB,GB/GiB了解一下

    Kibibyte是一种资讯计量单位,代表1024字节,即210字节,一般简称为KiB.Kibibyte是来自英文 kilo binary byte 的缩写,意思为“千位二进制字节”. 而KB是kilo ...

  6. qsort(),sort()排序函数

    一.qsort()函数 功 能: 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,int width,int (*fcmp ...

  7. 如何移植openwrt系统

    Cisco/Linksys在2003年发布了WRT54G这款无线路由器,同年有人发现它的IOS是基于Linux的,然而Linux是基于GPL许可证发布的,按照该许可证Cisco应该把WRT54G的IO ...

  8. 关于从SVN检出项目后,项目名称还是之前修改之前或者项目名称不对问题

    找到工作空间Workspaces/项目名称/.projet 修改文件中<name>项目名称</name>属性即可

  9. 通过Spring配置文件中bean中的property赋值

    基本数据类型赋值-通过spring配置文件中bean中的property 扩展-以此方式可以通过配置为连接数据的属性赋值 1.如果是基本数据类型,可以通过setter方法为对象中的属性设置初始值,应用 ...

  10. Zclip:复制页面内容到剪贴板兼容各浏览器

    WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮,只需要轻轻一点这个复制按钮,内容将会被复制, ...