首页> 搜索结果页
"数据库uniqueidentifier" 检索
共 257 条结果
SQL数据类型-UNIQUEIDENTIFIER
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 当你正在处理被多个站点(像在跨国公司条件下)使用的大数据库时,你也许会遇到保证表格对象唯一性这样的棘手问题。在这种情形下,可能只能靠UNIQUEIDENTIFIER来解决。UNIQUEIDENTIFIER是一个保存全局唯一标识符的GUID数据类型。GUID是一个保证唯一的二进制数,因此几乎没有别的计算机会产生同一个值。 GUID的唯一值是由计算机网卡的标识数加上一个CPU时钟产生的唯一数而得到的。网卡制造商至少在下一个100年内能保证网卡的唯一性。 UNIQUEIDENTIFIER值不能像IDENTITY属性那样自动产生。要想为你的表格对象产生UNIQUEIDENTIFIER值,你必须指定NEWID函数为column的缺省值。 例如,如果你想要创建一个表格列出你的跨国公司的所有子公司的尖端产品的收入,并且你希望指定一个GUID数据类型,那么你可以键入: CREATE TABLE NetRevenueTable (UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID(), Characters VARCHAR(10)) 在数据库工具中,你要在数据库图表中或当你正在设计一个表格时做这件事情。为你想唯一确定的column选择Is RowGUID。缺省情况将是(newid()),它自动产生RowGUID。 尽管在许多情况下你必须保证表格对象的唯一性,但是如果你决定使用UNIQUEIDENTIFIER数据类型,请注意以下特性: 这些值是长而且难懂的。 这些值是随机的,不带有对用户有意义的样式。 这些值在依靠连续增加的值的应用程序中很难使用。 这些值有16字节,很大,因此用这些钥匙构建索引会更慢。 本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2007/08/13/2912313.html  ,如需转载请自行联系原作者
文章
SQL  ·  数据库  ·  索引
2017-11-15
在Sql2005中,向表中插入数据时遇到uniqueidentifier列,如何插入数据?
原文 http://blog.csdn.net/quou2002/article/details/596509 Sql2005中,提供了uniqueidentifier 数据类型。说白了,就是个GUID,这种类型开发时倒是很有必要的。 今天程序中遇到了这个问题:表里定义了一个uniqueidentifier 列,Asp.net程序需要向表中插入新的数据。 Insert 语句由数据源控件自动生成:INSERT INTO [morning_Department] ([DepartmentId], [name]) VALUES (@DepartmentId, @name),其中DepartmentId列为一个uniqueidentifier 列。错误提示:Implicit conversion from data type sql_variant to uniqueidentifier is not allowed. Use the CONVERT function to run this query. 解决方法有2种:1、在数据库中将Insert 操作写成存储过程,uniqueidentifier 列由SQL2005提供的NEWID()函数生成,Asp.net程序这边就不用负责生成这个值了; 2、还是按常规思路,只是在数据源控件InsertQuery属性中稍作修改即可。①点击InsertQuery属性,打开‘命令和参数编辑器’;②就上面写的那个Insert 语句来说,在‘参数’列表里选择‘DepartmentId’这个uniqueidentifier 列名称;③右边有个‘显示高级属性’,点击它。滚动条拖到最下,有个‘Type’属性,默认值是‘Object ’类型,把它改为‘string’。④Ok,收工。
文章
.NET  ·  开发框架  ·  存储  ·  数据库
2013-05-22
全球唯一标识GUID
GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。在这次开发 ASP.NET 应用时,我大量使用了类型为 GUID 的 ID 列作为各实体表的关键字(键)。由于其唯一、易产生的特性,给应用程序处理带来诸多好处。1、在 SQL Server 中使用 GUID如果在 SQL Server 的表定义中将列类型指定为 uniqueidentifier,则列的值就为 GUID 类型。SQL Server 中的 NewID() 函数可以产生 GUID 唯一值,使用此函数的几种方式如下:1) 作为列默认值将 uniqueidentifier 的列的默认值设为 NewID(),这样当新行插入表中时,会自动生成此列 GUID 值。2)使用 T-SQL在 T-SQL 中使用 NewID()函数,如“INSERT INTO Table(ID,... ) VALUES(NewID(),...)”来生成此列的 GUID 值。3)提前获取 GUID 值由于特殊功能需要,需要预先获知新行的 ID 值,也可以使用如下 C# 代码提前获得 GUID 的值,再存储到数据库中:SqlCommand cmd = New SqlCommand();cmd.CommandText = "SELECT NewID()";string rowID = (string) cmd.ExecuteScalar();cmd.CommandText = "INSERT INTO Table(ID,...) VALUES(@ID,...)cmd.Parameters.Add("@ID",SqlDbType.UniqueIdentifier).Value = new Guid(rowID);cmd.ExecuteNoQuery();uniqueidentifier 值不能进行算术运算,但可以进行(意义不大的)比较操作和 NULL 检查;它不能象 IDENTITY 列一样,可以获知每行的增加时间的先后顺序,只能通过增加其它时间或时间戳列来完成此功能。2、在 .NET 中使用 GUIDGUID 在 .NET 中使用非常广泛,而且 .NET Framework 提供了专门 Guid 基础结构。Guid 结构的常用法包括:1) Guid.NewGUID()生成一个新的 GUID 唯一值2) Guid.ToString()将 GUID 值转换成字符串,便于处理3)构造函数 Guid(string)由 string 生成 Guid 结构,其中string 可以为大写,也可以为小写,可以包含两端的定界符“{}”或“()”,甚至可以省略中间的“-”,Guid 结构的构造函数有很多,其它构造用法并不常用。同时,为了适用数据库中使用 GUID 的需要,.NET Framework 也提供了 SqlGUID 结构,它和 Guid 结构类似,只是两者对排序(CompareTo)的处理方式不同,SqlGuid 计算值的最后 6 个字节。而 Guid 计算全部 16 个字节,这种差异可能会给 SQL Server 中 uniqueidentifier 列的排序带来一定影响,当然这种排序意义也不大。.NET Framework 中可以使用类 GuidConverter 提供将 Guid 结构与各种其他表示形式相互转换的类型转换器。3、GUID 的优缺点1) 优点同 IDENTITY 列相比,uniqueidentifier 列可以通过 NewID() 函数提前得知新增加的行 ID,为应用程序的后续处理提供了很大方便。便于数据库移植,其它数据库中并不一定具有 IDENTITY 列,而 Guid 列可以作为字符型列转换到其它数据库中,同时将应用程序中产生的 GUID 值存入数据库,它不会对原有数据带来影响。便于数据库初始化,如果应用程序要加载一些初始数据, IDENTITY 列的处理方式就比较麻烦,而 uniqueidentifier 列则无需任何处理,直接用 T-SQL 加载即可。便于对某些对象或常量进行永久标识,如类的 ClassID,对象的实例标识,UDDI 中的联系人、服务接口、tModel标识定义等。  2) 缺点GUID 值较长,不容易记忆和输入,而且这个值是随机、无顺序的,所以使用时要注意场合,最好不要尝试用它来作为你的电子邮件地址 JGUID 的值有 16 个字节,与其它那些诸如 4 字节的整数相比要相对大一些。这意味着如果在数据库中使用 uniqueidentifier 键,可能会带来两方面的消极影响:存储空间增大;索引时间较慢。 转自网址: http://www.cnblogs.com/mxyu/archive/2012/05/03/2480339.html
文章
SQL  ·  数据库  ·  C#  ·  .NET  ·  开发框架  ·  存储  ·  Windows  ·  索引
2015-08-27
UNIQUEIDENTIFIER列上的统计信息
问题重现(The repro) 为了向你展示我们刚抱怨的行为,我用下列简单的表定义创建了一个数据库,我在UNIQUEIDENTIFIER列上强制主键约束。这意味着SQL Server在后台会生成唯一聚集索引,聚集索引本身有一个统计信息对象来描述那列的数据分布情况。当然,数据分布是线性的,因为在UNIQUEIDENTIFIER列每个值本身都是唯一的。 1 -- Create a new table with a UNIQUEIDENTIFIER column as primary key. 2 -- SQL Server will enforce the primary key constraint through unique clustered index in the background. 3 CREATE TABLE CustomersTableGuid 4 ( 5 ID UNIQUEIDENTIFIER NOT NULL PRIMARY KEY, 6 FirstName VARCHAR(50), 7 LastName VARCHAR(50) 8 ) 9 GO 下一步我往表里插入1百万条记录。 1 -- Insert 1 million records 2 DECLARE @i INT = 0 3 WHILE (@i <= 1000000) 4 BEGIN 5 INSERT INTO CustomersTableGuid (ID, FirstName, LastName) 6 VALUES 7 ( 8 NEWID(), 9 'FirstName' + CAST(@i AS VARCHAR), 10 'LastName' + CAST(@i AS VARCHAR) 11 ) 12 13 SET @i +=1 14 END 15 GO 现在我们用FULLSCAN在表上更新我们的统计信息。FULLSCAN意味着SQL Server扫描整个表内在数据来更新统计信息对象。 1 -- Let's update the Statistics with a FULLSCAN. 2 UPDATE STATISTICS CustomersTableGuid WITH FULLSCAN 3 GO 但当你现在查看统计信息对象时,你会看到在直方图里SQL Server只生成了4个步长。 1 sp_helpindex 'dbo.CustomersTableGuid' 2 3 DBCC SHOW_STATISTICS('dbo.CustomersTableGuid', 'PK__Customer__3214EC271273C1CD') 在表头信息里你可以看到,在统计信息更新期间,1百万行被采样,但直方图只显示了4个步长!但当你现在用更小采样区间来更新统计信息对象,事情就会改变: 1 -- Let's update the Statistics with a smaller sampling interval. 2 UPDATE STATISTICS CustomersTableGuid WITH SAMPLE 50 PERCENT 3 GO 当你现在看下直方图,你会看到我们有很多不同的步长:   小结 当你在数据库设计里用UNIQUEIDENTIFIER列时要记住这点了。只要这些值是唯一的,你就会有性能上的问题,因为对于直方图里,你有的巨量区间,AVG_RANGE_ROW 只能做出1行的正确估计。 感谢关注! 本文转自Woodytu博客园博客,原文链接:http://www.cnblogs.com/woodytu/p/4720240.html,如需转载请自行联系原作者
文章
SQL  ·  Go  ·  索引
2017-11-13
GUID的使用
前期为了解决订单号唯一问题,在网上找了一些信息,有人建议使用Guid类型来解决。 查看MSDN中的叙述如下:                Guid 类型表示 16 字节(128 位)GUID 值。此类型映射到 SQL Server 中的 uniqueidentifier 类型。 根据这个描述可以得知,Guid在数据库中存储为uniqueidentifier 类型。GUID的唯一值是由计算机网卡的标识数加上一个CPU时钟产生的唯一数而得到的。网卡制造商至少在下一个100年内能保证网卡的唯一性。 Guid的生成,在数据库中选择默认值自动产生:              CREATE TABLE [Order] (UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID(),Characters VARCHAR(10))   C#生成Guid值。C#有Guid结构,并且有静态的方法NewGuid()可以创建Guid实例。具体如下:       Guid.NewGuid(); 本文转自tiasys博客园博客,原文链接:http://www.cnblogs.com/tiasys/archive/2009/11/23/1608920.html,如需转载请自行联系原作者
文章
存储  ·  C#  ·  数据库  ·  SQL
2017-11-14
在Csharp中实现SQL Server数据库中的UniqueIdentifier数据类型
实现对数据库的条件查询表结构:表数据示例:错误信息:1、直接使用string类型2、上网搜索后,尝试将string类型转换为GUID
问答
SQL  ·  数据库  ·  C#
2016-06-12
谈数据库主键选取策略
INT和GUID,究竟选谁?   关于数据库主键的选取策略,大家都是在INT和GUID两者中徘徊。忘了那些喋喋不休的争论吧!毕竟鱼与熊掌,不可兼得。在这篇文章中,我们不再关注它们的优缺点,自觉先行做点功课哦!   如小标题,如果真要选,我会选谁?肯定地说,我会选GUID,又或者两者都选上。后者情形下,使用GUID做主键、INT做小二,INT在业务层生成,这要即使重复了,也不碍事,且INT是要反馈给前端的,定时做一个防冲突检测。如果让用户记忆或反馈那GUID字符串(去连接字符后32位),可以直接去跳楼了!   INT和GUID,究竟谁快?   使用INT或GUID做主健,究竟谁更快?为回答这个问题,我们先看下面的表格内容:   解释一下:   1、uniqueidentifier存储为二进制值,为什么是16字节呢?0~f 共16 种表示,有16*16=256,也有2^8=256(值域为0~255),去掉四个连接字符,即表示为16字节。   2、varchar和nvarchar属变长型,存储时会增加一个int类型(四个字节)记录内容长度。   3、nchar和nvarchar类型存储为Unicode数据,占用两个字节,所以字节数要算双份。   谁会更快?   1、勿庸置疑,INT肯定是最快的,甚至你会选择int而不是bigint。   2、其次,谁会更快?当选uniqueidentifier。   3、项目中,选用了varchar、nchar、nvarchar中某一类型?只怕你会是神,不是人或妖。   INT和GUID,谁主沉浮?   项目中,如果你是使用INT做主健,那么接下来的内容可以直接略过?因为你已经得到了答案。   写这篇随笔的主要目的,是要告诉大家,使用GUID做主键时,特别要注意索引与排序问题。   GUID做主键,字段类型为char(36),数据记录索引与排序依据肯定是字符串的从左到右,即:12345678-0000-0000-0000-000000000000   GUID做主键,字段类型为uniqueidentifier,数据记录索引与排序依据将是后六字节,即:00000000-0000-0000-0000-1234567890ab   为什么会这样?数据存储为uniqueidentifier时,会体现为SqlGuid 结构。   MSDN描述有:SqlGuid使用 SQL Server行为实现CompareTo,该行为只计算值的最后6个字节。Guid 计算全部 16 个字节。   结束语   为了验证所说,你可以这样做:建表并添加uniqueidentifier字段类型,随机插入几万条记录,然后观察后十二位字符的排序情况,或参考下面截图。 ====================================分割线================================ 最新内容请见作者的GitHub页:http://qaseven.github.io/
文章
存储  ·  数据库  ·  索引  ·  前端开发
2017-07-10
GUID生成方式
uniqueidentifier(Guid)字段   在MS Sql 数据库中可以在建立表结构是指定字段类型为uniqueidentifier,并且其默认值可以使用NewID()来生成唯一的Guid(全局唯一标识符).使用NewID生成的比较随机,如果是SQL 2005可以使用NewSequentialid()来顺序生成,在此为了兼顾使用SQL 2000使用了NewID().   Guid:指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,其算法是通过以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字生成。其格式为:04755396-9A29-4B8C-A38D-00042C1B9028.   Guid的优点就是生成的id比较唯一,不管是导出数据还是做分步开发都不会出现问题.然而它生成的id比较长,占用的数据库空间也比较多,随着外存价格的下降,这个也无需考虑.另外Guid不便于记忆,在这方面不如自动增量字段,在作调试程序的时候不太方便。     本文转自温景良(Jason)博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/06/05/1497149.html,如需转载请自行联系原作者        
文章
SQL  ·  算法  ·  数据库  ·  芯片
2017-11-16
SQLTest系列之INSERT语句测试
场景引入 菜鸟不断又猛又持久的给老鸟惊喜以后,老鸟开始不断的折腾菜鸟:“鸟,你研究下有没有一款可以测试MSSQL Server的工具吧?”。“这还不简单,用Red Gate的SQLTest呗”,于是菜鸟开始了工具的研究之旅:“要不,今天就分享下SQLTest之Insert语句测试吧”。 SQLTest简介 领了任务的菜鸟,由于之前对这个工具有所了解,所以还是比较轻车熟路的。让我们先来看看SQLTest是干什么的吧。SQLTest是一款简单易用,非常容易上手的SQL Server性能、压力和单元测试工具。它既可以测试本地环境的SQL Server工作负载,也可以测试云环境的SQL Server服务。 SQLTest一键安装 SQLTest就是一个简单的SQL Server测试工具,所以,它的安装过程也简单。官方推荐一键安装,简单到令人发指的地步。 下载地址:http://www.sqltest.org/Download 测试环境 在测试之前,菜鸟汇总自己的测试环境信息:CPU:4 coresMemory:4 GBDisk: SSDSQL Server: SQL Server 2008R2 SP2 SQLTest INSERT语句测试 老实讲,上面都不重要,看好了,这里才是本文的重点:如何使用SQLTest来测试INSERT的效率呢?如何测试INSERT语句在不同线程数量下的效率?不同的数据类型选择对INSERT效率的影响如何?这里虚拟一个场景,假设我们有一张名为Orders的订单表,我们会根据Orders的主键数据类型的不同来测试INSERT的效率。 INT IDENTITY 创建测试数据库和Orders表 use master; IF DB_ID('SQLTestDemo') IS NULL CREATE DATABASE SQLTestDemo go use SQLTestDemo go IF OBJECT_ID('Orders','U') IS NOT NULL BEGIN TRUNCATE TABLE Orders DROP TABLE Orders END GO CREATE TABLE Orders ( OrderID INT NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED , OrderDate datetime , CustomerID int , SourceID int , StatusID int , Amount decimal (18, 2) , OrderDetails char(7000) ) GO 所有准备工作就绪,菜鸟迫不及待的开始测试了,开启SQLTest,设置SQLClient Connection String Data Source=(local);Database=SQLTestDemo;Integrated Security=true;Pooling=false SQL Command insert into Orders values (getdate (), 1, 1, 1, 1, replicate ('a', 7000)) go Number of Threads 点击Start Current按钮,测试时间10秒后,得到如下截图:1个线程运行10秒钟,迭代了12471次,每次迭代消耗数据库时间0.000秒。(由于这里精确到千分之一秒,也就是一毫秒,说明每次迭代耗时少于1毫秒)。 现在我们分别将线程数调整为2,4,8,16,32,64,128,256来测试,为了测试的相对准确性,请在测试之前执行“创建测试数据库和Orders表”中的代码,重新创建Orders表。SQLTest返回结果的设置方法如下:Settings => Workload Settings 测试完毕后,我们可以得到如下表格数据:将这些数据绘制成直方图和折线图: 从这个图中,可以很直观的得出如下结论: 从吞吐量来看:无输出结果方式远远大于有输出结果方式,前者是后者的两倍还多; 从数据库平均耗时来看:无输出结果效率也远远高于有输出结果方式,后者是前者的两倍; 从线程数量来看:并不是线程数开得越多,SQL Server吞吐量越大,效率越高;无论是有输出结果方式还是无输出结果方式,并发8到16个线程SQL Server的吞吐量达到最大,效率最高; 注意:最后一个结论不一定适用于所有的SQL Server,因为这个和SQL Server的版本,机器的CPU,Memory,磁盘等有密切的关系,用户在得到这个值之前需要自己严格测试。 提供INT值 完成了主键值INT IDENTITY的测试后,菜鸟陷入了疑惑:每个线程如何插入不同的值呢?于是有了这个测试方法: use SQLTestDemo go IF OBJECT_ID('Orders','U') IS NOT NULL begin truncate table Orders drop table Orders end go create table Orders (OrderID int primary key clustered , OrderDate datetime , CustomerID int , SourceID int , StatusID int , Amount decimal (18, 2) , OrderDetails char (7000) ) go 让每个线程生成不同的OrderID,我们可以使用SQLTest_Thread来代替线程数,SQLTest_Iteration代替迭代次数,最终将SQL Command修改为: insert into Orders values (({SQLTest_Thread} * 100000) + {SQLTest_Iteration}, getdate(), 1, 1, 1, 1, replicate ('a', 7000)) go UNIQUEIDENTIFIER with NEWID() 测试方法类似于“INT IDENTITY”章节,只是Orders表结构和SQL Command不一致。 use SQLTestDemo go IF OBJECT_ID('Orders','U') IS NOT NULL begin truncate table Orders drop table Orders end go create table Orders ( OrderID uniqueidentifier not null default newid () primary key clustered , OrderDate datetime , CustomerID int , SourceID int , StatusID int , Amount decimal (18, 2) , OrderDetails char (7000)) go SQL Command insert into Orders values (NEWID(),getdate (), 1, 1, 1, 1, replicate ('a', 7000)) go UNIQUEIDENTIFIER with NEWSEQUENTIALID() 同上,测试方法类似于“INT IDENTITY”章节,只是Orders表结构和SQL Command不一致。 use SQLTestDemo go IF OBJECT_ID('Orders','U') IS NOT NULL BEGIN TRUNCATE TABLE Orders DROP TABLE Orders END GO CREATE TABLE Orders ( OrderID uniqueidentifier default newsequentialid () primary key clustered , OrderDate datetime , CustomerID int , SourceID int , StatusID int , Amount decimal (18, 2) , OrderDetails char (7000)) GO SQL Command insert into Orders(OrderDate,CustomerID,SourceID,StatusID,Amount,OrderDetails) values (getdate (), 1, 1, 1, 1, replicate ('a', 7000)) go 总结 将四种数据类型在No Result输出情况汇总统计如下表:做一个漂亮炫酷的图表出来对比下:从这个图标,我们可以发现如下规律: 从吞吐量角度来看:所有数据类型,并发量聚集在8到16时,INSERT操作吞吐量达到最大值; 吞吐量表现最好的是int identity数据类型和uniqueidentifier + newsequentialid做为主键的表; 从数据库平均耗时角度:所有数据类型,并发量在8到16时,INSERT操作的平均时间消耗最小,接近64个线程时,平均耗时会急剧上升; 平均耗时表现最好的是int identity和Newsequentialid类型。 从结果来看,UNIQUEIDENTIFIER + NEWSEQUENTIALID和INT IDENTITY性能和吞吐量表现都非常好,我们到底该选择哪一个更好一些呢? 我的结论是选择IDENTITY属性的数字类型字段做为主键,因为它占的空间更小,INT为4个字节,BIGINT为8个字节而UNIQUEIDENTIFIER 占了36个字节。 写在最后 老鸟看完菜鸟的研究报告,赞不绝口:“不错啊,今天的最好表现就是明天对你的最低要求,SQLTest INSERT如何做参数化测试啊?”。菜鸟卖起了关子:“鸟哥,预知后事如何,且听下回分解”。
文章
SQL  ·  测试技术  ·  Go  ·  数据库
2016-11-17
数据库中字段类型对应C#中的数据类型
数据库 C#程序 int         int32 text        string bigint        int64 binary       System.Byte[] bit         Boolean char        string datetime      System.DateTime decimal       System.Decimal float         System.Double image        System.Byte[] money        System.Decimal nchar         String ntext         String numeric        System.Decimal nvarchar        String real          System.Single smalldatetime     System.DateTime smallint        Int16 smallmoney      System.Decimal timestamp       System.DateTime tinyint         System.Byte uniqueidentifier    System.Guid varbinary       System.Byte[] varchar        String Variant        Object   数据库中相关字段类型的详解: 数据类型 类型 描 述 bit 整型 bit 数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或False 、On 或Off int 整型 int 数据类型可以存储从- 231(-2147483648)到231 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节 smallint 整型 smallint 数据类型可以存储从- 215(-32768)到215(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间 tinyint 整型 tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。 这种数据类型在数据库中占用1 个字节 numeric 精确数值型 numeric数据类型与decimal 型相同 decimal 精确数值型 decimal 数据类型能用来存储从-1038-1到1038-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。 范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数 money 货币型 money 数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一 smallmoney 货币型 smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之一 float 近似数值型 float 数据类型是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E+308 之间的任意数 real 近似数值型 real 数据类型像浮点数一样,是近似数值类型。它可以表示数值在-3.40E+38到3.40E+38之间的浮点数 datetime 日期时间型 datetime数据类型用来表示日期和时间。这种数据类型存储从1753年1月1日到9999年12月3 1日间所有的日期和时间数据, 精确到三百分之一秒或3.33毫秒 Smalldatetime 日期时间型 smalldatetime 数据类型用来表示从1900年1月1日到2079年6月6日间的日期和时间,精确到一分钟 cursor 特殊数据型 cursor 数据类型是一种特殊的数据类型,它包含一个对游标的引用。这种数据类型用在存储过程中,而且创建表时不能用 timestamp 特殊数据型 timestamp 数据类型是一种特殊的数据类型,用来创建一个数据库范围内的唯一数码。 一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有“time”, 但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的 Uniqueidentifier 特殊数据型 Uniqueidentifier数据类型用来存储一个全局唯一标识符,即GUID。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID 函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列 char 字符型 char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。例如,当你按邮政编码加4个字符格式来存储数据时,你知道总要用到10个字符。此数据类型的列宽最大为8000 个字符 varchar 字符型 varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char 型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。 它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度 text 字符型 text 数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符 nchar 统一编码字符型 nchar 数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍 nvarchar 统一编码字符型 nvarchar 数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间增加了一倍 ntext 统一编码字符型 ntext 数据类型用来存储大量的统一编码字符型数据。这种数据类型能存储230 -1或将近10亿个字符,且使用的字节空间增加了一倍 binary 二进制数据类型 binary数据类型用来存储可达8000 字节长的定长的二进制数据。当输入表的内容接近相同的长度时,你应该使用这种数据类型 varbinary 二进制数据类型 varbinary 数据类型用来存储可达8000 字节长的变长的二进制数据。当输入表的内容大小可变时,你应该使用这种数据类型 image 二进制数据类型 image 数据类型用来存储变长的二进制数据,最大可达231-1或大约20亿字节  学习交流群:364976091
文章
存储  ·  C#  ·  数据库
2013-02-05
...
跳转至:
数据库
249866 人关注 | 45643 讨论 | 66879 内容
+ 订阅
  • 关于自己初次使用云服务器的经验总结
  • MySQL基本查询和运算符
  • MySQL约束
查看更多 >
开发与运维
5305 人关注 | 127112 讨论 | 211351 内容
+ 订阅
  • 关于自己初次使用云服务器的经验总结
  • 注解案例--简单的测试框架
  • ECS使用体验
查看更多 >
人工智能
2643 人关注 | 10067 讨论 | 71146 内容
+ 订阅
  • 【解题周报】week1 解题周报
  • 机器学习建模高级用法!构建企业级AI建模流水线 ⛵
  • 使用ModelScope社区搭建一个录音情感识别小应用
查看更多 >