oracle第四章复习

oracle对象

1.同义词synonym

同义词是数据库对象的一个别名,可以为表、视图、序列、过程、函数等指定一个别名。
两种类型:
私有同义词:  只能由创建用户使用    拥有create synonym权限的用户就可以创建
公有同义词:  可以被所有用户使用    系统管理员才可以创建

语法结构
create [or replace] [public] [schema.]synonym_name
for [schema.]object_name


案例1:创建一个用户XiaoMei,该用户拥有connect和resource角色,为scott用户的emp表创建同义

词,并通过同义词访问emp表
conn syatem/manager;

create user XiaoMei identified by XiaoMei;
grant connect to XiaoMei;
grant resource to XiaoMei;
grant create synonym to XiaoMei;

conn XiaoMei/XiaoMei;
create synonym myemp for scott.emp;

select * from myemp;
结果:
              *
第 1 行出现错误:
ORA-00942: 表或视图不存在

conn scott/bb1356;
grant all on emp to XiaoMei;

conn XiaoMei/XiaoMei;
select ename,job,sal
from myemp
where sal>2000
/

运行结果:

ENAME      JOB              SAL
---------- --------- ----------
JONES      MANAGER         2975
BLAKE      MANAGER         2850
CLARK      MANAGER         2450
SCOTT      ANALYST         3000
KING       PRESIDENT       5000
FORD       ANALYST         3000

已选择6行。

删除同义词:
drop [public] synonym [schema.]sysnonym_name
此命令只删除同义词,不会删除源对象

SQL> drop synonym myemp;

同义词已删除。


2.序列sequence
序列是用来生成连续整数的对象,常常用来作为主键。
序列可以按升序也可以按降序

语法结构:
create sequence sequence_name
[start with num]
[increment by increment]
[maxvalue num | nomaxvalue]
[minvalue num | nominvalue]
[cycle|nocycle]
[cache num | nocache]

cache选项:  在内存中预先生成num个序列号。

创建序列:从1开始,每次增1,nocycle,缓存中有30个预先分配好的序列号。

create sequence myseq
start with 1
increment by 1
nocycle
cache 30
/

序列创建好之后,序列有currval和nextval两个“伪列”,分别用来访问该序列的当前值和下一个

值。

SQL> select myseq.nextval from dual;

   NEXTVAL
----------
         1


SQL> select myseq.currval from dual;

 CURRVAL
--------
       1


SQL> select myseq.nextval from dual;

   NEXTVAL
----------
         2

删除序列
drop sequence myseq;

案例2:创建一个序列,用来生成学生表的主键。并建立触发器,每当插入学生姓名时,自动加入主

键。
(1)建立学生表stu
create table stu(
sid number primary key,
sname varchar2(10) not null    
);

(2)创建序列。
create sequence stu_seq
start with 1
increment by 1
nocycle
cache 20
/

(3)创建触发器,自动生成主键

create or replace trigger tri_stu_id
before insert on stu
for each row
begin
    select stu_seq.nextval into :new.sid from dual;
end;
/

(4)插入数据
insert into stu(sname) values('zhang');
insert into stu(sname) values('xu');
insert into stu(sname) values('yang');
(5)查询数据
select * from stu;

查询结果:

       SID SNAME
---------- ----------
         1 zhang
         2 xu
         3 yang


其他对象整理后再更新.....

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值