您的位置:首页 > 数据库 > Oracle

Oracle其它数据库对象:视图、序列、同义词

2012-08-07 15:27 435 查看
SQL> --视图: 由一个或者多个表组成的逻辑表
SQL> -创建一个视图,包含了10,20的员工信息
SQL> --创建一个视图,包含了10,20的员工信息
SQL> ed
已写入 file afiedt.buf

  1  create or replace view emp1020(empno,ename,sal,deptno)
  2  as
  3  select empno,ename,sal,deptno
  4  from emp
  5* where deptno in (10,20);
SQL>
                
第 1 行出现错误:
ORA-01031: 权限不足

SQL> --创建视图的权限
SQL> --切换到管理员下,授权
SQL> conn sys/password as sysdba
已连接。
SQL> grant create view to scott;

授权成功。

SQL> conn scott/tiger
已连接。
SQL>  create or replace view emp1020(empno,ename,sal,deptno)
  2   as
  3   select empno,ename,sal,deptno
  4   from emp
  5   where deptno in (10,20);

视图已创建。

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID                                                                      
------------------------------ ------- ----------                                                                      
DEPT                           TABLE                                                                                   
EMP                            TABLE                                                                                   
BONUS                          TABLE                                                                                   
SALGRADE                       TABLE                                                                                   
EMP10                          TABLE                                                                                   
EMP101                         TABLE                                                                                   
MYUSER                         TABLE                                                                                   
TESTCHAR                       TABLE                                                                                   
DDD                            TABLE                                                                                   
DDDE                           TABLE                                                                                   
EMP1020                        VIEW                                                                                    

已选择11行。

SQL> --从视图中去数据
SQL> select * from emp1020;

     EMPNO ENAME        SAL     DEPTNO                                                                                 
---------- ---------- ----- ----------                                                                                 
      7369 SMITH        801         20                                                                                 
      7566 JONES       2976         20                                                                                 
      7782 CLARK       2551         10                                                                                 
      7788 SCOTT       3001         20                                                                                 
      7839 KING        5101         10                                                                                 
      7876 ADAMS       1101         20                                                                                 
      7902 FORD        3001         20                                                                                 
      7934 MILLER      1401         10                                                                                 
      1235 Mary        1101         10                                                                                 
      2222 Mike        2001         20                                                                                 

已选择10行。

SQL> create or replace view emp10201 (empno,ename,sal,annlsal,deptno)
  2  as
  3  select empno,ename,sal,sal*12,deptno
  4  from emp
  5  where deptno in (10,20);

视图已创建。

SQL> select * from emp10201;

     EMPNO ENAME        SAL    ANNLSAL     DEPTNO                                                                      
---------- ---------- ----- ---------- ----------                                                                      
      7369 SMITH        801       9612         20                                                                      
      7566 JONES       2976      35712         20                                                                      
      7782 CLARK       2551      30612         10                                                                      
      7788 SCOTT       3001      36012         20                                                                      
      7839 KING        5101      61212         10                                                                      
      7876 ADAMS       1101      13212         20                                                                      
      7902 FORD        3001      36012         20                                                                      
      7934 MILLER      1401      16812         10                                                                      
      1235 Mary        1101      13212         10                                                                      
      2222 Mike        2001      24012         20                                                                      

已选择10行。

SQL> --创建视图: 要求有员工编号,工资,年薪,部门名称
SQL> create or replace view empdept(empno,ename,sal,annlsal,dname)
  2  as
  3  select e.empno,e.ename,e.sal,e.sal*12,d.dname
  4  from emp e,dept d
  5  where e.deptno=d.deptno;

视图已创建。

SQL> select * from empdept;

     EMPNO ENAME        SAL    ANNLSAL DNAME                                                                           
---------- ---------- ----- ---------- --------------                                                                  
      7369 SMITH        801       9612 RESEARCH                                                                        
      7499 ALLEN       1601      19212 SALES                                                                           
      7521 WARD        1251      15012 SALES                                                                           
      7566 JONES       2976      35712 RESEARCH                                                                        
      7654 MARTIN      1251      15012 SALES                                                                           
      7698 BLAKE       2851      34212 SALES                                                                           
      7782 CLARK       2551      30612 ACCOUNTING                                                                      
      7788 SCOTT       3001      36012 RESEARCH                                                                        
      7839 KING        5101      61212 ACCOUNTING                                                                      
      7844 TURNER      1501      18012 SALES                                                                           
      7876 ADAMS       1101      13212 RESEARCH                                                                        

     EMPNO ENAME        SAL    ANNLSAL DNAME                                                                           
---------- ---------- ----- ---------- --------------                                                                  
      7900 JAMES        951      11412 SALES                                                                           
      7902 FORD        3001      36012 RESEARCH                                                                        
      7934 MILLER      1401      16812 ACCOUNTING                                                                      
      1235 Mary        1101      13212 ACCOUNTING                                                                      
      2222 Mike        2001      24012 RESEARCH                                                                        

已选择16行。

SQL> --序列:Oracle默认一次创建20个值放入内存
SQL> --序列可能不连续
SQL> -- 需要创建序列的权限 create sequence
SQL> conn sys/password as sysdba
已连接。
SQL> grant create sequence to scott;

授权成功。

SQL> conn scott/tiger
已连接。
SQL> --创建一个序列
SQL> create sequence seq1;

序列已创建。

