select update delete

本文深入解析了RC(Repeatable Read)级别的SQL事务隔离性问题及锁机制,包括不可重复读、幻读、读脏数据等常见问题,并详细说明了不同操作(如select、update、delete、insert)在RC隔离级别下的行为和锁兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://www.cnblogs.com/qianyz/archive/2010/10/11/1848151.html


在RC级别下

select ,对满足条件的数据都加S锁,读取一条释放一个锁

update,先发select命令来找对应的数据,然后都加X锁,知道事务结束X锁才释放

delete 先发select命令来找对应的数据,然后都加X锁,知道事务结束X锁才释放

 insert 先把数据插入,然后在检查数据完整一致性,如果有问题就回滚

select <----  重复度矛盾  ------>update<------- 丢失修改---------->update

 

select<--------- 幻想---------> insert,delete 

 

RC下

   select会出现不可重复读和幻想,不会出现读脏数据

   delete,insert  会出现幻想

   update会出现不可重复读

 

 

锁的兼容性:

 

s---->s,u  

  ---//-->x

 

U---->s(在RC隔离下才兼容,因为读完数据后会立即释放S锁,而不是长时间占有)

   ----//--->U.X

 

X--//-->X.S,U

  


### SQL Server 中 SELECTUPDATEDELETE 的用法及示例 #### 1. SELECT 语句 `SELECT` 是用来查询数据库中的数据的核心命令之一。它可以从一个或多个表中检索指定列的数据。 以下是 `SELECT` 基本语法及其示例: ```sql -- 查询所有列 SELECT * FROM 表名; -- 查询特定列 SELECT 列名1, 列名2 FROM 表名; ``` 如果需要过滤条件,则可以使用 `WHERE` 子句来限定返回的结果集[^1]。 ```sql -- 使用 WHERE 条件筛选记录 SELECT 列名1, 列名2 FROM 表名 WHERE 条件表达式; ``` #### 2. UPDATE 语句 `UPDATE` 用于更新现有表中的数据行。其基本结构如下所示: ```sql -- 更新单个字段 UPDATE 表名 SET 字段名 = 新值 WHERE 条件表达式; -- 同时更新多个字段 UPDATE 表名 SET 字段名1 = 新值1, 字段名2 = 新值2 WHERE 条件表达式; ``` 需要注意的是,在执行 `UPDATE` 操作之前,应始终确保有合适的 `WHERE` 子句以防止意外更改整个表格的内容。 #### 3. DELETE 语句 通过 `DELETE` 可以移除满足一定条件下的一组或多组记录。它的标准形式为: ```sql -- 删除符合条件的记录 DELETE FROM 表名 WHERE 条件表达式; ``` 当未提供任何约束(即省略了 `WHERE` 部分),这将导致整张表内的全部记录被清除掉;因此务必小心处理这种情况下的指令提交行为。 另外还提到了关于外键关系里级联操作的概念——比如当我们设置了一个带有 `ON DELETE CASCADE` 或者 `ON UPDATE CASCADE` 属性的外键关联之后,一旦父表中有对应主键项遭到变动或者销毁动作发生时,子表也会自动同步做出相应的调整措施[^2]。 最后给出了一种利用触发器实现跨两张不同表之间联动删除功能的方法实例[^3]: ```sql CREATE TRIGGER TRI2 ON 表1 FOR DELETE AS BEGIN DECLARE @id INT; SELECT @id=ID FROM deleted; DELETE FROM 表2 WHERE ID=@id; END; GO ``` 以上就是有关于SQL Server环境下如何运用select update delete这三个基础却极其重要的DML(Data Manipulation Language)语句的知识点介绍以及实际应用场景举例说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值