int、bigint、smallint 和 tinyint
使用整数数据的精确数字数据类型。
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
smallint
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint
从 0 到 255 的整型数据。存储大小为 1 字节。
注释
在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在 SQL Server 中,int 数据类型是主要的整数数据类型。
在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。
只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。

char、varchar、nchar、nvarchar类型讲解:

一、基本区别:

1、char、varchar

char(n):  定长数据类型,n为能存储的最大字节长度(取值范围1~8000),当存入字符数少于n的时候,末尾用空格不足。当存入字符数超过n的时候,数据库阶段n之后的字符截断。

varchar(n): 变长数据类型,n为能存储的最大字节长度(取值范围1~8000),当存储字符占用字节少于n时,以实际使用为准;超过n时,截断。

这里为什么说n是来限定存储的字节呢?

原因在于当使用char或varchar来存储数据是:字符为因为字符,占一个字节;字符中文字符时,一个中文字符一般情况下占两个字节;要存入的字符为中英文混合时,按实际使用的字节计算。如‘中文ABC’存储占用字节为:2*2+3:。下面举个例子:

declare @var1 varchar(6), @var2 varchar(5);

set @var1='中文AB';

set @var2='中文AB';

select @var1, @var2;

执行结果如下:

|   未知列1    |    未知列2    |

---------------------------------------

|   中文AB     |    中文A       |

原因在于“中文AB”使用varchar类型来存储时占用字节为:2*2+2=6, 第二个varchar(5)限定了最长为5个字节所以会把超出部分截断,既‘B’丢失。

2、ncahr、nvarchar

nchar(n):  定长数据类型,存储字符为Unicode编码类型,每个字符占两个字节,n为能存储的最大字符数(取值范围1~4000【想想最大值为什么是4000?】),当存入字符数少于n的时候,末尾用空格不足。当存入字符数超过n的时候,数据库阶段n之后的字符。

nvarchar(n): 变长数据类型,存储字符为Unicode编码类型,每个字符占两个字节,n为能存储的最大字符数(取值范围1~4000),当存储字符占用字节少于n时,以实际使用为准;超过n时,截断。

同样以一个例子来说明,nvarchar(n)括号中的n指的是字符限定数。

declare @var1 nvarchar(4), @var2 nvarchar(3);

set @var1='中文AB';

set @var2='中文AB';

select @var1, @var2;

执行结果如下:

|   未知列1    |    未知列2    |

---------------------------------------

|   中文AB      |    中文A     |

二、使用情况:

【本段摘自http://www.cnblogs.com/ebaidu/archive/2007/08/14/854778.html仅供学习使用】

很多开发者进行数据库设计的时候往往并没有太多的考虑char, varchar类型,有的是根本就没注意,因为存储价格变得越来越便宜了,忘记了最开始的一些基本设计理论和原则,这点让我想到了现在的年轻人,大手一挥一把人民币就从他手里溜走了,其实我想不管是做人也好,做开发也好,细节的把握直接决定很多东西。当然还有一部分人是根本就没弄清楚他们的区别,也就随便选一个。在这里我想对他们做个简单的分析,当然如果有不对的地方希望大家指教。

1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim() 。

2、VARCHAR。存储变长数据 ,但存储效率没有CHAR高。 如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。 从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

3、TEXT。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。 nchar、 nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

补充:char(n)在读取是知道字符串的长度,可以一次读出。而varchar(n)就像C语言中的字符串处理方式一样,在末尾用'\0'来表示结尾,所以不能一次性读出,需要一个一个字符读出才能知道在哪里结束。所以char类型的读取速度比varchar类型的读取速度快。

所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar
我把他们的区别概括成:
CHAR, NCHAR 定长,速度快,占空间大,需处理
VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理
NCHAR、NVARCHAR、NTEXT处理Unicode码

【本段摘自http://wenku.baidu.com/view/eee97bf5f61fb7360b4c652b.html仅供学习使用】

varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unicode来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用 一个字节 ,而如果字段的类型为nvarchar,则会占用 两个字节 .
  正常情况下,我们使用varchar 也可以存储中文字符 ,但是如果遇到操作系统是英文操作系统并且对中文字体的 支持不全面时 , 在SQL Server存储中文字符为varchar就会出现乱码(显示为??).而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现不了的.多数情况下,在布署的时候也不会有问题.
  但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??).而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造成的,你会试着去装中文字体,试着去设置操作系统的语言环境...这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或者nchar).对项目管理比较熟悉的朋友应该都知道,到布署阶段再来修改数据库是一个很恐怖的事情.
  使用nvarchar的另一个非常好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别.
  当然,使用nvarchar存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的.
  所以在Design的时候应该尽量使用nvarchar来存储数据.只有在你确保该字段不会保存中文的时候,才采用varchar来存储.

补充:varchar(n)和nvarchar(n)都能处理中文,但是有些细节需要注意:当遇到中英文混合的情况时,varchar类型读取时会每个字节去判断到底是一个英文字符还是等待和下一个字节一起解析为一个中文字符,而nvarchar则不用,直接每次两个字节一起解析为一个Unicode字符。速度自己去体会了。

