MySQL:

char定义存储字符,实际存储也是按照字符形式存储,大小char(255个字符),注意不是字节。

 在此说下字符与字节的区别?

字节是计算机中存储信息的单位,一个字节占八位,字符是A、B、C等以及一些符号,一般在计算机中用一个字节表示,也就是说一般占一个字节,但还有不一般,根据特定编码每个字符所占的字节数不同,就如在gbk,gb2312中一个汉字占两个字节,但国际通用编码格式utf-8中一个汉字占3个字节。

因此char在utf8编码下最多可存储255*3个字节的数据,无论是单独的一个汉字,还是英文字母都是一个字符,只是所占字节不同而已,Soga,char(255个字符),

不管是sqlserver还是MySQL存储,如果存储的字符没有255个会以英文空格字符的形式填满。这就是所谓的定长。

下面说说varchar(0-65532个字节)定义的是字符,但是实际以字节的形式进行存储,最多可以存储Max(65532)个字节,因此在utf8编码形式下最多存储65532/3-1个字符,在gbk编码下,最多存储65532/2-1,为什么会减一呢?因为MySQL的机制会留1-3个字节来存储该字符串的长度。多了这个用来记录长度的结果就可以做到动态变化,而不需要像char那样用空格填充剩余空间,减少内存消耗,但同样也增加了内耗,影响了性能。

举个例子:定义了name字段:varchar(60),为其填充数据张三,则只占用6个字节,剩余54个字节未被占用,上例如果定义name字段为char(60),同样填充数据张三的话,虽然也是占用6个字节,但剩余58个字符会用空格填充,实际占用60个字符所耗空间

sqlserver:

先说说nvarchar和varcahr的区别:

    varchar:  可变长度,存储ANSI字符,根据数据长度自动变化。

    nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化。

    nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据。n 的值必须介于 1  与  4,000 之间。字节的存储大小是所输入字符个数的两倍。

   varchar[(n)]:长度为 n 个字节的可变长度且非 Unicode的字符数据。n 必须是一个介于 1 和 8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节

从以上可以看出nvarchar是以字符方式存储, 因为用Unicode编码,这里大家可以看看这篇博客:各种编码的详解:http://blog.csdn.net/lvxiangan/article/details/8151670

因此可以说是规定nvarchar是双字节存储,不管你存储的是汉字还是英文字母都是占两个字节,

分析优缺点:

   优点:判断字符串的时候可以不需要考虑中英文两种字符的差别,可以避免程序中乱码的问题。

缺点:存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的,效率没有varchar高。

  char在此不做多解释与MySQL情况一致。

一般使用情况说明:

  存储的数据长度确定如电话号码,编码等固定的,而且不包中文的,可以选择char类型。

  存储的数据长度不确定,存储只有英文、数字的最好用varchar

  存储的数据长度不确定,也有可能有中文,可以选择nvarchar类型。

转载于:https://www.cnblogs.com/liwf/p/6604615.html

论SqlServer中char、varchar、nvarcahr和MySQL中char、varcahr的区别相关推荐

  1. mysql 存储过程 rowcount_ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同

    ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同 MySQL的ROW_COUNT()和ORACLE中的SQL%ROWCOUNT函数作用并不完全相同. 从作用上来 ...

  2. mysql中gt用法_讲解MySQL中lt;=gt;操作符的用法-一团网

    问题 : 我在看以前的一个开发者的代码时看到 在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊?但是没有显示任何错误或者异常.我已经知道了mysql中的 ...

  3. mysql中序列的使用,在MySQL中使用序列的简单教程

    序列是一组整数1,2,3,...中生成的顺序.序列中经常使用的数据库,因为很多应用都需要一个表中的每一行包含一个独特的值和序列提供了一个简单的方法来产生.本章介绍如何使用MySQL中的序列. 使用自动 ...

  4. nvarchar在mysql中是_如何在MySQL中创建NVARCHAR列?

    MySQL转换NVARCHAR()为VARCHAR().NVARCHAR在MySQL中代表National Varchar.让我们首先创建一个表,其中" StudentName"列 ...

  5. mysql sql rowcount_ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同-阿里云开发者社区...

    MySQL的ROW_COUNT()和ORACLE中的SQL%ROWCOUNT函数作用并不完全相同.从作用上来说,两者都是返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数,但 ...

  6. mysql中change用法_在MySQL中使用CHANGE命令的目的?

    MySQL中的CHANGE命令用于重命名列名.让我们首先创建一个表-create table DemoTable796 ( StudentId int NOT NULL AUTO_INCREMENT  ...

  7. mysql 中修改对象_在MySQL中,创建一个数据库后,还可以对象其进行修改,不过这里的修改是指可以修改被创建数据库的相关参数,也可以修改数据库名。...

    [多选题]注射时,在(  )情况下,采用较高的注射速率. [单选题]通常,所设置的模具温度是指和制品接触的模腔内表面在(   ). [单选题]反映某一事件发生强度的指标应选用 [判断题]当试样制备之后 ...

  8. 删除binlog mysql_mysql中删除binlog的方法?mysql中如何删除binlog?

    需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控 ...

  9. java:去除字符串中空格 、 oracle (+) 、 mysql中数值运算符和函数

    java:去除字符串中空格 http://www.cnblogs.com/LiuChunfu/p/5661810.html oracle:oracle (+) https://zhidao.baidu ...

最新文章

  1. IE8经常停止工作和显示异常
  2. 论文阅读——《Online Photometric Calibration of Auto Exposure Video for Realtime Visual Odometry and SLAM》
  3. Spring5 源码下载注意事项
  4. java获取文件地址吗_java获取文件所在服务器位置路径
  5. 传统的jsp+servlet的经典的MVC开发模式详细步骤,框架的知识点转换,各模块的以及各配置的作用,学习框架必备知识,框架基础技术JDBC(一)
  6. 一个功能块实现PLC与安川机器人以太网通讯
  7. 电商项目---完成内容管理cms系统
  8. 刚从阿里、头条面试回来,java程序员社招自我介绍
  9. 铁威马教程之如何轻松同步TNAS和云盘数据
  10. org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates
  11. Java:实现使用蛮力方法解决旅行推销员问题算法(附完整源码)
  12. CCPROXY漏洞利用
  13. 智能颈部按摩仪设计——2.开发环境搭建
  14. 大数据学习——spark运营案例
  15. java 调用弗雷_JAVASE(九)面向对象特性之 : 继承性、方法重写、关键字super、
  16. 计算机导论课后总结三
  17. css3扇形及简单动画
  18. 图解Fiddler如何抓手机APP数据包【超详细】
  19. wlan连接的笔记本电脑+开启移动热点+手机无法连接【已解决】
  20. 开盘15分钟内扑捉当天黑马

热门文章

  1. spring boot使用外置tomcat部署需增加如下初始化类
  2. 解决docker push镜像到私有仓库时的报错【http: server gave HTTP response to HTTPS client】
  3. Linux ifconfig指令
  4. Linux vim显示/不显示行号
  5. 静态方法与单例模式的区别以及为什么要用单例模式而不是静态方法
  6. 【学亮IT手记】AngularJS增删改查服务请求+代码剥离封装抽取示例
  7. Highcharts JS去除Highcharts.com链接的方法
  8. 关闭输入流后,依然无法删除文件
  9. dms系统与mysql_关于MySQL与DMsql探寻
  10. MQTT连接阿里云IoT(四)