SQL2000里的数据类型

(1)char、varchar、text和nchar、nvarchar、ntext
char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。 后面三种数据类型和前面的相比,从名称上看只是多了个字母"n",它表示存储的是Unicode数据类型的字符。写过程序的朋友对Unicode应该很了解。字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
(2)datetime和smalldatetime datetime:
从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。 smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。
(3)bitint、int、smallint、tinyint和bit bigint:
从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。 int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。 smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据。 tinyint:从0到255的整数数据。 bit:1或0的整数数据。 (4)decimal和numeric 这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p之间的值,默认小数位数是0。 (5)float和real float:从-1.79^308到1.79^308之间的浮点数字数据。 real:从-3.40^38到3.40^38之间的浮点数字数据。在SQL Server中,real的同义词为float(24)。

数据库定义到char类型的字段时,不知道大家是否会犹豫一下,到底选char、nchar、varchar、nvarchar、text、ntext中哪一种呢?结果很可能是两种,一种是节俭人士的选择:最好是用定长的,感觉比变长能省些空间,而且处理起来会快些,无法定长只好选用定长,并且将长度设置尽可能地小;另一种是则是觉得无所谓,尽量用可变类型的,长度尽量放大些。   
鉴于现在硬件像萝卜一样便宜的大好形势,纠缠这样的小问题实在是没多大意义,不过如果不弄清它,总觉得对不起劳累过度的CPU和硬盘。

下面开始了(以下说明只针对SqlServer有效):
1、当使用非unicode时慎用以下这种查询: select f from t where f = N'xx' 原因:无法利用到索引,因为数据库会将f先转换到unicode再和N'xx'比较
2、char 和相同长度的varchar处理速度差不多(后面还有说明)
3、varchar的长度不会影响处理速度!!!(看后面解释)
4、索引中列总长度最多支持总为900字节,所以长度大于900的varchar、char和大于450的nvarchar,nchar将无法创建索引
5、text、ntext上是无法创建索引的
6、O/R Mapping中对应实体的属性类型一般是以string居多,用char[]的非常少,所以如果按mapping的合理性来说,可变长度的类型更加吻合
7、一般基础资料表中的name在实际查询中基本上全部是使用like '%xx%'这种方式,而这种方式是无法利用索引的,所以如果对于此种字段,索引建了也白建
8、其它一些像remark的字段则是根本不需要查询的,所以不需要索引
9、varchar的存放和string是一样原理的,即length {block}这种方式,所以varchar的长度和它实际占用空间是无关的
10、对于固定长度的字段,是需要额外空间来存放NULL标识的,所以如果一个char字段中出现非常多的NULL,那么很不幸,你的占用空间比没有NULL的大(但这个大并不是大太多,因为NULL标识是用bit存放的,可是如果你一行中只有你一个NULL需要标识,那么你就白白浪费1byte空间了,罪过罪过!),这时候,你可以使用特殊标识来存放,如:'NV'
11、同上,所以对于这种NULL查询,索引是无法生效的,假如你使用了NULL标识替代的话,那么恭喜你,你可以利用到索引了
12、char和varchar的比较成本是一样的,现在关键就看它们的索引查找的成本了,因为查找策略都一样,因此应该比较谁占用空间小。在存放相同数量的字符情况下,如果数量小,那么char占用长度是小于varchar的,但如果数量稍大,则varchar完全可能小于char,而且要看实际填充数值的充实度,比如说varchar(3)和char(3),那么理论上应该是char快了,但如果是char(10)和varchar(10),充实度只有30%的情况下,理论上就应该是varchar快了。因为varchar需要额外空间存放块长度,所以只要length(1-fillfactor)大于这个存放空间(好像是2字节),那么它就会比相同长度的char快了。
13、nvarchar比varchar要慢上一些,而且对于非unicode字符它会占用双倍的空间,那么这么一种类型推出来是为什么呢?对,就是为了国际化,对于unicode类型的数据,排序规则对它们是不起作用的,而非unicode字符在处理不同语言的数据时,必须指定排序规则才能正常工作,所以n类型就这么一点好处。

