一、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. rc_80 tomcat 日志

    1 #!/bin/sh 2 cd /mnt/tomcat/tomcat_8082/logs; 3 tail -f catalina.out;

  2. pytest文档12-skip跳过用例

    前言 pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能 skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试. 常见示例是 ...

  3. ios修改textField的placeholder的字体颜色、大小

    textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] fo ...

  4. ZooKeeper安装和配置(转)

    原文链接:http://coolxing.iteye.com/blog/1871009 Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成集群模式. 下面将分别进行介绍. ...

  5. DICOM:DICOM三大开源库对比分析之“数据加载”

    背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,“只要Sante DICOM Editor打不开的数据,基 ...

  6. nmap速查表v1.0

    基本语法: #nmap [扫描方式] [命令选项] {目标}   扫描目标格式: IPv4 地址: 192.168.1.1IPv6 地址:AABB:CCDD::FF%eth0主机名:www.targe ...

  7. HashCode的秘密

    看String源码HashCode的计算方式: public int hashCode() {int h = hash;if (h == 0 && value.length > ...

  8. 详解Vuex常见问题、深入理解Vuex

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 状态?我把它理解为在data中的属性需要共 ...

  9. java学习笔记5--类的方法

    接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...

  10. iOS公布app到App Store教程

    要公布首先须要公布证书,其获取和安装的基本流程和真机调试证书一致,关于真机调试证书的获取和使用能够參考这篇文章.只是如今Xcode7不须要真机调试证书也可实现真机调试了.能够參考这篇文章. 要获取证书 ...