- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 5.5 数据库更新 * 插入 如何在一个表中加入新记录 INSERT INTO R A1,A2,…,An VALUES V1,V2,…,Vn ; 每成功执行一次,插入一行记录。 新记录与已有记录之间必须有唯一的键; 新记录中的外键必须满足参照完整性; 新记录中的所有非空属性都有合法值。 若 A1,A2,…,An 不是R的所有属性,则未列出的属性取其缺省值。 若 A1,A2,…,An 省略,则 V1,V2,…,Vn 按属性的缺省次序排列。 * 插入 思考题 能多次执行同一条INSERT语句吗? 一条insert指令能对多个关系插入记录吗? 另一种Insert语句: INSERT INTO R A1,A2,…, An SELECT B1,B2,…,Bn FROM ... WHERE ... * 删除 如何删除某个表中的某一部分记录? DELETE FROM R WHERE cond; 关系R中满足条件cond的记录将被删除。条件省略将删除所有记录。 例: Delete From StarsIn Where movieTitle ’Star Wars ’; Delete From Movie Where Title ’Star Wars ’; 通过外键被参照的行不能简单删除。 * 修改 如何修改某个表中某一部分记录的属性值? UPDATE R SET A1 V1, A2 V2, …, An Vn WHERE cond; 满足条件cond的每个记录的A1属性值改为V1, A2属性值改为V2, … 条件省略将修改所有记录。 例如: Update Movie Set Length Length+10; * 6.6 SQL中的事务 * 可串行化 DBMS控制的事件序列仅包含SQL语句的执行 DBMS不可能控制包含等待用户SQL语句的执行 例:航空公司为顾客提供一个选择航空座位的网络界面,界面显示空闲座位分布图,分布图从航空公司数据库中获得。 事务是一组需要一起执行的操作 事务必须表现是串行的----即一个时刻只有一个事务,相互之间没有重叠。 * 原子性 例:考虑从账户123向账户456转账100美元,通过俩个步骤进行: ⑴ 通过如下SQL语句向账户456加上100美元 UPDATE Accounts SET balance balance + 100 WHERE acctNo 456 ⑵ 通过如下SQL语句向账户123减去100美元 UPDATE Accounts SET balance balance - 100 WHERE acctNo 123 数据库操作的某些组合必须是原子的----即它们要么都执行,要么都不执行。 * 如何控制事务运行 事务的一次运行只能是下面两个结果之一: Commit提交;或Rollback退回 Commit指令提交当前事务,完成对数据的更新。 Rollback指令退回当前事务,并取消当前事务对数据已做的更新。 Commit和Rollback都结束当前事务,并自动启动下一个事务。 注意:每一条SQL指令都在某个事务中执行。 * 在多用户多任务环境中,并发事务可能引起哪些问题 同时更新同一数据 脏读dirty read 不可重复读non-repeatable read 虚行 幻象元组 phantom rows * “写锁”write lock是什么概念 某数据被一个事务修改,在该事务提交或退回之前,其他事务不能修改或删除此数据。 具体来说,事务A增加insert或修改update某行数据而未提交前,事务B不允许删除delete或修改update此行数据。 事务A 数据T 事务B UPDATE T T+10 COMMIT UPDATE T T+20 写锁:通常自动施加“写锁”,以避免并发事务同时修改同一数据 * 脏读是什么含义 当事务A修改某数据后,在提交或退回前,该数据被事务B读取,若事务A退回,则事务B读取的数据为“脏数据”,即事务B发生脏读。 事务A 数据T 事务B UPDATE T T+10 ROLLBACK SELECT T 110 脏读:事务A认为T 100;而事务B认为T 110 SELECT T 100 ? * 不可重读non-repeatable read是什么含义 事务A先读某行数据,随后事务B修改update或删除delete该行数据并提交,事务A重复再读该行数据,结果就不一致。 事务A 数据T 事务B UPDATE T T+10 SELECT T 100 不可重读:事务A在重读T之前认为T 100;而实际上已改变 SELECT T 100 ? COMMIT SELECT T 1
您可能关注的文档
最近下载
- 2024-2025学年江苏省连云港市赣榆高级中学高一(上)月考物理试卷(10月)(含答案).docx VIP
- 隋唐时期的绘画艺术.ppt VIP
- 《周杰伦全方位介绍》课件.ppt VIP
- 2024-2025学年四川省成都市石室中学高一(上)月考物理试卷(10月份)(含答案).docx VIP
- 《诗词里的科学》考试题库资料300题(含答案).pdf VIP
- 2025-2030中国氯霉素滴眼液行业市场发展趋势与前景展望战略研究报告.docx VIP
- 2024-2025学年甘肃省兰州一中高一(上)月考物理试卷(10月份)(含答案).docx VIP
- 《财经应用文写作》(第二版) 课件及习题答案 第四章 调研文书.ppt VIP
- 生活适应四年级上册 食物安全 教学课件.pptx VIP
- 食品粉碎机械设备.ppt VIP
文档评论(0)