一、char 和 varchar 的区别:

  1)取值范围:

    char:取值范围:0~255

    varchar:取值范围:0~65535

  2)空间占用与速度:

    char: 定长字符串,占用空间大,速度快,一般用于固定长度的表单提交数据存储,例如:身份账号、电话号码、密码等

    varchar:变长字符串,占用空间小,速度慢

  3)存储与检索数据:

    char:存储的数据是否达到了给定值的字节,都要占用给定值大小的空间,不足的自动用空格填充,在检索时后面的空格会被自动去裁剪掉。

       如:定义  tel char(8),实际存储值举例为 10086,占用了4个字节,则结论为:实际占用字节数还是8,不足的用空格填充。

    varchar:varchar的取值保存时只保存需要的字节数,另加一个字节来记录长度(如果列声明的长度超过255,则使用2个字节),varchar值保存时不进行填充,

         当值保存和检索时尾部的空格仍保留。

       如:定义  tel char(8),实际存储值举例为 10086,占用了4个字节,则结论为:实际占用字节数为4+1

  4)varchar的特殊点:

   4.1)存储限制

        varchar字段是将实际内容单独存储在聚簇索引之外,内容开头用1或者2个字节来表示实际长度,因此最大长度不能超过65535

    4.2)编码长度限制   

     字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;

     字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。

二、char 和 varchar 和text三者之间的区别:

  1)存储和检索数据的方式都不一样,数据检索的效率:char>varchar>text

  2)char与varchar都可以有默认值,text不能指定默认值

三:注意点:

  1、如果数据库引擎为INNODB的话,建议用varchar来代替char

  2、从空间上来说适合使用varchar,从效率上来说适合用char,具体根据实际情况而定

  3、MySQL规定一个行的长度不能超过65535,否则会出现警告,建议切换使用text或blobs使用

MYSQL—— char 与 varchar的区别!的更多相关文章

  1. Mysql Char 和 Varchar的区别

    CHAR和VARCHAR都是字符串类型,它们的具体区别为: 长度大小区别: CHAR(M)定义的列的长度为固定的,M取值可以为0-255之间: VARCHAR(M)定义的列的长度为可变长,M取值可以为 ...

  2. MySQL char与varchar 的区别

    一.差异 1.占用存储空间上 char 初始化时占固定空间,varchar依据插入内容大小使用空间. 2.char最大字符长度255个(约0.1KB),varchar则是65535(约192KB). ...

  3. mysql中char与varchar的区别分析(补充一句,int和integer没区别)

    转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

  4. 通过char与varchar的区别,学习可变长的字符类型

    转自http://www.uphtm.com/database/232.html 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

  5. mysql CHAR and VARCHAR 比较

    写在前面 面试的时候突然有一位面试官问,说说CHAR和VARCHAR的区别,懵逼了,想自己平常使用的时候直接把VARCHAR拿来就用,真没注意到其中的不同. 反思,为什么没有注意到他们的不同 对于my ...

  6. 面试现场:说说char 和 varchar的区别你了解多少?

    Hi,大家好!我是白日梦!本文是MySQL专题的第 26 篇. 下文还是白日梦以自导自演的方式,围绕"说说char 和 varchar的区别你了解多少?"展开本话题.看看你能抗到第 ...

  7. 面试官疯狂问我:char和varchar的区别 怎么办?愣着干嘛?进来白嫖啊!

    MySQL的修仙之路,图文谈谈如何学MySQL.如何进阶!(已发布) 面前突击!33道数据库高频面试题,你值得拥有!(已发布) 大家常说的基数是什么?(已发布) 讲讲什么是慢查!如何监控?如何排查?( ...

  8. char与varchar的区别

    char的长度是不可变的,而varchar的长度是可变的,也就是说, 定义一个char[10]和varchar[10],如果存进去的是‘csdn’, 那么char所占的长度依然为10, 除了字符‘cs ...

  9. 简单了解char和varchar的区别

    一.CHAR和 VARCHAR的区别? 1.CHAR有固定的长度,VARCHAR属于可变长度的字符类型. 2.比如,写入内容到CHAR(10)里,如果内容占用的空间不够10,则会用空格字符补足. 二. ...

随机推荐

  1. Fast Paxos

    http://blog.csdn.net/chen77716/article/details/7297122 自从Lamport在1998年发表Paxos算法后,对Paxos的各种改进工作就从未停止, ...

  2. Linux(二十二)Ubuntu安装和配置

    Ubuntu的介绍 Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu是基于GNU/Linux,支持x86.amd64(即x64)和ppc架构,由全球化的专业开发团队(Ca ...

  3. Java RandomAccessFile用法 【转】

    RandomAccessFile源地址:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile是用来访问那些保存数据 ...

  4. 团队项目第二阶段个人进展——Day3

    一.昨天工作总结 冲刺第三天,基本完成发布页面的布局 二.遇到的问题 添加照片的样式会随照片增加而改变 三.今日工作规划 分析要封装的数据有哪些,数据如何传到后端服务器中

  5. 第四章 MySQL数据类型和运算符

    5.1 MySQL数据类型介绍 一.数据类型简介 (1) 数据表由多列字段构成,每一个字段指定了不同的数据类型,指定了数据类型之后,也就决定了向字段插入的数据内容 (2) 不同的数据类型也决定了 My ...

  6. SQL关于IN和EXISTS的用法和区别的比较

    1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....).2.exist会针对子查询的表使用索引. not exist会对主子查询都 ...

  7. vi/vim的常用快捷键

    vi/vim分为 命令模式,插入模式(编辑模式),末行模式(最后一行) 模式的转换 ① 其它模式==>正常模式 按 Esc键 ②正常模式==>插入模式 按 i 在光标前插入 按 I 在行首 ...

  8. SqlSugar 盲点

    1.读取数据库连接 private SqlSugarClient GetInstance() { string conmstring = System.Web.Configuration.WebCon ...

  9. Ubuntu系统下安装CodeBlocks

    本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=616 1 添加CodeBlocks的软件仓库 sudo add-apt-repository ppa:damien- ...

  10. JVM 线上故障排查基本操作

    # 前言 对于后端程序员,特别是 Java 程序员来讲,排查线上问题是不可避免的.各种 CPU 飚高,内存溢出,频繁 GC 等等,这些都是令人头疼的问题.楼主同样也遇到过这些问题,那么,遇到这些问题该 ...