数据库对象

数据库对象包括:表,视图,序列,过程,函数,包。

序列: 

序列名.nextval引用序列的下一个值。
序列名.currval引用序列的当前值。

序列的定义:

create sequence myse
start with 10000
increment by 2;--间隔为+2

select myse.nextval from dual; 10000
select myse.currval from dual;--在同一个终端可多次使用currval,且在一个终端只能先nextval才能currval
select myse.currval from dual;

重开一个终端
select myse.nextval from dual;--10002
select myse.currval from dual;--10002

序列的修改:
 删除:drop sequence 序列名;
增长值修改:

alter sequence myse
increment by 3;
select myse.nextval from dual;
select myse.currval from dual;

结论:
1.序列是一种数据库对象。它存储在数据库中。不同APPLICATION可以共享。
2.序列一经定义,始终存在。.nextval在不同APPLICATION中都可以访问到。
3.同一application中,nextval取到的值不一定连续(因为存在并发访问序列的可能性)。
4..currval的作用范围在各个application内,它存储在内存中。
5.application内,第一次调用.nextval时才初始化.currval。

作用:

1.递增计数。2.不同application间共享一些信息。


同义词:

跨用户访问:
新建用户:参考数据库的脚本,创建jhl用户,密码initial123.

在jhl中:
create table jhlstudent(
sname varcahr(10),
sage number(3)
);
insert into jhlstudent values('Tom',20);
commit;
在管理员账户(system)中可以进行查询:
select * from jhl.jhlstudent;

但在jhl中,不能直接通过system.xxx查询记录(没有权限),
select * from system.student;--会出错

授权,在system中:
grant select on student to jhl;
然后,在jhl中:
select * from system.student;--成功

建立同义词:
同义词分为;专用同义词,公有同义词。
同义词可以作为任何表、视图、序列、过程、函数或包的别名。是数据对象的一种。

专有的同义词仅在该用户和授权的用户所使用。
普通用户没有定义公用同义词的权限,但可以在管理员中为其授权:grant create public synonym to 用户名

定义:

私有同义词:
在system中:
建同义词前:
select * from jhl.jhlstudent;
建同义词:
create synonym jhlstu
for jhl.jhlstudent;
select * from jhlstu;

公有同义词:
在system中:
create public synonym stu
for system.student;
在其他有student权限的用户中(包括system自己):
select * from stu;

在system中:
create publci sysnonym kc
for system.course;
select * from kc;
在jhl中不能使用:
select * from kc;--失败(没有system.course的权限)

普通用户创建共有公有同义词要有管理员的授权:
grant create public synonym to 用户名


注:同义词只能提供方便,不能突破权限的控制。

删除:drop synonym synonym_name;
drop public  synonym synonym_name;
注:普通用户要在获得管理员授权(grant drop public synonym to 用户名)后,才可以删除公有同义字。

作用:

  1. 多个用户协同开发可屏蔽休想名字及其持有者。
  2. 为分布是数据库的远程对象提供透明性。(非重点:数据库链)
  3. 为用户简化sql语言。

数据库链:

create database link dl --数据库链名
connect to system  --数据库链指向的另一台数据库登陆用户名及密码
identifued by initial123
using 'wyf'; --全局数据库名

select * from student@dl;--到指定的数据库链指向的数据库进行查询

 

你可能感兴趣的:(数据库,培训笔记)