首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL Server中GUID

1、在 SQL Server 中使用 GUID 如果在 SQL Server 定义中将类型指定为 uniqueidentifier,则值就为 GUID 类型。...SQL Server 中 NewID() 函数可以产生 GUID 唯一值,使用此函数几种方式如下: 1) 作为默认值 将 uniqueidentifier 默认值设为 NewID(),这样当新行插入中时...2)使用 T-SQLT-SQL 中使用 NewID()函数,如“INSERT INTO Table(ID,… ) VALUES(NewID(),…)”来生成此列 GUID 值。...3、GUID 优缺点 1) 优点 同 IDENTITY 相比,uniqueidentifier 可以通过 NewID() 函数提前得知新增加行 ID,为应用程序后续处理提供了很大方便。...便于数据库初始化,如果应用程序要加载一些初始数据, IDENTITY 处理方式就比较麻烦,而 uniqueidentifier 则无需任何处理,直接用 T-SQL 加载即可。

4.6K20

T-SQL基础(五)之增删改

在前面的文章中对T-SQL查询做了基本总结,接下来我们看下SQL中另外一个常用操作——数据修改。...VALUES (NEWID(),N'xfh',26,NEWID(),NEWID()), (NEWID(),N'雪飞鸿',28,NEWID(),NEWID()); BULK INSERT 该语句用于将文件中数据插入到一个现有中...我们可以通过创建一个虚拟,带有指向生产外键(甚至可以禁止外键以防影响性能),依此来避免TRUNCATE误操作。 MERGE MERGE是标准SQL语句,T-SQL对其进行了一定扩展。...(), -- Id - uniqueidentifier N'临时地址', -- ShortAddress - nvarchar(50) N'上海市,临时地址' -- LongAddress...推荐阅读 T-SQL基础(一)之简单查询 SQL Server中锁与事务隔离级别 SELECT INTO 和 INSERT INTO SELECT 两种复制语句

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

T-SQL基础(五)之增删改

在前面的文章中对T-SQL查询做了基本总结,接下来我们看下SQL中另外一个常用操作——数据修改。...) VALUES (NEWID(),N'xfh',26,NEWID(),NEWID()), (NEWID(),N'雪飞鸿',28,NEWID(),NEWID()); BULK INSERT 该语句用于将文件中数据插入到一个现有中...DELETE T-SQL提供了两种删除数据方式:DELETE与TRUNCATE,删除操作也是非幂等,与UPDATE一样,我们可以借助事务防止误操作。...我们可以通过创建一个虚拟,带有指向生产外键(甚至可以禁止外键以防影响性能),依此来避免TRUNCATE误操作。 MERGE MERGE是标准SQL语句,T-SQL对其进行了一定扩展。...(), -- Id - uniqueidentifier N'临时地址', -- ShortAddress - nvarchar(50) N'上海市,临时地址' -- LongAddress

1.1K30

SQL Server 2008新特性——FILESTREAM

