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