对于很多新手来说,经常被字段类型搞得晕头转向,今天我用通俗易懂的解释帮大家理解这些类型。

在数据库字段类型定义中,可以分为两大类,一类为Unicode类型,另一种就是非Unicode。

Unicode的编码方式与ISO10646的通用字元集(亦称[通用字符集])(Universal Character Set,UCS)概念相对应,

目前的用于实用的Unicode版本对应于UCS-2,使用16位的编码空间,也就是每个字符占用2个字节

简单来说就是中文类型和非中文类型,个人喜欢把英文,数字,特殊符号定为非中文类型,其余的均定为中文类型。

想了解Unicode的可以去详细了解一下,这里不多做赘述,直接上干货:

char(n) , varchar(n) 表示按字节存储数据,nvarchar(n),nchar(n) 表示按字符存储数据。

char,varchar 最多8000个英文,4000个汉字

nchar,nvarchar 可存储4000个字符,无论英文还是汉字

列子:

“你好hello”

char占用空间:2*2+5=9个字节

nvarchar占用空间:7*2=14个字节

使用varchar存储含有非英文字符(比如中文,日文)时出现“??”的乱码,用nvarchar这则不会出现

可见,各有各的优点,那该怎么选择呢?

如果字段存储内容都是英文字符而没有汉字和其他语言符号,建议使用varchar,或char;

含有汉字的使用nvarchar,因为nvarchar是使用Unicode编码,即统一的字符编码标准,会减少乱码的出现几率;

个人一般建议,主键用char(char(10),和char(13)除外,卖个关子,自己去体会),

前提是你是自己编写的主键,带有英文字母和数字的混合字符串主键,如果是用int型自增主键则忽略

如果是英文类型字段,用varchar,如英文名,文件名/地址,用户名等

其他的字段,如描述,备注,说明等可采用nvarchar。

其他类型,SQL SERVER 类型参考表:

字段类型 描述
 bit  0或1的整型数字
 int  从-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型数字
 smallint  从-2^15(-32,768)到2^15(32,767)的整型数字
 tinyint  从0到255的整型数字
   
 decimal  从-10^38到10^38-1的定精度与有效位数的数字
 numeric  decimal的同义词
   
 money  从-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的货币数据,最小货币单位千分之十
 smallmoney  从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十
   
 float  从-1.79E+308到1.79E+308可变精度的数字
 real  从-3.04E+38到3.04E+38可变精度的数字
   
 datetime  从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三秒或3.33毫秒
 smalldatetime  从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分钟
   
 timestamp  时间戳,一个数据库宽度的唯一数字
 uniqueidentifier  全球唯一标识符GUID
   
 char  定长非Unicode的字符型数据,最大长度为8000
 varchar  变长非Unicode的字符型数据,最大长度为8000
 text  变长非Unicode的字符型数据,最大长度为2^31-1(2G)
   
 nchar  定长Unicode的字符型数据,最大长度为8000
 nvarchar  变长Unicode的字符型数据,最大长度为8000
 ntext  变长Unicode的字符型数据,最大长度为2^31-1(2G)
   
 binary  定长二进制数据,最大长度为8000
 varbinary  变长二进制数据,最大长度为8000
 image  变长二进制数据,最大长度为2^31-1(2G)

今天的分享到此结束,有需要的可以关注留言讨论

能帮朋友解决问题的记得给个关注支持一下,以后将多多分享SQL SERVER 相关知识

关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)的更多相关文章

  1. sql server数据库中char、nchar、varchar、nvarchar的选择

    在数据库中,字符型的数据是最多的,可以占到整个数据库的80%以上.为此正确处理字符型的数据,对于提高数据库的性能有很大的作用. 在字符型数据中,用的最多的就是Char与Varchar两种类型.前面的是 ...

  2. SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理

    原文:SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理 SQL Server 字段类型 decimal(18,6)小数点前是几位? 不可否认,这是 ...

  3. SQL中char、nchar、varchar、nvarchar、text概述【转】

    1. char char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符. 2. nchar ...

  4. char和nchar,varchar和nvarchar的区别(转载)

    1)       定义: char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度, ...

  5. char、nchar、varchar、nvarchar 的区别

    char.varchar.nchar.nvarchar为数据库中常用的字符类型,使用上要综合考虑空间利用率与存取速度.它们的区别如下: 实例解析: 定义char[9].varchar[9].nchar ...

  6. sql 根据日期模糊查询&SQL Server dateTime类型 模糊查询

    曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时间,在存入时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm: ...

  7. SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别

    原文地址 MS SQL大值数据类型varchar(max).nvarchar(max).varbinary(max) 在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max). ...

  8. SQL SERVER 数据有CHAR(10),CHAR(13),CHAR(9)隐藏字符

    原文:SQL SERVER 数据有CHAR(10),CHAR(13),CHAR(9)隐藏字符 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Givi ...

  9. Oracle/SQL 修改字段类型和长度

    标准SQL修改字段类型和长度语句: ALTER TABLE tableName modify column columnName 类型;例如Mysql的修改字段类型语句:alter table tes ...

  10. SQL Server锁类型

    SQL Server锁类型(SQL)收藏 1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁. 2. NOLOCK:不添加共享锁和排它锁,当这个选项生 ...

随机推荐

  1. Quartz 简单使用

    Scheduler 每次执行,都会根据JobDetail创建一个新的Job实例,这样就可以规避并发访问的问题(jobDetail的实例也是新的) Quzrtz 定时任务默认都是并发执行,不会等待上一次 ...

  2. Python程序笔记20230304

    抛硬币实验 random 模块 import random random.randint(a, b) 返回一个随机整数 N,范围是:a <= N <= b random.choice(&q ...

  3. 【Vue项目】商品汇前台(二)进度条插件+Vuex模块化仓库+函数的防抖与节流+路由传参

    前言 1 nprogress进度条的使用 当请求发出进度条出现并向前走,请求成功后进度条消失.nprogress是一种进度条插件 1.1 nprogress进度条插件安装 npm i --save n ...

  4. day01-Redis入门

    Redis入门 1.初始Redis 1.1认识NoSQL SQL(关系型数据库) NoSQL(非关系型数据库) 数据结构 结构化(Structured) 非结构化 数据关联 关联的(Relationa ...

  5. C# 从0到实战 基本类型

    C#语言的基本类型 与大多数编程语言一样,C#也有自己的基本类型,也称为内置类型.下面的表格就简单阐述了这些类型. C# 类型关键字 .NET 类型 bool System.Boolean byte ...

  6. Django框架简单搭建增删改查页面 Django请求生命周期流程图

    目录 Django框架简单搭建增删改查页面 一.前期的配置文件以及连接MySQL的基本准备 二.在数据库中准备好数据 三.将MySQL的数据展示到页面(简单认识HTML模板语法 for循环) 在Dja ...

  7. 从 API 网关聊到 API 管理

    在 API 管理中,通常会有这些痛点: 1.企业不清楚到底有多少个API,无法形成API资产管理等问题. 2.API在不同集群的生命周期问题. 3.API运行状态监控和告警问题. 4.API请求限流. ...

  8. Godot报错 Node not found: "SubViewport"[一问随笔]

    问题: 使用TextureRect显示SubViewport的内容,结果发生了如下报错 E 0:00:01:0007 get_node: Node not found: "SubViewpo ...

  9. 获取电脑的网络连接状态(三)Ping

    网络连接判断,使用ping测试获取: 1 private static async Task<bool> IsPingSuccess() 2 { 3 try 4 { 5 using (Pi ...

  10. (亲自实践)解决安装weditor报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xad in position 825

    升级weditor时,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 825: illegal multib ...