SQL> -- 采用默认值:
SQL> /*
SQL> 步长:1
SQL> 起始值:1
SQL> 最大值:无穷大
SQL> cache:20
SQL> 不循环
SQL> */
SQL> select seq1.nextval from dual;

   NEXTVAL                                                                                                             
----------                                                                                                             
         1                                                                                                             

SQL> select seq1.currval from dual;

   CURRVAL                                                                                                             
----------                                                                                                             
         1                                                                                                             

SQL> select seq1.nextval from dual;

   NEXTVAL                                                                                                             
----------                                                                                                             
         2                                                                                                             

SQL> --在插入中使用序列: insert into myemp values(seq1.nextval,'Tom'.......)
SQL> --同义词
SQL> show user;
USER 为 "SCOTT"
SQL> conn hr/hr
已连接。
SQL> --给scott授权访问employees表
SQL> grant select on employees to scott;

授权成功。

SQL> show user;
USER 为 "HR"
SQL> select * from employees;

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE    
----------- -------------------- ------------------------- ------------------------- -------------------- --------------
JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID                                                          
---------- ---------- -------------- ---------- -------------                                                          
        198 Donald               OConnell                  DOCONNEL                  650.507.9833         21-6月 -99   
SH_CLERK         2600                       124            50                                                          
                                                                                                                       
        199 Douglas              Grant                     DGRANT                    650.507.9844         13-1月 -00   
SH_CLERK         2600                       124            50                                                          
                                                                                                                       
        200 Jennifer             Whalen                    JWHALEN                   515.123.4444         17-9月 -87   
AD_ASST          4400                       101            10                                                          
                                                                                                                       

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE    
----------- -------------------- ------------------------- ------------------------- -------------------- --------------
JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID                                                          
---------- ---------- -------------- ---------- -------------                                                          
        201 Michael              Hartstein                 MHARTSTE                  515.123.5555         17-2月 -96   
MK_MAN          13000                       100            20                                                          
                                                                                                                       
        202 Pat                  Fay                       PFAY                      603.123.6666         17-8月 -97   
MK_REP           6000                       201            20                                                          
                                                                                                                       
        203 Susan                Mavris                    SMAVRIS                   515.123.7777         07-6月 -94   
HR_REP           6500                       101            40                                                          
                                                                                                                                                                              
                                                                                                                       

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE    
----------- -------------------- ------------------------- ------------------------- -------------------- --------------
JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID                                                          
---------- ---------- -------------- ---------- -------------                                                     
                                                                                                                       

已选择107行。

SQL> --回到scott下
SQL> conn scott/tiger
已连接。
SQL> host cls

SQL> show user;
USER 为 "SCOTT"
SQL> select * from hr.employees;

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE    
----------- -------------------- ------------------------- ------------------------- -------------------- --------------
JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID                                                          
---------- ---------- -------------- ---------- -------------                                                          
        198 Donald               OConnell                  DOCONNEL                  650.507.9833         21-6月 -99   
SH_CLERK         2600                       124            50                                                          
                                                                                                                       
        199 Douglas              Grant                     DGRANT                    650.507.9844         13-1月 -00   
SH_CLERK         2600                       124            50                                                          
                                                                                                                       
        200 Jennifer             Whalen                    JWHALEN                   515.123.4444         17-9月 -87   
AD_ASST          4400                       101            10                                                          
                                                                                                                                                                                                                                           

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE    
----------- -------------------- ------------------------- ------------------------- -------------------- --------------
JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID                                                          
---------- ---------- -------------- ---------- -------------                                                          
        196 Alana                Walsh                     AWALSH                    650.507.9811         24-4月 -98   
SH_CLERK         3100                       124            50                                                          
                                                                                                                       
        197 Kevin                Feeney                    KFEENEY                   650.507.9822         23-5月 -98   
SH_CLERK         3000                       124            50                                                          
                                                                                                                       

已选择107行。

SQL> --select * from hr.employees;
SQL> --切换到管理员下,为scott赋予创建同义词的权限
SQL> host cls

SQL> conn / as sysdba
已连接。
SQL> grant create synonym to scott;

授权成功。

SQL> conn scott/tiger
已连接。
SQL> create synonym hremp for hr.employees;

同义词已创建。

SQL> --select * from hr.employees;
SQL> select * from hremp;

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE    
----------- -------------------- ------------------------- ------------------------- -------------------- --------------
JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID                                                          
---------- ---------- -------------- ---------- -------------                                                          
        198 Donald               OConnell                  DOCONNEL                  650.507.9833         21-6月 -99   
SH_CLERK         2600                       124            50                                                          
                                                                                                                       
        199 Douglas              Grant                     DGRANT                    650.507.9844         13-1月 -00   
SH_CLERK         2600                       124            50                                                          
                                                                                                                       
        200 Jennifer             Whalen                    JWHALEN                   515.123.4444         17-9月 -87   
AD_ASST          4400                       101            10                                                          
 
 

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE    
----------- -------------------- ------------------------- ------------------------- -------------------- --------------
JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID                                                          
---------- ---------- -------------- ---------- -------------                                                          
        196 Alana                Walsh                     AWALSH                    650.507.9811         24-4月 -98   
SH_CLERK         3100                       124            50                                                          
                                                                                                                       
        197 Kevin                Feeney                    KFEENEY                   650.507.9822         23-5月 -98   
SH_CLERK         3000                       124            50                                                          
                                                                                                                       

已选择107行。

SQL> spool off
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: