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
其他对象整理后再更新.....