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 
  2		as
  3		select * from emp where deptno =10
  4		with check option ;
SQL>--加上with check option 会检查插入视图是否满足条件

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

sequence序列跟MYSQL的auto_increatment类似

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

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


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> */


索引

可以提高查询效率


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


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

同义词

SQL> --同义词
SQL> --为hr.EMPLOYEES起别名
SQL> create SYNONYM  hremp for hr.EMPLOYEES;
同义词已创建。
SQL> select count(*) from hremp;

  COUNT(*)                                                                                                                                            
----------                                                                                                                                            
       107                                                                                                                                            

已选择 1 行。

create public synonym是公共的同义词



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值