大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

修改字段类型和长度,nvarchar的区别浅析

来源:http://www.dfwstonefabricators.com 作者:数据库 人气:128 发布时间:2019-09-23
摘要:1.电话字段设置24个Byte竟然不够,好吧设置为50的长度。 alter table 表名 alter column 字段名 新类型名(长度)举例:alter table T_CustomerFile alter MobilePhoneNumber nvarchar(50) 在SQLServer中,当我们设置

1.电话字段设置24个Byte竟然不够,好吧设置为50的长度。

alter table <表名> alter column <字段名> 新类型名(长度)

举例:
alter table T_CustomerFile alter MobilePhoneNumber nvarchar(50)

在SQL Server中,当我们设置字符型字段的时候,往往有很多个数据类型供我们选择,如:char nchar varchar nvarchar等,那么我们到底应该选择哪一个呢?下面就一一来描述其区别。

 2.删除一个表,整个表在数据库中消失

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[T_ABC]') AND type in (N'U'))

DROP TABLE [dbo].[T_ABC]

char:固定长度,非Unicode字符数据,长度为n个字节。n的取值范围为1至8,000,存储大小是n个字节。char的SQL2003同义词为character。

3、整型bigint、int、smallint、tinyint的区别

bigint

从 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807) 的整型数据

(所有数字)。存储大小为 8 个字节。

 

int

从 -2^31 (-2,147,483,648) 到 2^31 - 1(2,147,483,647) 的整型数据(所有数字)。

存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。

 

smallint

从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。

 

tinyint

从 0 到 255 的整型数据。存储大小为 1 字节。

varchar:可变长度,非Unicode字符数据。n的取值范围为1至8,000。max指示最大存储大小是2^31-1个字节。存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。SQL-2003中的varchar就是charvarying或charactervarying。

 4、varchar、nvarchar、char、nchar

varchar(n)
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。

nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。

 如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文等)字符时用nvarchar

 

char的长度是不可变的,而varchar的长度是可变的。char的存取数度比varchar要快得多,因为其长度固定,方便程序的存储与查找;char为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的

 

nchar的长度是不可变的,Unicode字符数据。

 

char,varchar 最多8000个英文,4000个汉字
nchar,nvarchar 可存储4000个字符,无论英文还是汉字

TEXT

text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

ntext
可变长度 Unicode 数据的最大长度为 2^30 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext 在 SQL-92 中的同义词是 national text。

 

如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么使用char
能确定长度又不一定是ansi字符或者,那么使用nchar
对于超大数据,如文章内容,使用nText 
其他的通用nvarchar

nchar:n个字符的固定长度的Unicode字符数据。n值必须在1到4,000之间(含)。存储大小为两倍n字节。nchar的SQL-2003同义词为nationalchar和nationalcharacter。

 5、DECIMAL``(P,D)

表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。

剩余数字
0 0
1–2 1
3–4 2
5–6 3
7-9 4

例如:DECIMAL(19,9)对于小数部分具有9位数字,对于整数部分具有19位-9位 = 10位数字,小数部分需要4个字节。 整数部分对于前9位数字需要4个字节,1个剩余字节需要1个字节。DECIMAL(19,9)列总共需要9个字节。

 

nvarchar:可变长度Unicode字符数据。n值在1到4,000之间(含)。max指示最大存储大小为2^31-1字节。存储大小是所输入字符个数的两倍+2个字节。所输入数据的长度可以为0个字符。nvarchar的SQL-2003同义词为nationalcharvarying和nationalcharactervarying。

PowerDesigner  和 astah professional 

业务比较简单的数据库设计,使用PowerDesigner就够了。

 

点击新建新模型->Categories->Infomation->Physical Data,即可开启数据库表结构设计之旅。

设计好的数据库表结构,双击在“Table Properties”标签页下,有一个“Preview”的标签,打开,即可看到对应数据库表设计的SQL语句。直接复制到MSSQLServer、Oracle或其他数据库的执行窗口,执行即可创建。

 

如果业务相对复杂,可以使用astah professional版本来进行业务和数据库设计,在astah的主界面的tools->ER Diagram->Export Sql... 可以导出对应的SQL语句。

图片 1

 

参考

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

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

char,nchar:定长,速度快,占空间大,需处理

varchar,nvarchar:变长,速度慢,占空间小,无需处理

定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度。

变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。

1、char。char存储定长数据很方便,char字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到Trim()。

2、varchar。存储变长数据,但存储效率没有char高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为varchar(10)是最合算的。varchar类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

3、nchar、nvarchar、ntext。这三种从名字上看比前面三种多了个“n”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。

您可能感兴趣的文章:

  • 详解SQL Server中的数据类型
  • 详解MySQL数据类型int(M)中M的含义
  • mysql存储引擎和数据类型(二)
  • Java数据类型与MySql数据类型对照表
  • SQL Server数据类型转换方法
  • SQL Server比较常见数据类型详解
  • SQLite教程(七):数据类型详解
  • sql使用cast进行数据类型转换示例
  • SQL2005中char nchar varchar nvarchar数据类型的区别和使用环境讲解
  • SQL的常用数据类型列表详解

本文由大发体育娱乐在线发布于数据库,转载请注明出处:修改字段类型和长度,nvarchar的区别浅析

关键词:

上一篇:没有了

下一篇:没有了

最火资讯