第八章 修改表的内容
8.13在列值中使用单引号和双引号
指定新顾客姓为O’Malley,注意性中字母O后面使用了两个单引号:
Insert into costomers values (9,’O’’Malley’,NULL,NULL);
下面这个例子指定新产品的名称是The”Great”Gatsby;
Insert into products values(13,1,’The”Great”Gatsby’,NULL,12.99);
8.1.4
在INSERT语句中,可以不使用列值,而是使用查询从一个表向另外一个表复制行;此时要求原表和目标表的列数和列的类型必须匹配。
Insert into customers2 (customer_id,first_name)
Select 1, first_name
From customers
Where customer_id=1;
8.2
The RETURNING INTO clause allows us to return column values for rows affected by DML statements.
8.5使用默认值
create table order_status(
order_status_id integer
constraint default_example_pk primary key,
status varchar2(20) default 'Order placed' NOT NULL,
last_modified date default sysdate);
在UPDATE语句中,可以使用default关键字修改列的值:
update order_status set status=default where order_status_id=3;
8.6使用MERGE合并行
Oracle引入了MERGE语句,它可以用来将一个表中的行合并到另外一个表中。
MERGE INTO products p
USING product_changes pc ON(
p.product_id=pc.product_id)
WHEN MATCHED THEN
UPDATE
SET
p.product_type_id=pc.product_type_id,
p.name=pc.name,
p.description=pc.description,
p.price=pc.price
WHEN NOT MATCHED THEN
INSERT(
p.product_id,p.product_type_id,p.name,p.description,p.price)
values(pc.product_id,pc.product_type_id,pc.name,pc.description,pc.price);
8.7数据库事务
8.7.2事务的开始与结束
事务是用来分割数据库活动的逻辑工作单元。事务既有起点,也有终点:当下列事件发生时,事务就开始了:
连接到数据库上,并执行第一条DML语句。
前一个事务结束后,又输入了另外一条DML语句。
当下列事件之一发生时,事务就结束了:
执行COMMIT或ROLLBACK语句
执行一条DDL语句,例如CREATE TABLE语句;在这种情况下,会自动执行COMMIT语句。
执行一条DCL语句,例如GRANT语句;在这种情况下,会自动执行COMMIT语句。
断开与数据库的连接。在退出SQL*Plus时,通常会输入EXIT命令,此时会自动执行COMMIT语句。如果SQL*Plus被意外终止了(例如运行SQL*Plus的计算机崩溃了),那么就会自动执行ROLLBACK语句。这适用于任何会访问数据库的程序。例如,如果编写了一个可以访问数据库的java程序,而这个程序崩溃了,那么就会自动执行ROLLBACK语句。
执行了一条DML语句,该语句却失败了;在这种情况下,会为这个无效的DML语句执行ROLLBACK语句。
8.7.3保存点
在事务的任何地方都可以设置一个保存点(savepoint),这样可以将修改回滚到保存点处。
8.7.4事务的ACID特性
事务有四个基本的特性:
原子性(atomicity),事务必须成组地提交或回滚。
一致性(consistency)事务必须确保数据库的状态保持一致,这就是说事务开始时,数据库的状态是一致的;在事务的结束时,数据库的状态也必须是一致的。
隔离性(isolation)多个事务可以独立运行,而不会彼此产生影响。
持久性(durability)一旦事务被提交之后,数据库的变化就会被永远保留下来。
8.7.6事务锁
要支持并发事务,Oracle数据库必须确保表中的数据一直有效。这可以通过(lock)来实现。
理解默认的加锁机制的最简单的方法如下:读程序(reader)不会阻塞读程序;写程序(writer)不会阻塞读程序;只有在试图对相同的行进行修改时,写程序才会阻塞写程序。
8.7.7事务的隔离级别
幻像读取(insert一条新的数据再读)
不可重复读(update数据后再读)
脏读(在回滚段里读取数据)
Oracle数据库支持READ COMMITTED和SERIALIZABLE两种事务隔离性级别
COMMITTED允许幻像读和不可重复读,但是不允许脏读
SERIALIZABLE幻像读,不可重复读,脏读都不允许
事务隔离性级别可以使用SET TRANSACTION 语句设置。例如,下面这个语句就是将事务隔离性级别设置为SERIALIZABLE:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
8.8查询闪回
闪回操作可以根据一个时间值或系统变更号(system change number,简称SCN)进行。
数据库使用SCN来跟踪对数据进行的修改,因次可以使用它来闪回到数据库中一个特定的SCN时的状态。
分享到:
相关推荐
线路基础第八章修改.pptx
财务管理第八章修改海关关税制度.pptx
以上就是根据《Linux教程第三版》孟庆昌老师第八章的内容总结的关键知识点。这些知识点涵盖了系统管理员的基本职责、文件权限管理、用户账号管理、磁盘空间管理和系统初始化等方面的重要内容。对于学习和掌握Linux...
第6章至第8章的作业内容是学习过程中的关键实践部分,旨在巩固理论知识,提升实际编程能力。以下是这三个章节可能涉及的主要知识点: **第6章:Java面向对象编程(OOP)基础** 1. **类与对象**:理解类作为对象的...
【J2EE第八章PPT】的内容主要围绕Spring框架的核心特性——依赖注入(Dependency Injection,简称DI)和面向方面编程(Aspect-Oriented Programming,简称AOP)展开,旨在帮助开发者理解和掌握Spring如何管理和组装...
本章我们将深入探讨如何使用SQL语句来操作数据。 1. **SQL基本结构** SQL语句通常包括SELECT、INSERT、UPDATE、DELETE等关键字,它们分别用于查询、插入、修改和删除数据。例如,`SELECT * FROM table_name`用于...
第8章 数据分组与汇总 第9章 多表联接 第10章 子查询 第11章 修改数据 第12章 全文索引查询 第13章 规划索引 第14章 创建和维护索引 第15章 实现视图 第16章 实现存储过程 第17章 实现用户定义函数 第18章 实现...
【财务管理第八章财务会计报告】主要讲解了财务会计报告的基本概念、分类、构成、作用以及编制要求,同时深入探讨了资产负债表的相关知识。 财务会计报告是企业对外展示其财务状况、经营成果和现金流量的重要文件,...
第8章 Visual C# 2008与文件 案例1 动态创建文件并输入文件内容 案例2 动态打开和保存文件 案例3 动态删除文件及清空回收站 案例4 动态创建和删除文件夹及显示其是否存在 案例5 动态获取文件夹中的文件 案例6 ...
软件工程作业第八章答案 软件工程基础的第八章主要讨论软件维护的相关知识点。软件维护是软件生命周期中非常重要的一部分,涉及到软件产品的可维护性、可测试性、可修改性、可移植性和可重用性等方面。 软件的可...
《第八章程序设计基础》PPT课件主要涵盖了程序设计的基本概念、操作方式以及常用命令。以下是该章节涉及的关键知识点: 1. **程序设计基础**: - 程序设计涉及建立和修改程序文件,以实现特定的功能,如处理数据、...
第八章专注于内存管理,这是操作系统核心的一个关键领域,对于理解系统的性能和稳定性至关重要。以下是对这一章内容的详细解读。 在Linux内核中,内存管理的主要目标是有效地分配和回收内存,以满足不同进程的需求...
《北大青鸟C#数据库第八章:超市管理系统详解》 在计算机科学领域,尤其是在软件开发中,管理系统是一种常见的应用类型,旨在帮助企业或组织自动化管理其业务流程。本篇将聚焦于"第八章超市管理系统",这是一个由...
### 模拟电子技术基础(第四版)第8章知识点解析 #### 一、基础知识概述 本章节主要探讨了波形的发生与信号的转换技术,包括正弦波振荡电路和非正弦波振荡电路的基本原理、设计方法以及相关的应用实例。通过对本章节...
《锋利的JQUERY》是一本深入探讨jQuery技术的书籍,其第八章的实例下载提供了丰富的实践案例,帮助读者巩固和提升在jQuery方面的技能。jQuery是JavaScript的一个库,以其简洁的API和强大的功能深受Web开发者喜爱,...
第8章 添加特性 第9章 无法将类放入测试用具中 第10章 无法在测试用具中运行方法 第11章 修改时应当测试哪些方法 第12章 在同一地进行多处修改,是否应该将相关的所有类都解依赖 第13章 修改时应该怎样写测试 第14章...
【北大青鸟 ACCP5.0 S2 C# 第八章课后阶段和作业答案】是针对北大青鸟教育机构的ACCP5.0第二学期(S2)C#编程课程第八章的学习材料,旨在帮助学生巩固和检验他们在学习过程中的理解和掌握程度。这一章节可能涵盖了C#...
在Oracle学习的第八章中,我们将聚焦于两个核心概念:触发器(Triggers)和内置程序包(Built-in Packages)。这两个概念是Oracle数据库开发中的重要组成部分,它们扩展了SQL的功能,为数据库应用提供了更高级别的...