Oracle PL/SQL高级应用 视图 同义词 序列

视图:

  视图叫虚表,即是在哪个表上建立的视图,将那个表的数据用一条查询sql语句查出的数据展现在该视图中,对这个视图操作就是只能对该视图中的数据进行操作,该操作也会保存在建立的表中。可以理解为表上表,视图为该表的子表。

CREATE OR REPLACE VIEW myview AS     --建立视图

SELECT * FROM books WHERE price>30;   --将表中符合条件的数据放入视图中
SELECT * FROM myview;            --查询视图中的数据
INSERT INTO myview VALUES('009','ABC',23,5);  --插入数据,插入到了原表中 但视图中不存在,因为价格为23
CREATE OR REPLACE VIEW v_read AS
SELECT eid,ename FROM emp
WITH READ ONLY;                           --不允许更改数据

 

同义词:

   一个对象的替代名字,利用同义词可以 很方便的操纵不同用户模式下的对象。如访问scott下的dept表必须是SELECT * FROM scott.dept,一般表名过长可用简单的同义词来替代;

CREATE SYNONYM dept FOR scott.dept;
DROP SYNONYM dept;

这样在此用户下(即创建同义词的用户下)用SELECT * FROM dept;语句即可。

CREATE PUBLIC SYNONYM dept FOR scott.dept; --创建公共的同义词,任何用户下都能用

序列:如果需要整型、递增的数字时使用较多。

CREATE SEQUENCE myseq
START WITH 1         --默认起始位置1
INCREMENT BY 1        --默认一次递增1    
ORDER                    --排序
NOCYCLE;            --不循环即一直递增往下排 会访问磁盘 影响性能    
SQL>SELECT myseq.NEXTVAL FROM dual; --查询下一个值1

SQL>SELECT myseq.NEXTVAL FROM dual; --查询下一个值2

SQL>SELECT myseq.NEXTVAL FROM dual; --查询下一个值3

SQL>SELECT myseq.CURRVAL FROM dual; --查询当前值3 只有查询了下一个值后才可查询当前值
CREATE TABLE auto(a number,b varchar2(10));    --创建表

INSERT INTO auto VALUES(myseq.NEXTVAL,'dfd');  --将序列插入

INSERT INTO auto VALUES(myseq.NEXTVAL,'dfd');  --将序列插入

INSERT INTO auto VALUES(myseq.NEXTVAL,'dfd');  --将序列插入
ALTER SEQUENCE myseq INCREMENT BY 3; --修改每次递增为3,但不能更改当前值