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

本文介绍如何在Oracle数据库中创建包含特定部门员工信息的视图,并为其他模式的对象创建同义词以方便访问。首先展示创建一个名为EMP1020的视图,该视图仅包含部门号为10和20的员工记录。接着,通过管理员授权给用户SCOTT创建视图的权限,完成视图创建。随后,创建了一个更复杂的视图EMPDEPT,该视图提供了员工编号、姓名、薪资、年薪和部门名称等信息。最后,演示了如何授予用户创建同义词的权限,并为HR模式下的EMPLOYEES表创建了一个同义词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值