oracle 视图、同义词、序列

/**********************************************************
	视图
**********************************************************/

// 创建视图
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;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值