------------------------------------------------------------------------------------------------------------------------

总结:

1、varchar(n)括号中n限定的是能存储的最大字节数,nvarchar(n)括号中n限定的是能存储的最大字符数;

2、varchar和nvarcahr使用情形:在字符中全是英文时使用varchar,全是中文是使用nvarchar,中英文混合时推荐使用nvarchar。

3、char和varchar使用情形:注重读取效率时使用char(注意使用过程中要去除末尾空格),注重使用空间时使用varchar。

数据库基本常用类型解析相关推荐

  1. 【C#串口编程计划】通信协议解析 -- byte[]与常用类型的转换

    刚刚完成一个串口通讯的系统.目前在把串口通信的代码整合到团队的类库中(把串口通信与网口Soket通讯整合起来,后面只需要配置参数,就可实现网络与串口通讯的转换),故C#串口编程计划的最后一篇图文&qu ...

  2. 数据库中html数据类型,常用数据库的字段类型及大小

    Oracle/MSSQL/Mysql 常用数据库的字段类型及大小 ORACLE的数据类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 ...

  3. 数据库mysql表常见字段大小_常用的数据库的字段类型及大小

    Oracle/MSSQL/Mysql 常用数据库的字段类型及大小 ORACLE的数据类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 ...

  4. 域名强制解析的常用类型

    域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务.IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址.域名解析就是域名到IP地址的 ...

  5. 常用的数据库的字段类型及大小

    Oracle/MSSQL/Mysql 常用数据库的字段类型及大小     ORACLE的数据类型  常用的数据库字段类型如下:  字段类型 中文说明 限制条件 其它说明  CHAR 固定长度字符串 最 ...

  6. Oracle/MSSQL/Mysql 常用数据库的字段类型及大小

    Oracle/MSSQL/Mysql 常用数据库的字段类型及大小 ORACLE的数据类型 常用的数据库字段类型如下:   字段类型   中文说明   限制条件   其它说明   CHAR  固定长度字 ...

  7. mysql数据库中常用的类型_MySQL数据库中常用字段类型

    MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DECIMAL(M,D) 字符型:CHAR,VARCHAR 日期型:D ...

  8. mysql的real类型_数据库的常用数据类型有哪些?

    数据库的常用数据类型有哪些? 一. 整数数据类型:整数数据类型是最常用的数据类型之一. 1.INT (INTEGER) INT (或INTEGER)数据类型存储从-2的31次方 (-2 ,147 ,4 ...

  9. Mysql数据库常用类型 作者:哇塞大嘴好帥(哇塞大嘴好帅)

    Mysql数据库常用类型 作者:哇塞大嘴好帥(哇塞大嘴好帅) 作者:哇塞大嘴好帥(哇塞大嘴好帅) 1.基本数据类型 数值 tintint 特别小的数据 只占一个字节 smalint 较小的数据 只占2 ...

最新文章

  1. java poi exce 移动_JAVA使用POI操作excel
  2. 使用自己的域名解析CSDN博客
  3. 关于Memcache使用的工具类
  4. wordpress模板-RIPro-V2子主题V1.4-VAN主题
  5. Python推导式comprehension:列表推导式、集合推导式、字典推导式
  6. php数组循环转为对象,php中循环实现(字符串,对象,或者数组)编码相互转换
  7. 和女孩子约会,肢体接触是不是不礼貌?
  8. python和c先学哪个-先学C语言还是Python?资深程序员往往是这样建议的!
  9. TextBar for Mac(菜单栏增强工具)支持m1
  10. js obj对象转formdata格式代码
  11. 【产品】保险业务收付管理系统概要
  12. 司空见惯 - 体彩中奖交多少税
  13. html里怎么画斜线表头,Word2013中绘制斜线表头的方法
  14. 6.29--6.30郭天祥老师课程中的一些错误与我的存疑
  15. Flutter 微信语音消息播放动画
  16. VMware Explore 2022 China,赋能中国企业加速实现云智能
  17. 情感计算机具体应用领域,人工智能-情感计算
  18. 详解!适合女生做的互联网项目
  19. 水下机器人 结构设计
  20. .NET 4.0 Interop新特性ICustomQueryInterface

热门文章

  1. bzoj3192 [JLOI2013]删除物品 树状数组
  2. 2017.9.28 降雨量 思考记录
  3. 如何下载项目所需要jar包
  4. mysql语句二级查询_mysql_2 基本查询语句
  5. 用python写一个文件管理程序下载_Python管理文件神器 os.walk
  6. python中pop用法_Python Set pop()用法及代码示例
  7. hset php,HSET命令_视频讲解_用法示例-redis编程词典-php中文网
  8. 自然语言处理包pytorch、torchvision、torchtext安装(亲测有效)
  9. MiniFlow,帮助理解TensorFlow关键概念--图
  10. Keras-1 学习Keras,从Hello World开始