总结陈词:
1、如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char
2、能确定长度又不一定是ansi字符或者,那么用nchar;
3、不确定长度,要查询且希望利用索引的话,用nvarchar类型吧,将它们设到400;
4、不查询的话没什么好说的,用nvarchar(4000)
5、性格豪爽的可以只用3和4,偶尔用用1,毕竟这是一种额外说明,等于告诉别人说,我一定需要长度为X位的数据 这样一来,生活是不是变成美好多了? 

转载于:https://www.cnblogs.com/fanrsh/archive/2006/08/17/479551.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word html 预览 打印出来,word预览时文字在表格中,打印出来却没有.doc

word预览时文字在表格中,打印出来却没有篇一:打印WORD文档时,打印预览只显示部分文字是怎么回事?Word 20071. 单击“Office 按钮”,然后单击“Word 选项”。2. 打开“显示”菜单,单击以选中“打印选项”下的“打印背景色和图像”复…

MaC 修改MySQL密码

1.苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server) 2.进入终端输入:cd /usr/local/mysql/bin/ 回车后 登录管理员权限 sudo su 回车后输入以下命令来禁止mysql验证功能 ./mysqld_safe --skip-g…

正则学习:组的定义及引用方式

一个正则表达式匹配结果可以分成多个部分&#xff0c;这就是组(Group).把一次Match结果用(?<name>)的方式分成组,例子:publicstaticvoidMain() {  string s "2005-2-21";  Regex reg new Regex("(?<y>…

hdu 3549 Flow Problem(最大流模板题)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid3549 Problem DescriptionNetwork flow is a well-known difficult problem for ACMers. Given a graph, your task is to find out the maximum flow for the weighted directed graph.InputThe first line of…

html两个盒子怎么左右对其,关于html:在同一行上左右对齐两个内联块

如何对齐两个内联块&#xff0c;以便一个在左边&#xff0c;另一个在同一行&#xff1f; 为什么这么难&#xff1f; 是否有类似LaTeX的 hfill这样的东西可以占用它们之间的空间来实现这一目标&#xff1f;我不想使用浮点数&#xff0c;因为有了内联块&#xff0c;我可以将基线对…

奉献给你:《Visual C# 2005程序开发与界面设计秘诀》

对于《Visual C# 2005程序开发与界面设计秘诀》&#xff0c;我们将其定位为一本Visual C# 2005的进阶技术研讨书&#xff0c;针对的是曾使用过Visual C# 2002或者已经对新版本的Visual C# 2005有些了解的读者。在这本书里面&#xff0c;使用了将近130个小节以及范例&#xff0c…

.net的轻量级ORM -- PetaPoco/NPOCO框架使用说明

