Download presentation
Presentation is loading. Please wait.
1
数据操控与事务
2
课程目标 插入、修改和删除记录 事务和锁的概念 提交、回滚事务 数据完整性 数据操作中约束的应用
3
插入记录 记录插入 格式: insert [into] 表名 [字段列表] values(值列表)
注:1、若省略字段列表,则表示给所有字段赋值 2、值列表的个数、顺序与类型应与字段列表兼容 例如:INSERT INTO DEPT(DNAME,DEPTNO) VALUES('ACCOUNT',50);
4
批量插入记录 格式:insert into 表名 select 字段列表 from 表名 where 条件
注:insert 表和select表结果集的列数、列序、数 据类型必须要一致 例如: CREATE TABLE TEST AS SELECT * FROM EMP; insert into test as select * from emp;
5
修改记录 更新表中数据 格式:update 表名 set 字段名=值[,字段名=值……] [where 条件] 例如:
UPDATE EMP SET JOB =’MANAGER’ WHERE ENAME=’MARTIN’;
6
删除记录 删除数据 格式:delete from 表名 [where 条件] 格式: Truncate Table 表名 清空表格,保持结构
例如:DELETE FROM EMP WHERE EMPNO = 7654;
7
事务和锁的概念 事务为工作的一个逻辑单位,由一个或多个SQL语句组成。一个事务是一个原子单位,构成事务的全部SQL语句的结果可被全部提交或者全部回滚。 锁是在功能上避免用户访问正在被其它用户改变的信息,在多用户环境中,避免一些用户同时改变同样的数据 Atomicity Consistency Isolation Durability
8
ORACLE的事务管理 在ORACLE中一个事务是由一个可执行的SQL语句开始,一个可执行SQL语句产生对实例的调用。在事务开始时,被赋给一个可用回滚段,记录该事务的回滚项。一个事务以下列任何一个出现而结束。 当COMMIT或ROLLBACK(没有SAVEPOINT子句)语句发出。 一个DML语句被执行。在DML语句执行前、后都隐式地提交。 用户撤消对ORACLE的连接(当前事务提交)。 用户进程异常中止(当前事务回滚)。
9
提交事务(COMMIT) 提交一事务,即将在事务中由SQL语句所执行的改变永久化。在提交前,ORACLE已有下列情况:
在SGA的回滚段缓冲区已生成回滚段记录,回滚信息包含有所修改值的老值。 在SGA的日志缓冲区已生成日志项。这些改变在事务提交前可进入磁盘。 对SGA的数据库缓冲区已作修改,这些修改在事务真正提交之前可进入磁盘。
10
提交事务(COMMIT) 在事务提交之后,有下列情况:
对于与回滚段相关的内部事务表记录提交事务,并赋给一个相应的唯一系统修改号(SCN),记录在表中。 在SGA的日志缓冲区中日志项由LGWR进程写入到在线日志文件, 这是构成提交事务的原子事务。 在行上和表上的封锁被释放。 该事务标志为完成 。
11
回滚事务(ROLLBACK) 回滚事务的含义是撤消未提交事务中的SQL语句所作的对数据修改。ORALCE允许撤消未提交的整个事务,也允许撤消部分。 在回滚整个事务(没有引用保留点)时,有下列情况: 在事务中所有SQL语句作的全部修改,利用相应的回滚段被撤消。 所有数据的事务封锁被释放。 事务结束。
12
回滚事务(ROLLBACK) 当事务回滚到一保留点(具有SAVEPOINT)时,有下列情况: 仅在该保留点之后执行的语句被撤消。
该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除。 自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以前所获取的全部数据封锁继续保持。 该事务仍可继续。
13
保留点(SAVEPOINT) 保留点是在一事务范围内的中间标志,经常用于将一个长的事务划分为小的部分。保留点可标志长事务中的任何点,允许可回滚该点之后的工作。 使用方法: Savepoint <保存点名>; rollback [work] to [savepoint]<保存点名>;
14
数据完整性分类 实体完整性: 域完整性: 引用完整性: 保证每一行都能被由称为主键的属性来标识 保证在效范围内的值才能存储到相应列中
确保外键的值必须与相关的主键相匹配
15
数据完整性 数据完整性保证了在数据库中存储数据的一致性、相容性和正确性。 作用: 防止数据库中存在不符合语义的数据。
防止错误信息的输入与输出。 实现数据完整性的主要方式是约束。 约束类型分为: 值的约束(类型、范围、精度… ) 数据之间联系的约束(属性之间 :主码、引用… )
16
约束的类型 主键约束 primary key 确保字段值不重复不为NULL 外键约束 foreign key 确保字段值必须来自于指定表
非空约束 NOT NULL 确保字段值不为NULL 检查约束 check 确保字段值的取值范围 唯一约束 unique 确保字段值不重复
17
创建主键约束 例如 CREATE TABLE STU (STUNUM number(6), CODE char(3), GRADE number(3), Constraint p_stunumcode primary key (STUNUM, CODE)); 或者 alter table STU add constraint p_stunumcode primary key(STUNUM, CODE );
18
创建外键约束 例如 CREATE TABLE STU_bak (STUNUM number(6), CODE char(3),
GRADE number(3), constraint f_stunumcode foreign key(STUNUM,code) references STU(STUNUM,code)); 或者 alter table STU_bak add constraint f_stunumcode foreign key(STUNUM,code) references STU(STUNUM,code) ;
19
创建非空约束 例如 alter table STU modify GRADE not null; 主键无须再创建非空约束
20
创建检查约束 例如 CREATE TABLE STU1 (STUNUM number(6), CODE char(3),
GRADE number(3) check(GRADE between 1 and 10)); 或者: alter table 表名 add [constraint 约束名] check (字段检查表达式)
21
创建唯一约束 例如 alter table STU add constraint u_GRADE unique(GRADE); 或者:
add [constraint 约束名] unique(字段名)
Similar presentations