同义词与DBLINK、事务、锁

同义词(“大范围”别名)

同义词是指为表、视图、序列、存储函数、包、快照或其他同义词等对象起的另一个名字(绰号)

使用同义词的好处:

  • 引用对象不需指出对象持有者
  • 引用对象不需指出所在的的数据库
  • 为对象提供另一个名字

同义词的创建

一、语法格式

create [public][or replace] synonym 同义词名 for [schema.]对象名[@dblink];
  • 非管理员用户在创建同义词时需要授予其权限
  • public省略后为创建私有同义词,即只有该用户知道该对象拥有该绰号,并可访问相关数据;若不省略则为公有同义词,即所有用户均知道该对象的绰号,并可通过该绰号访问其中相关数据。
  • or replace字段存在时表示如果有同名同义词则覆盖该同义词
  • [schema.]用户可以暂时理解为[用户名.],一个用户即代表一个模式
  • 不能通过同义词修改原表数据结构

同义词的使用

一、实例说明

--用户可通过同义词对原表数据进行增删改查,不推荐用户使用同义词进行增删改,在此只给出查询示例
--查
select * from 同义词名 where 约束条件等;

二、具体实例

同义词的删除

drop [public] synonym 同义词名;
  • 第一次删除公有同义词时,需要授予其相关权限,语句如下:
grant drop public synonym to 用户名;

DBLINK相关概念

个人理解,dblink有利于在访问其他数据库对象时隐藏相关信息,提高其安全性

DBLINK的创建

一、语法格式

create [public] database link 数据库链接名(用户自行定义)
connect to 用户名 identified by 密码 using '服务名'; 
  • 第一次非管理员账户创建公有dblink需要设置权限,语句如下:
grant create public database link to 用户名;
  • 服务名为远程连接数据库文件tnsnames.ora中的服务名,如下图所示:
    在这里插入图片描述

DBLINK的使用

--使用dblink查询
select * from emp@test2;
--dblink与同义词结合查询
--创建同义词
create public synonym e for scott.emp@test2;
select * from e;

DBLINK的删除

drop [public] database link 数据库链接名(用户自行定义);
  • 非管理员第一次删除公有dblink时候,需要发放权限,语句如下:
grant drop public database link to 用户名;

事务

事务可以理解为做一件事情的全部子操作,这些子操作要做全部都做,要不做都不做;例如A向B转账11元事务,其中包含A账户减11元,B账户增长11元两个子操作;进行时两个子操作要么全执行,要么全不执行

事务四大属性ACID

  • 原子性A——事务中所有操作要做全做要不做全不做
  • 一致性C——事务操作前和事务操作后,其中数据必须满足业务规则约束
  • 隔离性I——允许多个并发事务同时对数据进行读写与修改的能力。举个栗子,若A、B转账时C向B发起转账若同时发生则A、B之间一致性不能被满足(一个事务一个事务来)
  • 持久性D——事务处理结束后,对数据的修改是永久的

事务提交commit

  • 当执行truncate、create、drop、alter等语句会自动事务提交
  • 当开启会话执行DML语句,意外关闭该客户端窗口或者退出用户登录,会自动事务提交

事务回滚rollback

  • 当数据库服务器意外断电或者宕机、关闭,会自动事务回滚

保存点(“游戏存档点”)savepoint

保存点,类似于游戏存档点,在用户未玩完游戏(点击提交按钮)时,用户可通过存档点将相关数据回退到某个状态。

示例如下:

savepoint s1;
update emp set deptno=10;
select * from emp;
rollback to s1;

运行效果如下:
在这里插入图片描述

简单的说,锁是控制多人同时访问同一资源的机制。

锁的分类

  • 行级锁——锁定某行数据
    (1)使用INSERT、UPDATE、DELETE、SELECT … FOR UPDATE语句时候会自动应用排他锁
    (2)SELECT … FOR UPDATE[WAIT n | NOWAIT]后wait n 表示等待n秒后执行该操作
  • 表级锁——锁定全表数据

拓展

  • oracle悲观锁(“被迫害妄想症”)

每次拿数据均认为数据会被更改,每次拿数据都会上锁

  • oracle乐观锁(“大大咧咧、乐天派”)

每次拿数据别人不会更改,只在更新时判断数据有没有更新

表级锁的创建

--[share|EXCLUSIVE]其中不只两参数,仅挑选最高和最低做简单解释
lock table 表名 in [share|EXCLUSIVE] mode;
  • share——共享锁,
  • EXCLUSIVE——排他锁,

锁的释放

锁在用户在进行提交或回滚操作后自动进行释放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值