SQL Server中常用数据类型简介
2016-02-12 23:01
399 查看
简述
在个人机房重构的时候,我们要自己设计建造一个数据库,但是当开始写数据库设计说明书的时候,才发现我们对于每个定义的字段的数据类型还是傻傻的分不清楚,面对如此多的选择,我还是决定先好好的补补这些知识吧!一般来说,在机房收费系统中,我们可以将所用到的数据类型总体分为三种:
1)字符: char,varchar,nchar,nvarchar
2)数字: int,numeric,float
3)时间: datetime,date,time
字符类型的区别
(1)定义
char: 固定长度,存储ANSI字符,不足的补英文半角空格。nchar: 固定长度,存储Unicode字符,不足的补英文半角空格
varchar: 可变长度,存储ANSI字符,根据数据长度自动变化。
nvarchar:可变长度,存储Unicode字符,根据数据长度自动变化。
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar
nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
varchar[(n)]:长度为 n 个字节的可变长度且非 Unicode的字符数据。n 必须是一个介于 1 和 8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
注意:
从存储方式上,nvarchar是按字符存储的,而 varchar是按字节存储的。ANSI主要是以单字节来存储数据,一般适合英文。而我们常用的汉字需要用两个字节来存储,所以就要使用unicode的数据类型,不然读取出来的数据可能会乱码。
(2)使用方法
①如果你肯定存储的数据长度,而且不包中文的,可以选择char类型。②如果肯定存储的数据长度,但可能包括中文,可以选择nchar类型。
③如果不确定存储的数据长度,存储只有英文、数字的最好用varchar
④如果不确定存储的数据长度,也有可能有中文,可以选择nvarchar类型,因为nvarchar是使用Unicode编码,即统一的字符编码标准,会减少乱码的出现几率;
⑤如果你做的项目可能涉及不同语言之间的转换,建议用nvarchar。从存储量上考虑, varchar比较节省空间,因为存储大小为字节的实际长度,而 nvarchar是双字节存储;存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的,效率没有varchar高。
时间类型的区别
date: 表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。
DateTime: 表示 日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间。
time:表示具体的时间,如08:30:00.0000000,精确到100纳秒。
总结:对于这些在用的时候根据自己所需要的类型合理的使用,当然还有很多的数据类型,则根据需要使用,合理的使用数据类型给我们带来巨大的便利和节省空间,不会出现乱码等无法读取和存入数据等情况。所以,好好的研究数据类型能让我们在设计数据库的时候更加得心应手。
相关文章推荐
- 【翻译自mos文章】Oracle GoldenGate 怎么在源头的传输进程和目的端的server/collector进程之间分配 端口?
- sql存储过程的加密和解密(适用于SQLSERVER2000存储过程)
- MySql数据库运维 学习日记(一)
- 集群 Redis 使用实践
- django创建数据库的坑
- SqlHelper工具类的使用
- mysql 插入效率问题
- Navicat连接oracle,出现Only compatible with oci version 8.1 and&nb
- Windows平台配置免安装的MySQL
- MySQL数据库使用命令小结
- mysql使用“.frm”文件恢复表结构
- 【翻译自mos文章】OGG的集成捕捉模式支持Oracle database标准版么?
- macbook安装mysql
- vs2013连接mysql mysql_init未定义
- 相当重要---部署OGG对Oracle Database 补丁的要求
- sql server 如何批量update数据
- 得到刚刚插入数据库数据的主键ID
- Oracle varchar2 length 分析
- MySQL—基本操作
- JUnit Test NOSQL