一 数据库的事务处理
定义:事务是一组相关的数据改变的逻辑集合。在一个事务中的数据改变(DML)保持着一致的状态,数据的改变同时成功或者同时失败。
二 数据库的事务由下列语句组成
一组DML语句,修改的数据在他们中保持一致
一个 DDL (Data Define Language) 语句
一个 DCL (Data Control Language)语句
1、开始于第一个执行的语句
2、结束于:
用户执行COMMIT 或 ROLLBACK
单个的DDL or DCL 语句
用户连接异常错误,或者用户断开连接
系统崩溃
COMMIT和 ROLLBACK可以显示的控制事务。
好处:
1、保证数据一致性,修改过的数据在没有提交之前
是不能被其他用户看到的。
2、在数据永久性生效前重新查看修改的数据
3、将相关操作组织在一起,一个事务中相关的数
据改变或者都成功,或者都失败。
1、当下列情况发生时事务自动隐式提交:
执行一个 DDL 语句
执行一个DCL 语句
从 SQL*Plus正常退出(EXIT 或者 QUIt)
2、当从SQL*PLUS中强行退出或连接异常中断时,事务自动回滚
以前的数据可恢复
当前的用户可以看到DML操作的结果
其他用户不能看到DML操作的结果
被操作的数据被锁住,其他用户不能修改这些数据
数据的修改被永久写在数据库中.
数据以前的状态永久性丢失.
所有的用户都能看到操作后的结果.
记录锁被释放,其他用户可操作这些记录.
所有的 savepoint被去掉.
三 使用子查询创建表
使用子查询创建表的语法
CREATE TABLE table
[column(, column...)]
AS subquery;
新表的字段列表必须与子查询中的字段列表匹配
字段列表可以省略
--带数据的
create table departments02
as select * from departments
--不带数据的
create table departments03
as select * from departments where 1>2
--不省略字段列表
create table departments04 (
"部门编号",
"部门名称",
"管理者编号“ )
as select department_id,department_name,manager_id from departments
----不省略字段列表
create table departments05
as select department_id "部门编号", department_name "部门名称" from departments
ALTER TABLE 语句使用ALTER TABLE 语句可以:
增加字段
修改字段
删除字段
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
ALTER TABLE table
DROP column (columns);
学习总结:增删改查容易,DBA难啊