零基础上手Oracle Linux数据库的第五天

7.Data Transactions 数据库事务

数据库事务可以由一下之一组成 事务有开始有结束

  • DML
  • DDL
  • DCL 数据控制语言

事务在执行第一条DML SQL语句开始

隐式开始:DML语句(增删改)

后续还能在事务中执行一系列的DML语句

结束标志:

  1. 显式结束(commit提交、rollback回滚)
  2. 隐式结束(提交)(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语句创建和管理表
ObjectDescription
基本存储单元,由行组成
视图逻辑上表示一个或多个表中的数据子集
序列生成数值
索引提高了某些查询的性能
同义词为对象提供替代名称

引用其他用户的表需要加上schema名称

Data TypesDescription
VARCHAR2(size)Variable-length character data
CHAR(size)Fixed-length character data
NUMBER(p,s)Variable-length numeric data
DATEDate 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 外键(是两张表的约束):维护关联数据的完整性

子表中的值你在插入或者填充的时候会参考父表

父表中的记录被子表引用的时候,父表中的对应的记录是不能删除的(报违反约束)
解决方案:

  1. 暴力方式,在建立外键关系的时候定义级联删除(on delete casecade)
  2. 通过空值填充,在建立外键关系的时候定义空值填充(on delete set null)
  • CHECK 检查约束:用来制定一些简单的规则 ,值域check between in
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值