拼多多上可以买奶粉吗:关于SQL 数据库的数据类型问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/27 20:57:54
请问在数据类型里
1,char,nchar,nvarchar,varchar有什么区别?
2,text和ntext有什么区别以及和上面各种字符类有什么区别?
3,关于带big和带small的类型,比如:smallint,int和bigint;以及smalldatetime,datetime和bigdatetime有什么区别?
不胜感谢!!

两个字符型字段分别定义为char(10)和varchar(10),当给它们存入“123”这个数据时,char(10)字段占用十个字节的存储空间,而varchar(10)只占用3个字节存储空间,这就是char和varchar的区别。可以看出varchar比较适合存储长度变化很大的数据。

nchar和char,nvarchar和varchar的区别在于是否使用Unicode进行编码。一般情况下在仅仅处理中文及英文,不涉及特殊符号时不需要使用Unicode。另一种需要用Unicode的情况是需要将字符串数据添加到SQL语句中执行,又不想里面的东西如单引号使SQL产生误解,可以将其用Unicode编码,这时每个字符都将占用两个字节,单引号也不会被SQL识别了。

ntext和text的区别也是一样。由于每个字符都占用两个字节,比较适合存储纯中文包括少量英文的数据。

smallint、int和bigint的区别仅仅在于位数不同。smallint可存储2字节整数(-32768~32767),int可存储4字节整数(-2147483648~2147483647),bigint可存储8字节整数(-9223372036854775808~9223372036854775807)。

smalldatetime用两个字节存储,可表示从1900年1月1日到2079年6月6日之间的任何时间,精确到分钟。datetime用四个字节存储,可表示1753年1月1日到9999年12月31日的任何时间,精确到百分之三秒。

sql中没有bigdatetime类型。

简单的说:
char和nchar是定长字符串类型,varchar和nvarchar是变长字符串类型。也就是说如果字段类型为char(10),那么即使你输入的字符为'abc',在数据库中也会保存成' abc',字段前面会被自动补上7个空格。而使用varchar(10)则前面不会补空格。

至于前面那个n有什么不同,有n代表支持unicode字符,而没有n的则不支持,text和ntext的区别也是一样。

text和char及varchar的区别在于,char和varchar字段的数据是保存在表中,而text字段可以保存大容量的文本,数据是保存在另外的空间里,当然在表面上看来并没有什么区别。

关于带big和small的类型。small代表是简化的数据类型,支持的范围比较小,但占用的空间也小。big是超大的数据类型,占用的空间大,但支持的范围也大。比如smallint只占用一个字节,但是只能支持0-255的数字。datetime也是一样。

abingpow说的很对
补充:
1. char 和nchar 当填入数据为空时,数据库自动使用全空格来代替,从而使not null形同虚设。所以如果字段不能为空,一定要在程序中提前判断。

2. char 和nchar因为长度固定,据说读写的速度要比 varchar和nvarchar快