临时表存储当前需要的中转数据,使用完成后会清空这些数据
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