求传奇数据库字段命名规范的类型和字符长度。

数据库表中字段类型有哪些?_百度知道
数据库表中字段类型有哪些?
我有更好的答案
varchar数据字符型:定长字符型:date大对象数据库中主要的字段类型有:number日期类型:char变长字符型
数据类型有:
下面的表格列出了主要数据类型。这些同义字在 Microsoft Jet数据库引擎SQL 保留字中被识别。
数据类型 存储大小 说明
BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中。不需数据转换(例如,转换到文本数据)。数据输入二进制字段的方式决定了它的输出方式。
BIT 1 个字节0 和 1 ,以及只包含这两个数值之一的字段。
TINYINT 1 个字节 介于 0 到 255 之间的整型数。
MONEY 8 个字节 介于 – 922,337,203,685,477.5808 到 922,337,203,685,477.5807 之间的符号整数。
(请参阅 DOUBLE ) 8 个字节 介于 100 到 9999 年的日期或时间数值。
UNIQUEIDENTIFIER 128 个位 用于远程过程调用的唯一识别数字。
REAL 4 个字节单精度浮点数,负数范围是从 –3.40282...
不同的字段类型用来存放不同类型的数据。创建和使用表时,更你应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。
字符型数据
字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。例如,你可以把从HTML form的文本框中搜集到的信息放在字符型字段中。
要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式 VARCHAR。考虑你前面创建的表guestbook:
CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate
在这个例子中,字段visitor的数据类型为VARCHAR。注意跟在数据类型后面的括号中的数字。这个数字指定了这个字段所允许存放的字符串的最大长度。在这个例子中,字段visitor能存放的字符串最长为四十个字...
不同的数据库有不同的类型:主要有:字符串型数值型日期型二进制型等oracle的数据类型:Char(size):定长字符型,字符长度不够自动在右边加空格。Varchar2(size):可变长字符型,大小必须指定。Number(m,n):数据字符型,大小必须指定。
其中m指有效位,n指的是小数位(四舍五入)
有效位:从左边不为0的数字算起,四舍五入。如果有效位大于m报异常。如:123.456(4,2)——&123.46 ;// 报错。
若是number 表示整形 。如 id number ;Date:日期类型。Lob:(large object)大对象,不能直接用insert插入。Blob:二进制大对象,也是以相当于指针的形式存放的。采用单字节存储,适合保存二进制数据,如图片,文件等。Clob:字符大对象,存文本。采用多字节存储,适合保存文本数据等。
其他类似问题
为您推荐:
数据库的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁数据库字段的长度怎么确定呢?举例,某个字段都是20.1~30.5之间的值,字段类型是real,那这个字段长度是_百度知道
数据库字段的长度怎么确定呢?举例,某个字段都是20.1~30.5之间的值,字段类型是real,那这个字段长度是
长度有限制但是也能够支持上千个字符的长度... 你只需,而数据库中字段长度必须定义出来,所以当超出长度会抱错,好安排数据在磁盘上的存储形式,占用的是内存空间程序里相关的数据集和适配器保存的都是字符串对象
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁数据库字段类型中的字符串类型一定要声明长度吗_百度知道
数据库字段类型中的字符串类型一定要声明长度吗
有两个问题。谢谢,字段类型定义中,其长度的确定就很迷惑:①有没有一种字段类型。若长度超过varchar(255)需要导入一些字符串数据到某个字段。因为这样的话,有没有一种方法能解决这个问题,后面的字符串内容就会被舍弃,可以保存不确定长度的字符串)?②或者说,但是不知道最长的字符串的长度
提问者采纳
这将会比较严重的浪费客户端内存,在数据库中存储空间的大小是实际的字符长度,比如UPPER这种不改变长度的就是索引字段定义的长度,我找不到充足的理由来使用CHAR类型?p=20" target="_blank">http、还有说法是有些数据经常修改,有些应用的业务逻辑也只是针对CHAR类型设计的,那用VARCHAR更能节省内存与存储空间来提升性能,但对特定的数据库还是有一些细微差别,SUBSTR这种会改变长度要根据函数截取长度决定,因为很久以前数据库只支持CHAR类型、状态,比如MYSQL中定义的长度如果小于255:
INNODB的最大总长度是3072字节,定义合理的长度也可以让人容易理解字段的用途,因为客户端在用SQL从数据库读取数据时,比如,比如STATUS字段定义VARCHAR(10)与VARCHAR(1000)有什么区别。
MYISAM最大总长度是1000字节。
MEMORY的最大总长度是3072字节,采用VARCHAR性能更好,采用CHAR就不会产生碎片,要取1K记录,而且CHAR还会带来讨厌的空格,如16,不会像CHAR一样补上空格.com/,然后分配足够的内存.58测试的结果,反正是变长的,9i中是75%.com/,如果要降序建的索引长度是字段定义长度*1。另外索引组织表及在线重建索引(因为中间会临时创建一个索引组织表)允许的索引信息长度更小。
DATA类型字段的长度固定是7,对于这个问题我没有深入分析过,CHAR是用来保存定长字符,‘DELETE’,这些字段也确定不会有索引://www。ORACLE没有这样的问题,这可能会影响在线重建索引不能操作。3。由于VARCHAR是变长存储:1。我个人对于一些可以完全预估的长度就按实际长度定义。从以上特点来看,64,设计字段时如果要定义为VARCHAR(4000),这样整合后都不清楚如何内存对齐了。MYSQL对索引长度限制比较复杂,VARCHAR比CHAR有明显的优势,你要给表上2个VARCHAR(4000)字段建组合索引。4,首先会取到字段定义的长度、标记之类的信息,如VARCHAR(20),128之类的,如VARCHAR(1024),至少ORACLE数据库是没有意义的,里面有详细的测试结果。从以上可以看出,使用VARCHAR(5)保存,只要数据块预留的空间没有问题,因此大部份数据库设计时都应该采用VARCHAR类型,可以保证进入数据库的数据符合长度要求,每种版本及存储引擎都不一样。 内置函数的索引长度根据函数决定,所以数据库软件也就一直保留CHAR类型,实际中8K的数据块大小,现代数据库一般都支持CHAR与VARCHAR字符型字段类型。 下面说一下我的理解,这将对系统的可用性产生较大影响,个人认为有以下几个原因,8i官方文档说明单条记录索引信息的长度不能超过数据块大小的40%,长度可能变化,创建时会直接报错,DBA要进行索引维护时只能停止应用,试想一下,那这个字段就不能考虑建立索引:1,单个字符字段是1000字节,但我认为既然长度会变化.dbthink,如下是MYSQL5。对于描述性或备注性的信息,所以留更大的长度: 关于ORACLE的索引长度还有一些特别的规则,一些数据库可以在每条记录中不存储字段长度信息,字段长度用1个字节表示,单个字符字段是767字节、为了跟以前版本的数据库进行一个兼容。ORACLE对索引长度还是有一定限制,如果你所有的字符字段长度都是VARCHAR(4000)会是什么样的情况。如果你的业务数据最大长度只有10、字段长度是数据库一种约束,实际上我看到在ORACLE jdbc驱动中会将所有的字符类型数据保存在一个大的char[]中,它会根据每条记录字段的实际长度动态选择长度标识,只能是数据块大小的40%,那么索引字段的定义长度不能超过6398,具体可以见jametong的<a href="http、VARCHAR的字段长度虽然对数据存储没有太大影响、字段定义的长度对索引也有较大影响。2,因为即使能建上,要使用在线重建索引,还是需要根据实际业务数据定义一个合适的长度,存储空间的大小为字段定义的长度,也就是说如果你定义的字段长度是1K.1,并不是越大越好,存储空间都一样?p=20这篇文档,个人认为必要性不大,单个字符字段是3072字节。5,这样可以节省部份空间,实际上也差不多。如果一个VARCHAR(1)定义为VARCHAR(4)反而浪费内存与存储,但是对于客户端的内存有影响:我们业务中STATUS只有‘NEW’,也可以方便做一些内存对齐提高性能,但定义长度为256则每条记录会多浪费了一个字节来存储长度,比如自定义函数返回的字符定义长度固定是4000,定义合理的字段长度可以减少一部份非法数据进入。VARCHAR是用来保留变长字符,也不能做在线重定义操作,会引起碎片,‘CLOSE’3种状态,这个说法比较多。那为什么还需要CHAR类型呢。3,VARCHAR(30) 之类 。对于不确定长度的业务数据如NAME,这个没有测试过。特别是一些高并发或者是取大量数据的场景,有些文章说MYSQL的MYISAM存储引擎在和长度固定的情况下CHAR比VARCHAR好,实际长度是10字节,所以要用自定义函数做函数索引需要特别注意一下,32,避免以后经常进行长度调整, 但只保存了10K有效数据,不太了解、STYLE之类的信息定义一个合理值,与实际字符长度无关,省得以后要加长又要改变字段定义。关于ORACLE索引长度限制测试的脚本如下、变长字段定义的长度虽然不会影响服务器数据空间大小,数据块大小为8K时。综上所述,如果超过255,比如,这样占用的空间更少,但个人认为这带来的性能提升非常微小,字段的长度将固定用2个字节表示.dbthink,有些设计人员喜欢定义字段的长度为4或者8的倍数,把所有NUMBER与DATE类型放在另一个char[]中。如果你的数据块大小是8K,这样可以有效的减少非法数据进入.5+1,那定义的长度不能超过3215,比如年月。
NUMBER类型字段的长度固定是22,那么很多人会有疑问,理由是可以做到内存对齐,如果字段长度大于767则自动截取前767个字符。对于ORACLE数据库,容易产生内存溢出、关于字段长度对齐的问题。
索引默认是升序:VARCHAR类型字段长度不能随便定义,长度也不可预知。2://www,当输入的字符小于定义长度时最后会补上空格,那客户端会分配1MB的内存,或者直接VARCHAR2(4000) 、CHAR类型是定长的,也没看到过这种优化能提升性能的案例您好
提问者评价
你也没给我直面回答,只是复制贴这段网上的话之前我已经解决了。较长不确定长度的字符串用text类型存。
其他类似问题
为您推荐:
字符串的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【转】常用数据库的字段类型及大小
1.SYBASE的字段类型如下:
字段长度及其缺省值
Char(Size)
用于保存定长(Size)字节的字符串数据。
每行定长(不足部分补为空格);最大长度为255字节,缺省值为每行1字节。
Varchar(Size)
用于保存变长的字符串数据。其中最大字节长度由(Size)指定。
每行长度可变,最大长度为255字节。数据长度缺省为1
Nchar(Size)
多字节字符串。
每行定长(不足部分补为空格)。 长度(Size)是指字符的个数,最大字节数为Size*A@@Nchar Size。
Nvarchar(Size)
可变长,多字节字符串。
每行变长。长度(Size)是指字符的个数,最大字节数为Size*A@@Nchar Size。
Binary(Size)
固定长度的二进制字符串。
每行定长(不足部分补为空格);最大长度为255字节,缺省值为每行1字节。
Varbinary(Size)
可变长度的长度的二进制字符串。
每行长度可变,最大长度为255字节。数据长度缺省为1
用于改变管理的二进制值。
字节数为16
保存定长的日期时间数据,范围为日到公元日,精度为3微秒间隔。
每行固定为8字节长度。
Smalldatetime
保存定长的日期时间数据,范围为日到公元日,精度为分钟间隔。
每行固定为4字节长度。
保存整型数据,范围为-到+。
最大长度为4字节32&-
1字节或4G。
保存整型数据,范围为-32767到+32767
最大长度为2字节32&-
1字节或4G。
保存整型数据,范围为0到255。
最大长度为1字节。
保存浮点数据类型,范围为-2.23E-308到+2.23E-308。
最大长度为8字节。
保存浮点数据类型,范围为-1.18E-38到+1.18E-38。
最大长度为4字节。
Numeric(P,S)
保存精确数值数据类型,范围为-10E-38到+10E-38,P是精度,总小数位数(1~38),S是小数位(小数位小于等于P)
最大长度为2~17字节。
Decimal(P,S)
保存精确数值数据类型,范围为-10E-38到+10E-38,P是精度,总小数位数(1~38),S是小数位(小数位小于等于P)
最大长度为2~17字节。
保存货币值数据类型,范围为-477.5808到+477.5808
最大长度为8字节。
Smallmoney
保存货币值数据类型,范围为-7到+7
最大长度为4字节。
保存大于255字节的栏或大于2KB页长度的文本数据。
最大长度为2G。
保存大于255字节的栏或大于2KB页长度的二进制数据。
最大长度为2G。
2.SQL SERVER
数据类型详解
&&&&&&&&&&&&述
数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或Fa lse 、On
int 数据类型可以存储从- 231(-)到231(2147483
647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节
smallint 数据类型可以存储从- 215(-32768)到215(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2
tinyint 数据类型能存储从0到255
之间的整数。它在你只打算存储有限数目的数值时很有用。 这种数据类型在数据库中占用1 个字节
精确数值型
numeric数据类型与decimal 型相同
精确数值型
decimal 数据类型能用来存储从-1038-1到1038-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。
范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数
money 数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220
亿之间的数据,精确到货币单位的万分之一
smallmoney
smallmoney
数据类型用来表示钱和货币值。这种数据类型能存储从-8 到7
之间的数据,精确到货币单位的万分之一
近似数值型
数据类型是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E+308
之间的任意数
近似数值型
数据类型像浮点数一样,是近似数值类型。它可以表示数值在-3.40E+38到3.40E+38之间的浮点数
日期时间型
datetime数据类型用来表示日期和时间。这种数据类型存储从日到
1日间所有的日期和时间数据, 精确到三百分之一秒或3.33毫秒
Smalldatetime
日期时间型
smalldatetime
数据类型用来表示从日到日间的日期和时间,精确到一分钟
特殊数据型
数据类型是一种特殊的数据类型,它包含一个对游标的引用。这种数据类型用在存储过程中,而且创建表时不能用
特殊数据型
timestamp 数据类型是一种特殊的数据类型,用来创建一个数据库范围内的唯一数码。
一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有“time”,
但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的
Uniqueidentifier
特殊数据型
Uniqueidentifier数据类型用来存储一个全局唯一标识符,即GUID。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID
函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列
char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。例如,当你按邮政编码加4个字符格式来存储数据时,你知道总要用到10个字符。此数据类型的列宽最大为8000
varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char
型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。
它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度
数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符
统一编码字符型
数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍
统一编码字符型
数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间增加了一倍
统一编码字符型
数据类型用来存储大量的统一编码字符型数据。这种数据类型能存储230&-1或将近10亿个字符,且使用的字节空间增加了一倍
二进制数据类型
binary数据类型用来存储可达8000
字节长的定长的二进制数据。当输入表的内容接近相同的长度时,你应该使用这种数据类型
二进制数据类型
varbinary 数据类型用来存储可达8000
字节长的变长的二进制数据。当输入表的内容大小可变时,你应该使用这种数据类型
二进制数据类型
image 数据类型用来存储变长的二进制数据,最大可达231-1或大约20亿字节
3.Access字段数据类型的用法及大小
数据类型&&&&&&&&&&&&&&&&&&&&&&&
用&&&&&&&&
法&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
“文本” (Text)
&&&&&&&&&&&
文本或文本与数字的组合,例如地址;&&&&&&&&&&&&&&&&&
最多 255 个字符。& Microsoft
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
也可以是不需要计算的数字,例如电话号码、&&&&&&&只保存输入到字段中的字符,而不保存
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&零件编号或邮编。字段中未用位置上的空字符。&&&设置"字段大小"属性
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
可控制可以输入字段的最大字符数
(Memo)&&&&&&&&&&&&长文本及数字,例如备注或说明。&
&&&&&&&&&&&&&&&&&&&
&最多 64,000 个字符。
“数字” (Number)
可用来进行算术计算的数字数据,&&&&&&&&&&&&&&&&&&&&&&
设置"字段大小"属性定义一个特定的数字类型。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&涉及货币的计算除外(使用货币类型)。&&&&&&&
1、2、4 或 8 个字节。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
16 个字节仅用于"同步复制 ID"(GUID)。
“日期/时间”(Date/Time) 日期和时间。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
8 个字节。
“货币”(Currency) &货币值。使用货币数据类型可以避免计算时四舍五入。
&&&精确到小数点左方 15
位数及右方 4 位数。&
“自动编号”(AutoNumber) 在添加记录时自动插入的唯一顺序
&&&(每次递增
1)或随机编号。&
个字节。16 个字节仅用于“同步复制 ID”(GUID)。&
“是/否” (Yes/No) &字段只包含两个值中的一个,
&&&例如“是/否”、“真/假”、“开/关”。&
“OLE 对象”(OLE Object) 在其他程序中使用 OLE
协议创建的对象&&&&
最大可为 1 GB(受磁盘空间限制)。
&&&(例如 Microsoft
Word 文档、Microsoft EXCEL 电子表格、
&&&图像、声音或其他二进制数据),
&&&可以将这些对象链接或嵌入
Microsoft Access 表中。
&&&必须在窗体或报表中使用绑定对象框来显示
OLE 对象。&&
“超级链接” (Hyperlink) 存储超级链接的字段。超级链接可以是 UNC 路径或 URL。
&最多 64,000 个字符。
“查阅向导”
&&创建允许用户使用组合框选择来自其他表或来自值列表中的值的字段。通常为
&&&在数据类型列表中选择此选项,将启动向导进行定义。&
&&&与主键字段的长度相同,且该字段也是“查阅”字段;。
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(-4775808)到2^63-1(4775807)的整型数据。&
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上是无法创建索引的&
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位的数据
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 数据库字段命名规范 的文章

 

随机推荐