oracle引用其他数据库对象,Oracle其他数据库对象

视图

SQL> --第一个视图: 员工号 姓名 月薪 年薪

SQL> create view view1

2 as

3 select empno,ename,sal,sal*12 annlsal from emp;

create view view1

*

第 1 行出现错误:

ORA-01031: 权限不足

SQL> /

视图已创建。

SQL> desc view1

名称 是否为空? 类型

----------------------------------------------------------------------------------- -------- --------------------------------------------------------

EMPNO NOT NULL NUMBER(4)

ENAME VARCHAR2(10)

SAL NUMBER(7,2)

ANNLSAL NUMBER

SQL> select * from view1;

SQL> create view view2

2 as

3 select empno,ename,sal,sal*12 annlsal,dname

4 from emp e, dept d

5 where e.deptno=d.deptno;

视图已创建。

SQL> select * from view2;

SQL> create or replace view view2

2 as

3 select empno,ename,sal,sal*12 annlsal,dname

4 from emp e, dept d

5 where e.deptno=d.deptno

6 with read only;

SQL>--with read onli只读视图

视图已创建。

SQL> create view view3

2as

3select * from emp where deptno =10

4with check option ;

SQL>--加上with check option 会检查插入视图是否满足条件

只读与检查是不能同时满足的 不建议通过视图对表使用DML语句

sequence序列跟MYSQL的auto_increatment类似

使用sequence会增加效率  默认一次增长 20个因为是存在内存中  但是断电即失可能会造成序列不连续

序列是一个公有对象 也可能造成序列不连续 回滚也会造成序列的不连续

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

SQL> --sequence

SQL> create sequence myseq;

序列已创建。

SQL> create table testseq

2 (tid number,tname varchar2(20));

表已创建。

SQL> select myseq.CURRVAL from dual;

select myseq.CURRVAL from dual

*

第 1 行出现错误:

ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义

SQL> select myseq.NEXTVAL from dual;

NEXTVAL

----------

1

已选择 1 行。

SQL> /

NEXTVAL

----------

2

已选择 1 行。

SQL> select myseq.CURRVAL from dual;

CURRVAL

----------

2

已选择 1 行。

SQL> insert into testseq values(myseq.NEXTVAL,'aaa');

已创建 1 行。

SQL> /

已创建 1 行。

SQL> /

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from testseq;

TID TNAME

---------- --------------------

3 aaa

4 aaa

5 aaa

已选择3行。

SQL> insert into testseq values(myseq.NEXTVAL,'aaa');

已创建 1 行。

SQL> /

已创建 1 行。

SQL> rollback;

回退已完成。

SQL> insert into testseq values(myseq.NEXTVAL,'aaa');

已创建 1 行。

SQL> select * from testseq;

TID TNAME

---------- --------------------

3 aaa

4 aaa

5 aaa

8 aaa

已选择4行。

SQL> /*

SQL> 序列不连续:

SQL> 1. 内存,长度20

SQL> 2. 序列是一个公有对象

SQL> 3. rollback序列不连续:

SQL> 1. 内存,长度20

SQL> 2. 序列是一个公有对象

SQL> 3. rollback

SQL> */

索引

可以提高查询效率

0818b9ca8b590ca3270a3433284dd417.png

默认是b树 也就是二叉树  是 比较二叉树 左子树大 右子树小

0818b9ca8b590ca3270a3433284dd417.png

索引表不需要维护 数据库自己维护

同义词

SQL> --同义词

SQL> --为hr.EMPLOYEES起别名

SQL> create SYNONYM hremp for hr.EMPLOYEES;

同义词已创建。

SQL> select count(*) from hremp;

COUNT(*)

----------

107

已选择 1 行。 create public synonym是公共的同义词

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值