临时表存储当前需要的中转数据,使用完成后会清空这些数据

1.会话级临时表

  会话级临时表会在当前用户会话结束时清空表中的数据

  create global temporary table 表名(

    字段1 数据类型,

    字段2 数据类型,

    ...

  ) on commit preserve rows;

2.事务级临时表

  事务级临时表会在执行commit或者rollback命令时清空表中的数据

  create global temporary table 表名(

    字段1 数据类型,

    字段2 数据类型,

    ...

  ) on commit delect rows;

3.使用临时表的场景

  1.避免原始数据的表格被不同的业务反复进行读写操作,避免表的资源被频繁占用

  2.提取表中部分数据进行运算,加快表的查询速度

4.数据库中的锁

  锁的分类

    1.按不同对象分类

      行锁:A用户对数据进行DML操作未提交或者回滚,这时候其他用户是无法操作A未提交或者回滚的数据,这里进行的是DML操作

      表锁:A用户对数据进行DML操作未提交或者回滚,其他用户无法对表进行结构修改

    2.按主动性分类

      乐观锁:dml操作时的锁

      悲观锁:数据查询时加的锁

  死锁:A对数据1进行DML操作,未提交时,再去操作数据2;此时B对数据2进行DML操作,也未提交,同时去操作数据1;这样就会形成死锁。

  解决方式:结束一方的会话  

  具体步骤:

    1.找到上锁人的会话id:select session_id from v$locked_object a,dba_objects b where a.object_id = b.object and b.object_name = 'emp' and b.omner = 'scott'

    2.用上一步的会话id找到锁的信息:select sid,serial#,username from v$session where sid = session_id 

    3.使用会话id和锁信息删除会话:alter system kill session 'sid,serial'

5.数据库的序列

  序列是一组从大到小或者从小到大的数字,一般用在表格里面自动填充自增主键

  create sequence 序列名称

  start with 开始的数字

  increment by 不长

  maxvalue  最大值                  | nomaxvalue

  minvalue  最小值                   | nominvalue

  cycle  是否循环                      | nocyle

  cache  缓存                            | nocache

6.DBlink:用于远程连接数据库

  create public database link dblink名字 

  connect to 连接的数据库用户名 identified by 密码

  using '(DESCRIPTION=

  (ADDRESS = (PROTICOL = TCP) (HOST = IP地址或者计算机名) (PORT = 端口号))

  (CONNECT_DATA = (SERCER = DEDICATED) (SERVICE = 数据库名)))';

  查询dblink的表:select * from emp@TEST_DBLINK1

 

posted on 2022-12-02 19:50  银光短战棍  阅读(106)  评论(0编辑  收藏  举报