使用FILESTREAM存储时,需要注意以下内容: 如果包含FILESTREAM,则每一行都必须具有唯一行ID。 不能嵌套FILESTREAM数据容器。...(7)创建了FILESTREAM文件组后便可创建和修改,指定某varbinary(max)类型包含FILESTREAM数据。...例如创建Files,该包含FileID和FIleContent,具体脚本如代码: CREATE TABLE Files ( FileID UNIQUEIDENTIFIER ROWGUIDCOL NOT...对于T-SQL访问FILESTREAM数据来说,FILESTREAM是完全透明,也就是说,T-SQL仍然使用一般访问varbinary(max)数据方式访问,并不会因为是FILESTREAM而有所不同...例如向Files中插入数据、修改数据和删除数据SQL脚本如代码: INSERT INTO Files --插入测试数据 VALUES (newid (),1, CAST('TestFileStream1

1.3K30

SQL Server 性能优化之——T-SQL TVF和标量函数

作为一个选择,可以创建临时临时上创建适当聚集索引或非聚集索引。 详情如下: 创建适当临时。 根据T-SQL创建适当聚集索引和非聚集索引。 将TVF数据插入到临时中。...用临时和相关替换每一个TVF。 在查询语句执行结束后,删除临时。                 注意,临时性能提升是超过参数,在上一篇博客中提到参数不支持索引。 例子: a....临时 使用临时,但是这个解决方案有一点不同于TVF情况,这里希望完全放弃标量函数并且也不去直接使用内部T-SQL代码。 2)....这个功能可以通过下面步骤添加: 增加一个新计算存储标量函数结果。 启用这个计算持久化功能。 在(不管是主键还是包含)上设置适当索引。             ...如果数据类型不精确,可以添加这些列为索引包含一部分,但不是主键一部分。 3).

1.5K51

SQL Server 2008 FILESTREAM特性管理文件

使用FILESTREAM存储时,需要注意以下内容: 如果包含FILESTREAM,则每一行都必须具有唯一行ID。 不能嵌套FILESTREAM数据容器。...在启用了数据库实例FILESTREAM后,接下来就需要设置数据库FILESTREAM和创建具有FILESTREAM数据: 6、对应新建数据库,则在创建数据库时创建FILESTREAM文件组,...7、创建了FILESTREAM文件组后便可创建和修改,指定某varbinary(max)类型包含FILESTREAM数据。...例如创建Files,该包含FileID和FIleContent,具体脚本如代码: CREATE TABLE PhotoAlbum( PhotoId int PRIMARY KEY, RowId...对于T-SQL访问FILESTREAM数据来说,FILESTREAM是完全透明,也就是说,T-SQL仍然使用一般访问varbinary(max)数据方式访问,并不会因为是FILESTREAM而有所不同

1.2K60

复杂sql分组查询 ( pivot)

一个数据表里面字段有年、月、日、金额、支付方式等字段,然后现在想写个sql语句,把每一天每种支付方式金额(支付方式有多重)排在同一行, 最后在增加一小计当前所有支付方式金额。...这可为难了我了,简单增删改查左右链接sql语句我还会写,这个稍微复杂一点我就不知道如何下手了。该怎么分组,然后把行增加为呢? 去找度娘搜时候,都不知道怎么描述自己想搜关键字。...原文链接:http://www.cnblogs.com/tandaxia/p/4888623.html 补充:关于一个循环插入数据sql语句问题 需求:随机从一个查出5条ID,然后插入到另外一个中。...实现:刚开始使用游标,后面头说效率不好,影响性能,然后改成临时插入结果集。...where ID@ID order by newid() -- 随机获取5个ID insert into tbl_Record (FromID, ToID, [Status],

3.4K30

如何生成比较像样假数据

然后将产生两个字段存入临时,用两个临时进行交叉联接,得到两个字段所有组合,然后再随机选出一定条数数据,用选出随机数据将原有数据替换即可。 示例 以一个HR系统为例。...中文姓名以第一个字为A,剩下字尾B,英文名以第一个单词为A,剩下单词为B,将拆分数据存入临时,具体SQL语句如下: select SUBSTRING(Name,1,1) A,SUBSTRING...B进行交叉联接,得到姓名组合全集,然后随机选出与源数据相同数据量姓名存入临时临时中有ID流水号字段)。...优化 这里需要注意是第2步,使用了CROSS JOIN操作,也就是求两个笛卡尔积,如果一个中有10W条数据,那么将会产生100亿行结果,然后再进行排序,那将是近乎不可能完成任务,所以必须减少进行笛卡尔积数据量...order by NEWID() --随机选取行 这样最多只是500*500条记录,进行排序选取随机行将会很快完成。

1.2K30

order by居然不能直接在union子句中使用

今天一个群中兄弟问一个问题,说有一个中有很多数据,其中有个字段type,希望从随机取出10条记录,其中有5条type=1另外5条type=0,比如下图这样: 我一想,这还不简单,按照要求,...每个取top 5,既然是随机取,那么就order by newid()就是了三,然后把所有数据union起来就得了。...type=0 order by newid() 但是那个兄弟说不对,语法有错,我乍一看,好像没有问题把,于是让他把定义发给我,我在本机试一下,定义是: CREATE TABLE [dbo]....也就是说在union子句中查询不能用order by。但是这儿我必须要用order by啊,要不然我怎么取出随机5条记录?不用union可以不?...可以啊,创建一个临时,将查询出来5条数据插进去,另外5条也是。然后再查询临时,但是能不使用临时就尽量不要使用临时,何必弄那么复杂。 又要用order by 又要用union,怎么办?

76410

那些年我们写过T-SQL(下篇)

新增序列对象是标准SQL功能,它与标识属性不同,是一个不会绑定到特定对象,需要时查询获取即可。...接下来介绍数据库中可以锁定资源,包括行、页、(对象)、数据库,按序锁定资源粒度越来越大。行驻留在页中,而是包含或索引数据物理数据块。...可编程对象比较多,包括变量、批、流元素、游标和临时、用户定义函数、存储过程、触发器、动态SQL等概念,部分内容使用场景较少,通过表格简述之,但对将对临时这一常见并较难理解概念进行细致介绍。...错误处理 BEGIN TRY END TRY BEGIN CATCH IF XXX ELSE THROW END CATCH 临时 T-SQL支持3中类型临时,分别是本地临时、全局临时变量...本地临时仅对创建它会话可见,全局临时对所有会话可见,变量仅对当前会话的当前批有效,粒度更小,在T-SQL它也是实际(易误解为只存在内存)。

2K50

T-SQL语句基本概念语法

constraint):某默认值 外键约束(foregin key constraint):用于两间建立关系,需要制定引用主表,哪个是外键,就修改哪个 district 去重 局部变量...,索引中包含指向数据存储位置指针,可以有多个,小于249个 优点:加快访问速度       加强行唯一性 缺点:带索引在数据库中需要更多地存储空间       操纵数据命令需要更长处理时间...减少网络流量 触发器(Trigger)是在对表进行插入、更新或删除操作时自动执行存储过程 在触发器触发时:系统自动在内存中创建两张临时,deleted或insert 这两张为只读,不允许修改...,触发器执行完成后,自动删除 inserted:     临时保存了插入或更新后记录行,可以从inserted中检查插入数据是否满足业务需求,如果不满足,则向用户报告错误,并回滚插入操作 deleted...:     临时保存了删除或更新前记录行,可以从中检查被删除数据是否满足业务需求,如果不满足,则向用户报告错误,并回滚插入操作

