/**********************************************************
视图
**********************************************************/
// 创建视图
CREATE OR REPLACE VIEW myview
AS
SELECT * FROM books;
//授权
GRANT create view to scott;
// 使用视图插入数据
INSERT INTO myview(books_id) values('0008');
// 创建视图
CREATE OR REPLACE VIEW myview
AS
SELECT * FROM books where price>30;
// 当插入price<30的数据的时候后,再select视图,发现数据没有增加,会让用户产生模糊,
// 为防止这种情况,可以如下修改视图
CREATE OR REPLACE VIEW myview
AS
SELECT * FROM books where price>30
WITH CHECK OPTION
// 创建视图
CREATE OR REPLACE VIEW deptview
AS
SELECT e.eid,e.ename,e.sex,d.id,d.name FROM e JOIN d ON e.id=d.id;
// 当组成视图的基表是两个或两个以上的时候,只能更新或插入一个表,可以用替代触发器完成此功能
// 只读视图,不能更新
CREATE OR REPLACE VIEW onlyreadview
AS
SELECT e.eid,e.ename FROM e
WITH READ ONLY;
// 当视图中带有 group by, avg,sum等聚合函数,distinct, 这时的视图也是不能更新的
// 查看视图
desc user_views // 当前用户
desc all_views
desc dba_views
/**********************************************************
同义词
利用同义词可以很方便的操纵不同用户模式下的对象
分两种
公共同义词 dba建立的
私有同义词
**********************************************************/
// 当前用户
select user from dual;
GRANT SELECT ON dept TO lee; -- 授权
conn lee/lee;
select * from scott.dept;
// 创建同义词 在lee用户下
CREATE SYNONYM dept FOR scott.dept;
// 授权
conn sys/admin as syadba;
grant create synonym to lee;
// 删除同义词
drop synonym dept;
// 创建公共同义词
create public synonym dept for scott.dept;
desc dba_synonyms;
desc user_synonyms;
/**********************************************************
创建序列
**********************************************************/
CREATE SEQUENCE myseq
START WITH 1
INCREMENT BY 1
ORDER
NOCYCLE; -- 性能不好
//
grant create sequence to scott;
select myseq.NEXTVAL FROM dual;
select myseq.CURRVAL FROM dual;
CREATE TABLE aut
(
a number,
b varchar2(10)
);
INSERT INTO aut VALUES(myseq.NEXTVAL,'dfd');
desc dba_sequence;
ALTER sequence myseq
INCREMENT BY 3;
oracle 视图、同义词、序列
最新推荐文章于 2023-04-29 14:37:37 发布