7.Data Transactions 数据库事务
数据库事务可以由一下之一组成 事务有开始有结束
- DML
- DDL
- DCL 数据控制语言
事务在执行第一条DML SQL语句开始
隐式开始:DML语句(增删改)
后续还能在事务中执行一系列的DML语句
结束标志:
- 显式结束(commit提交、rollback回滚)
- 隐式结束(提交)(DDL、DCL语句) ---->commit
异常退出会自动rollback
正常退出:quit、exit(自动提交)
事务特征 - ACID
- 原子性Atomicity
事务是数据库的逻辑工作单位,事务中的操作,要么都做,要么都不做
- 一致性Consistency
事务的执行结果必须是使数据库从一个一致性状态到另一个一致性状态
eg:A -> B 转账 因网络问题转账失败 则进行回滚 体现其原子性、一致性
- 隔离性Isolation
数据库中一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他事务是隔离的
-
持久性Durability
事务一旦提交,对数据库中的数据改变时永久的
脏读: 一个事务读取到了其他事务中还没有提交(committed)的数据
事务隔离级别
-
Serializable(序列化)
-
Repeatable read(可重复读)
-
不可重复读
-
幻读
插入之后做保存点
savepoint sp_insert;
回滚到某一状态
rollback to sp_insert;
设置自动提交
set autocommit on/off
读一致性的实现
8.使用DDL语句创建和管理表
Object | Description |
---|---|
表 | 基本存储单元,由行组成 |
视图 | 逻辑上表示一个或多个表中的数据子集 |
序列 | 生成数值 |
索引 | 提高了某些查询的性能 |
同义词 | 为对象提供替代名称 |
引用其他用户的表需要加上schema名称
Data Types | Description |
---|---|
VARCHAR2(size) | Variable-length character data |
CHAR(size) | Fixed-length character data |
NUMBER(p,s) | Variable-length numeric data |
DATE | Date and time values |
create table 表名 (列名 数据类型, 列名 数据类型。。。);
新增一列:
alter table 要更改的表 add 新的列名 数据类型 [约束、默认值];
删除一列:
alter table 要跟更改的表 drop(要删除的列);
修改表中列:
alter table 要更改的表 modify 要更改的列 数据类型 default xxx;
//处于空去修改
create table c(id int,name varchar(10));
desc hr.c;
alter table c modify id number(3);
//若已有值不能修改数据类型,但可以修改长度
//在表c中添加新的列,number长度为8,保留2位
alter table c add salary number(8,2);
包括约束条件
The following constraint types are valid:
- NOT NULL
- UNIQUE
- PRIMARY KEY 联合主键(多列一起作为主键)
primary key (id, name)
id name
1 a
1 b
2 b
2 a
- FOREIGN KEY 外键(是两张表的约束):维护关联数据的完整性
子表中的值你在插入或者填充的时候会参考父表
父表中的记录被子表引用的时候,父表中的对应的记录是不能删除的(报违反约束)
解决方案:
- 暴力方式,在建立外键关系的时候定义级联删除(on delete casecade)
- 通过空值填充,在建立外键关系的时候定义空值填充(on delete set null)
- CHECK 检查约束:用来制定一些简单的规则 ,值域check between in