1.4K20

SQLServer中CTE通用表表达式

其中一种情形是需要编写在 FROM 子句内使用派生(也称为内联视图) Transact-SQL (T-SQL) 查询。...此抽象使由该视图表征行集更容易访问,而且无需在临时中复制或存储数据。   假定权限许可,这个视图还能在整个数据库中被重复使用。...另外,CTE 是语言级别的构造,也就是说 SQL Server 不会在内部创建临时或虚拟。每次在紧随其后查询中引用 CTE 底层查询时都会调用它。...递归 CTE 必须包含定位点成员和递归成员。这两种成员必须拥有相同数量,而且同属于这两种成员必须具有匹配数据类型。...结束语   比起那些在查询中使用复杂派生或引用那些在 T-SQL 批处理外部定义视图方案,CTE 使得编写 T-SQL 更具可读性。

3.8K10

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

Tip:使用PIVOT运算符一般不直接把它应用到源(本例中Orders),而是将其应用到一个表表达式(该表表达式只包含透视转换需要3种元素,不包含其他属性。)...换句话说,将透视每个源行潜在地转换成多个行,每行代表源透视一个指定值。   ...因此,我们可以创建一个虚拟(Dummy Table),让虚拟包含一个指向产品外键,这样就可以保护产品了。     ...8.4 临时   有时需要把数据临时保存到中,而且在有些情况下,我们可能不太想要使用永久性。在这种情况下,使用临时可能会更方便。   ...,而且也没有活动在引用全局临时时,SQL Server才会自动删除相应全局临时

8.9K20

Transact-SQL基础

以一个数字符号开头标识符表示临时或过程。以两个数字符号 (##) 开头标识符表示全局临时对象。虽然数字符号或两个数字符号字符可用作其他类型对象名开头,但是不建议这样做。...2.3 Transact-SQL 数据类型 包含数据对象都有一个相关联数据类型,它定义对象所能包含数据种类,例如字符、整数或二进制。下列对象具有数据类型: 和视图中。 存储过程中参数。...应将这些数据作为一个数据块存储起来,而不是集成到数据多个中。为此,可以创建一个 text 数据类型。...2.3.12 timestamp和rowversion 每个数据库都有一个计数器,当对数据库中包含 rowversion 执行插入或更新操作时,该计数器值就会增加。此计数器是数据库行版本。...2.3.14 table table 是一种特殊数据类型,用于存储结果集以进行后续处理。主要用于临时存储一组作为值函数结果集返回行。可将函数和变量声明为 table 类型。

3.4K20

浅谈 SQL Server 查询优化与事务处理

(注意:一个中只能包含一个聚集索引) 4、非聚集索引:建立在索引页上,在查询数据时可以从索引中找到记录存放位置,聚集索引比非聚集索引有更快数据访问速度。 5、复合索引:可以将多个组合为索引。...select 语句中选择列表中也有一个 TOP 子句 INTO 关键字 引用临时变量 创建视图: create view netstudent as select Sname,sex,Class...用于强制业务规则,可以定义比用 CHECK 约束更为复杂约束 通过事件触发而被执行 触发器分为三类: INSERT触发器:当向中插入数据时触发 UPDATE触发器:当更新中某、多时触发 DELETE...触发器:当删除中记录时触发 inserted和deleted 由系统管理,存储在内存而不是数据库中,因此,不允许用户直接对其修改 临时存放对表中数据行修改信息 当触发器工作完成,它们也被删除...举个例子,以转账为准 首先创建名为bank: ? 为 CurrentmoneyCheck约束: ?

1.9K50

【手记】小心在where中使用NEWID()大坑

这个表达式: ABS(CHECKSUM(NEWID())) % 3 --把GUID弄成正整数,然后取模 是随机返回0、1、2这三个数,不可能返回其它东西,但是如果把它用在where里面,就会发生很神奇事情...,比如这个查询: --创建一个只有13行,存放0,1,2三个值 DECLARE @t TABLE(Col1 int) INSERT @t SELECT 0 UNION ALL SELECT 1 UNION...ALL SELECT 2 --然后随机查一行 SELECT * FROM @t WHERE Col1 = ABS(CHECKSUM(NEWID())) % 3 按说每次执行会且只会得到一个0~2数字...,但多跑两次,你会得到各种神奇结果,有返回两行,有不返回,肥肠蹊跷,一度让我怀疑人生,直到发现我不是一个人: https://stackoverflow.com/questions/38498513.../odd-sql-server-tsql-query-results-with-newid-in-the-where-clause 所以无法解决,只能插旗备忘,以后绕开,希望能给已经这样用或可能这样用朋友提个醒

68530
领券