`
fehly
  • 浏览: 248682 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DML与事务控制

阅读更多

数据库操作语言DML

数据操作语言DML(Data Manipulation Language)用于操作数据库中的数据,包括:

出入新数据

修改已有的数据

删除不再需要的数据

数据合并

insert语句

insert语句用于向表中插入数据

语法:

insert into table[(column[,column...])]
values(value[,value...])
-----------------------------------------------------------------
insert into dept values(88,'市场部','北京');
insert into dept (deptno,dname) values(99,'技术部');

说明:

insert语句每次只能向表中插入一条记录

缺省字段名列表时,应为新插入记录中的每个字段设定新值

也可在insert语句中指定赋值字段列表只为部分字段显式设定新增,其余字段被缺省赋值为null

表间数据拷贝

可以在insert语句中使用子查询,实现表间数据拷贝:

insert into depta(id,name) select deptno,dname from dept;

说明:

此时不必再给出values子句

子查询中的值列表应与insert子句中的字段列表相对应

updata语句

updata语句用于更新表中数据

update   table
set column = value[,column=value,...]
[where condition];
--------------------------------------------------------------
update emp set sal=sal+88;
update emp set sal=sal+1000,comm=comm+0.7
where empno=7778;

说明:

update语句每次可更新多条记录

可以使用where子句限定要更新的记录,如果缺省where子句,则更新表中的所有记录

delete语句

delete语句用于从表中删除数据

delete [from] table
[where condition];
---------------------------------------------------
delete emp;
delete from emp;
delete emp where empno=7778;
 

说明:

delete语句每次可以删除多条记录

可使用where子句限定要删除的记录,如果缺省where子句,则删除表中的所有记录

merge语句

merge语句用于进行数据合并——根据条件在表中执行行数据的修改或插入操作,如果要插入的记录在目标表中已经存在,则执行更新操作,否则执行插入.

merge into table [alias]
using (table | view | sub_query) [alias]
on(join_condition)
when matched then
         update set col1=col1_val,col2=col2_val
when not matched then
         insert(column_list)values(column_values);

 

create table test1(
eid number(10),
name varchar2(20),
birth date,
salary number(8,2)
);
insert into test1 values(1000,'张三','20-5-76',3300);
insert into test1 values(1001,'李四','12-3-90',6200);

create table test2(eid number(10),name varchar2(20),birth date,salary number(8,2));

select * from test2;

merge into test2
using test1
on(test1.eid=test2.eid)
when matched then
update set name=test1.name,birth,salary=test1.salary
when not matched then
insert(eid,name,birth,salary)values(test1.eid,test1.name,test1.birth,test1.salary);

select * from test2;

事务控制 

事务(Transaction)

组成单个逻辑工作单元的一系列操作被称为事务。

数据库事务组成

0~多条DML语句

1条DDL(Data Define Language)语句

1条DCL(Data Control Language)语句

事务控制

通过将一组相关操作组合为一个要么全部成功,要么全部失败的逻辑工作单元,以简化错误恢复,提高应用程序的可靠性.

事务必须满足的ACID属性

原子性(Atomicity)

一致性(Consistency)

隔离性(Isolation)

持久性(Durability)

事务的开始和结束

事务的开始于第一条可执行语句

事务结束:

遇到commit或rollback语句

遇到DDL或DCL语句

用户会话结束

系统崩溃

事务的提交和回滚

显式的提交和回滚操作时为了更好地保证数据的一致性.

下述情况下事务会被自动提交

执行一个DDL语句

执行一个DCL语句

正常结束会话

会话异常终止/系统崩溃时事务会被自动回滚

SqlPlus的自动提交

Sql Plus执行sql语句时可以设置是否自动提交,缺省设置为非自动提交.

查看设置:

show autocommit;

     autocommit OFF

     autocommit IMMEDIATE

改变设置:

set autocommit on;

set autocommit off;

提交/回滚前数据状态

  • 当前事务中数据状态的改变时可以恢复的
  • 当前事务中的DML操作结果只对当前用户(会话)可见,其他用户(会话)看不到当前事务中数据状态的改变,直到当前事务结束.
  • 当前事务中DML语句所涉及到的行辈锁定,其他用户(会话)不能对其进行修改操作.

事务提交后数据状态

  • 数据的修改永久生效,不可再撤销
  • 数据以前的状态永久性丢失,无法恢复
  • 所有的用户(会话)都将看到操作后的结果
  • 记录锁被释放,其他用户对这些进行修改操作
  • 事务中的保存点(Savepoints)被清除

事务回滚后数据状态

  • 数据的修改被撤销
  • 数据恢复到修改前的状态
  • 记录锁被释放

保存点

通过保存点在当前事务中创建标记,将来可回退到指定的标记(保存点)处,实现事务的部分回滚.

insert into dept values(12,'Peter','Beijing');
insert into dept values(22,'Mark','Shanghai');
savepoint p1;
insert into dept values(44,'Tom','Shenzhen');
------------------
select  * from dept;

rollback to p1;
select * from dept;

 

分享到:
评论

相关推荐

    v512工作室_张利国_Java高端培训系列教材_Oracle实用教程_06章_DML与事务控制

    ### Oracle实用教程:DML与事务控制 #### 一、章节概述 本章节主要介绍了Oracle数据库中的数据操作语言(Data Manipulation Language, DML)及其相关的事务控制概念。通过本章的学习,读者能够掌握如何使用DML语句...

    oracle 数据操作与事务控制

    Oracle 数据操作与事务控制是数据库管理中的核心概念,主要涉及如何在Oracle数据库中添加、修改和删除数据,以及如何确保这些操作的完整性和一致性。在本章中,我们将深入探讨Oracle的数据操作语言(DML)和事务控制...

    DDL与DML详解

    这对于并发控制和事务处理非常重要。 5. `LOCK TABLE`:锁定整个表,阻止其他用户执行DML操作,通常用于确保数据一致性。 在Oracle中,DML操作是事务的一部分,可以使用`COMMIT`提交更改,或者使用`ROLLBACK`撤销未...

    oracle(四)数据库设计、建表、DML、事务.pdf

    事务控制语句如BEGIN、COMMIT、ROLLBACK用于管理和提交事务。 在开发后期发现数据库设计问题确实会影响项目进度,可能导致需要重构表结构,这将影响到已有的数据和应用程序。因此,良好的数据库设计是减少后期问题...

    第8章 数据操作与事务控制.pdf

    ### 第八章 数据操作与事务控制 #### 一、章节概览 本章重点在于介绍数据操作语言(DML)中的基本概念以及事务控制的基本原理和技术。通过学习本章,学员将能够掌握如何使用SQL语句来执行数据的插入、更新、删除等...

    Oracle数据库学习笔记

    Oracle数据库学习笔记,包括课程PPT(数据库基础,简单查询,单行多行函数,多表连接,子查询,高级子查询,集合运算,层次查询,DML与事务控制,数据库的网络连接,创建维护表,约束,视图,序列索引和同义词,用户...

    数据库开发 Oracle数据库 SQL开发教程 第11章 数据操作与事务控制(共52页).pdf

    在"数据库开发 Oracle数据库 SQL开发教程 第11章 数据操作与事务控制"中,我们深入探讨了如何使用SQL来执行对数据的操作以及事务管理。 数据操作语言(DML)是SQL的核心组成部分,主要用于对数据库中的数据进行增加...

    Oracle DDL,DML,DCL,TCL 基础概念

    事务控制语言(TCL)用于管理由 DML 语句所做的更改,允许将多个 DML 语句组合成一个逻辑事务。 - **COMMIT**:保存事务所做的工作。 - 示例:`COMMIT;` - **SAVEPOINT**:标识事务中的一个点,以便稍后回滚到该点...

    oracle事务1.ppt

    事务控制是数据库管理系统中最重要的部分之一,它确保了数据库的一致性和可靠性。 事务的特性: * 原子性(A-Atomicity):事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全...

    DDL与DML.pdf

    锁定表(LOCK TABLE)是另一种控制并发访问的机制。在Oracle中,你可以使用`LOCK TABLE`语句以共享或独占模式锁定表格,限制其他用户对表格的DML操作。然而,过度使用锁定可能导致死锁,即两个或多个事务相互等待...

    Oracle事务与锁定

    Oracle事务与锁定是数据库管理系统中的核心概念,它们对于确保数据的完整性和一致性至关重要。事务是数据库操作的基本单元,它封装了一系列的数据库操作,确保这些操作要么全部成功,要么全部失败,从而保持数据库的...

    oracle事务与死锁

    事务控制主要涉及三个命令: 1. `COMMIT`:用于提交事务。提交后,所有对数据库的更改将被永久保存,其他用户可以看到这些更改。 2. `ROLLBACK`:用于回滚事务。执行回滚后,所有自事务开始以来对数据库的更改将被...

    DQL,DML, DDL,DCL区别.pdf

    事务控制确保数据的一致性和完整性,通过`COMMIT`来保存更改,`ROLLBACK`来撤销更改,以及在执行DML操作时使用`SELECT FOR UPDATE`来防止并发冲突。 了解和熟练掌握DQL、DML、DDL和DCL是数据库管理的基础,它们共同...

    SQL语言总结(1. SQL语句分类(五类)2. 数据库事务由以下的部分组成3. 事务的开始与结束:4.事务进程)

    本文将深入探讨SQL语句的五类分类,数据库事务的组成、开始与结束,以及事务进程。 首先,SQL语句主要分为五类: 1. **DML(Data Manipulation Language)**:用于操作数据库中的数据。包括`INSERT`(插入数据)、...

    Java中各种事务管理技术的总结

    在**Oracle**数据库中,DML语句默认开启事务,直到提交或回滚。提交事务会将更改永久化,释放锁定资源;回滚事务则撤销未提交的修改,释放封锁。保留点(Savepoint)允许在事务中设置多个恢复点,方便局部回滚。 **...

    SQL事务实验.docx

    1. **事务的定义与使用**:通过`BEGIN TRANSACTION`开始一个事务,`COMMIT TRANSACTION`或`ROLLBACK TRANSACTION`来提交或回滚事务。例如,在更新学生信息或调整成绩时,使用事务可以确保操作的原子性和一致性。 2....

    oracle事务.pptx

    事务控制是数据库管理系统的核心之一,目的是为了确保数据库操作的安全、可靠和高效。 事务的特性: * 原子性(A-Atomicity):事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么...

    mysql事务学习资料(PPT+源码)

    4. **事务控制语句**:MySQL提供了一些控制语句来管理事务,如`BEGIN`、`START TRANSACTION`(等同于`BEGIN`)、`COMMIT`、`ROLLBACK`、`SAVEPOINT`和`RELEASE SAVEPOINT`等。 5. **事务隔离级别**:MySQL支持四种...

    oracle操作数据DML语句.pptx

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导...理解并运用事务控制,可以确保数据的一致性和完整性。在实际工作中,结合子查询和交互式脚本,可以实现更复杂的数据库操作。

Global site tag (gtag.js) - Google Analytics