.net的轻量级ORM -- PetaPoco/NPOCO框架使用说明(具体参看:http://www.toptensoftware.com/petapoco/) 从11年就开始尝试使用轻量级ORM&#xff1a;PetaPoco,下文是基本使用方法。另外NPoco是PetaPoco的升级版&#xff0c;是另外一个人维护&#xff0c;原版PetaPoco基本不再维护…

mysql错误Please use SHOW DDL to check it, and then recover or rollback it using RECOVER DDL or ROLLBAC

Please use SHOW DDL to check it, and then recover or rollback it using RECOVER DDL or ROLLBACK DDL, mysql执行DDL语句的时候提示错误&#xff1a; [Err] 4644 - [1065507aa5d0c000][10.0.85.135:3306][test]ERR-CODE: [TDDL-4644][ERR_PENDING_DDL_JOB_EXISTS] Anoth…

计算机网络读后感500字,《网络少年》观后感500字作文

我还 觉得我们应该像索拉拉老师那样正确使用电脑&#xff0c;利用它来帮助我们学习、工作&#xff0c;利用它来充实生活&#xff0c;寻找乐趣&#xff0c;而不是单纯地利用它来玩电脑游戏。下面是小编为你们整理的几篇文章&#xff0c;希望你们喜欢阅读。《网络少年》观后感500…

Blog小技巧之二-让朋友在Blog上也能QQ到自己

首先打开“[url]http://is.qq.com/cgi-bin/webpresence/wpa_code?uin123456789[/url]”&#xff0c;把上面的123456789换成对方的QQ号。 然后选择想要的会话图片和提示。在“点击生成代码”中我们选择生成网页代码&#xff0c;这时我们可以得到一段网页代码&#xff0c;把它粘…

Linux中常见目录的作用

bin目录 有四个bin目录&#xff0c;分别是/bin、/sbin、/usr/bin/、/usr/sbin/  用来保存系统命令&#xff0c;区别是 前两个目录下的命令所有用户都可以执行&#xff0c;后两个目录下的命令只有超级用户可以执行boot目录 启动目录&#xff0c;保存的是用户的启动数据dev目录…

springboot 设置server.port不失效原因

配置服务启动的端口时&#xff0c;springboot默认在application.properties配置文件中提供了server.port配置项,但是启动后没有生效&#xff0c;其实该配置项要想生效其实是依赖于项目中内嵌的tomcat容器 内嵌tomcat的jar包依赖包含在pom中 <dependency><groupId>o…

计算机科学学院陈瑜,浙江大学城市学院计算机与计算科学学院 计算机科学与技术 陈则伦...

陈则伦省级优秀毕业生计算机1202所获奖项及荣誉&#xff1a;国家奖学金、学业优秀二等奖学金、学科竞赛优秀奖学金(团体一等)、学院“三好学生”荣誉称号、学业优秀二等奖学金2次、学科竞赛优秀奖学金(团体一等)、学科竞赛个人优秀二等奖学金2次、学院“三好学生”荣誉称号学科…

gcc对C语言的扩展:局部标签声明(Locally Declared Labels)

每个语句内嵌表达式都是一个可以声明局部跳转标签的域。一个局部标签只是一个标识符&#xff1a;你可以使用通常的goto语句跳到它&#xff0d;&#xff0d;但是只能在它所属的域内这么做。一个局部标签的申明如下&#xff1a;__label__ label;或者&#xff1a;__label__ label1…

界限设置

进行完第2步后在新打开的图层中输入limits 回车 输入坐标0&#xff0c;0 回车 输入界面长宽按坐标的方式输入&#xff0c;如297&#xff0c;210 然后回车&#xff1b;按F7可以显示和关闭格子 转载于:https://www.cnblogs.com/2277098974-qqcom/p/6853829.html

com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/p

今天用 今天用easyexcel遇到这个报错 com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/p 我用的是2.2.6版本 <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --><dependency><groupId…

计算机专业的大学生活演讲稿,大学生演讲稿3到5分钟

3大学生演讲稿3到5分钟篇二尊敬的领导老师&#xff0c;亲爱的同学们&#xff1a;大家晚上好&#xff0c;我是来自会计院20XX级会计电算化5班的李晓丹&#xff0c;很荣幸这天有机会站在那里作为出色学生代表与大家交流我的学习故事。相信在我的故事里也必须有不少在坐的同学们身…

mac Pycharm安装和激活

Pycharm 是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如调试、语法高亮、Project管理&#xff0c;代码跳转&#xff0c;只能提示&#xff0c;自动完成&#xff0c;单元测试、脚本控制。此外&#xff0c;该IDE提供了一些高级功…

HP前女老板Dunn和Carly的琐碎事

HP是美国的一家综合的IT技术公司,它生产的打印机和各式电脑产品在中国可谓是家喻户晓。领导这家跨国技术集团公司的&#xff0c;曾经有过两位出名的女老板&#xff0c;她们是1999-2005在位的Carly Fiorina女士&#xff0c;以及2005-2006年在位的Patricia Dunn女士。 前者因为参…

计算机术语设备透明性,计算机中术语透明性是什么意思?

一、透明性(transparency)定义&#xff1a;在通信网中&#xff0c;不改变信号形式和信息内容的端到端传输。二、透明性现象&#xff1a;在计算机技术中&#xff0c;一种本来是存在的事物或属性&#xff0c;但从某个角度看似乎不存在&#xff0c;称为透明性现象。通常&#xff0…