关于sql中的with(nolock)

SQL Server 中的 NOLOCK 究竟是什么意思

一般用于此类语句中:select * from t with(NOLOCK)

nolock是不加锁查询。能够读取被事务锁定的数据,也称为脏读。

说明:

使当前会话的查询,不受其他会话的事务所堵塞。

可是这样做,就读取了其他事务的“改动后未提交的”数据。

也就是同意“READ UNCOMMITTED”

以下举例说明:

在sqlserver中打开一个窗体:

写下例如以下语句:

begin tran
  update STUDENT set sname=‘111111‘
  waitfor delay ‘0:0:10‘
  update STUDENT set sname=‘222222‘
commit tran

在sqlserver中打开还有一个窗体:

写下例如以下语句:

 select * from student with(nolock)

先运行第一个窗体,10秒内运行第二个窗体(最好2秒后。不要太快。由于第一个窗体运行须要一定的时间)

会查询到的结果是sname = ‘111111‘

假设把第二个窗体的sql语句改为:

 select * from student

则,第二个窗体不会马上返回。他会等到第一个窗体运行完成之后。再进行查询,返回结果sname
= ‘222222‘

时间: 2024-10-27 00:04:24

关于sql中的with(nolock)的相关文章

SQL中的循环

DECLARE @SOInfoList TABLE ( SONumber INT, SODate datetime, Status char(1) ) INSERT INTO @SOInfoList ( SONumber, SODate, Status ) SELECT T.c.value('(SONumber/text())[1]', 'int') AS SONumber ,T.c.value('(SODate/text())[1]', 'nvarchar(50)') AS SODate ,T

在SQL 中生成JSON数据

这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数据量大的时候查询性能的问题还是分表吧)列:主键ID.引用记录主键ID.操作时间.操作类型.详细信息(里面存储的就是序列化后的值) 2.在客服端解析保存的序列化的值 但是用xml还是用json呢,这有是一个问题,显然用xml在存储过程正很容易就能生成了:SELECT * FROM TABLE FOR 

SQL中常见语句

SQL中常见语句笔记: --替换字段中的回车符和换行符 UPDATE [dbo].[MGoods_Test] SET GoodsName = REPLACE(GoodsName, CHAR(13) + CHAR(10), '') --删除表命令 DROP TABLE [dbo].[MGoods_Test] --删除表中数据命令 DELETE FROM [dbo].[MGoods_Test] --逐行删除 有日志记录 TRUNCATE TABLE [dbo].[MGoods_Test] --TRU

SQL中varchar和nvarchar有什么区别?

varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节. nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍. 两字段分别有字段值:我和coffee那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间.

SQL中使用WITH AS提高性能,使用公用表表达式(CTE)简化嵌套SQL

一.WITH AS的含义     WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分. 特别对于UNION ALL比较有用.因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可.如果WITH AS短语所定

SQL中的5种聚集函数

原文:SQL中的5种聚集函数 作为一个刚毕业进入这行的菜鸟,婶婶的觉的那种大神.大牛到底是怎样炼成的啊,我这小菜鸟感觉这TMD要学的东西这多啊,然后就给自己定了许多许多要学习的东西,可是有人又不停地给你灌输:东西不在多而要精通!我也觉得很有道理,可是怎样才能精通呢?封神之路,在哪里啊 !!! 这一天没有一个安静的心,基本是学不进去了,发现自己还是太功利了,急功近利!也许你只要学就行,管他是否能够立即让人见识到你的厉害,技术和知识这种东西也许还是要强调一个 底蕴的.既然自己最烦那种看了两篇文章就给

SQL中的等号、IN、LIKE三者的比较

SQL中的等号.IN.LIKE三者的比较SQL 中等号.IN.LIKE 三者都可以用来进行数据匹配 .但三者并不相同. 等号是用来查找与单个值匹配的所有数据: IN 是 用来查找 与多个值匹配的所有数据: 而 LIKE用来查找与一个模式匹配的所有数据. 1.等号   确切知道所要查 确切知道所要查找的内容,且为单一值时,可以使用等号运算符来进行数据比较.等号运算符中可以使用字符串.日期或数字.例如,查找名为“王静”的工作人员,可以使用等号进行匹配: SELECT name, sex, id, s

LINQ to SQL 中 Concat、Union、Intersect、Except 方法的使用

?  前言 LINQ to SQL 中需要对两个或多个数据集进行操作,比如:合并.取交集等,主要使用下面四个方法,这四个方法都是 System.Linq.IQueryable<out T> 接口的扩展方法,并且都是延迟加载方法,下面是使用的简单示例. ?  示例数据,数据表:Subject(科目表).Score(成绩表) 1.   Concat() 方法 1)   方法声明 public static IQueryable<TSource> Concat<TSource>

sql 中set和select区别

基于SQL中SET与SELECT赋值的区别详解 2012年09月06日 ? 综合 ? 共 912字 ? 字号 小 中 大 ? 评论关闭 最近的项目写的SQL比较多,经常会用到对变量赋值,而我使用SET和SELECT都会达到效果.那就有些迷惑,这两者有什么区别呢?什么时候哪该哪个呢?经过网上的查询,及个人练习,总结两者有以下几点主要区别:假定有设定变量: 复制代码 代码如下: DECLARE @VAR1 VARCHAR(1) DECLARE @VAR2 VARCHAR(2) 1.SELECT可以在