oracle 同义词注释,Oracle对象下集(序列、同义词、分区表、database link)

本人所有博文纯手码,给个关注或者赞吧!博主:张晨晨QQ:1445696451欢迎随时加Q讨论技术。

一、Oracle的序列

·序列是用来生成惟一的连续的整数的数据库对象。序列通常可以用来自动生成主键或者唯一键的值;可根据数值进行升序或者降序的排列

·比如创建班级的学生信息登记表,可以将学号使用序列自动生成。班级的学号都是10000~10060这个范围,每登记一个学生,序列自动增长一个。

1、创建序列的命令语法

create sequence seq_name [start with interger] [increment by interger] [maxvalue interger ] [minvalue interger] [cycle|nocycle] [cache interger|nocache];

注释:

create sequence seq_name :创建序列

start with :从...开始生成序列

increment by :每次增长的数值

maxvalue :最大的序列值,默认不限制最大值

minvalue :最小的序列值,默认不限制最小值

cycle :翻译为中文是圆的意思,这里其实是指循环,当序列到达最大值/最小值时,从初始值开始继续生成。默认为nocycle,不进行循环生成。

cache :预先分配出来的序列,保存于缓存中,可用于快速访问序列号。默认为nocache,即不分配缓存

举例:

create sequence seq_1

start with 10000

increment by 1

maxvalue 10060

nocycle;

:还是上面的例子,创建一个seq_1序列,从10000开始,每次增长为1,最大值为10060,不进行循环生成。

2、我们建立好了序列自然需要将序列应用到我们创建的表(table)中。可以通过nextval、currval伪列来访问该序列的值。

·nextval:这个伪列会在创建序列后第一次使用时,返回该序列的初始值。在以后使用时,将使用increment by子句的值来增加序列值

·currval:会返回序列的最后一次引用nextval时返回的值。

举例:

create table student_class25(stu_id number not null,stu_name varchar2(20),

stu_age number);

创建一个student_class25表

insert into student_class25 values (seq_1.nextval,’zhangsan’,’13’);

insert into student_class25 values (seq_1.nextval,’lisi’,’13’);

...

向student_class25表中插入数据,在对应stu_id这一列我们引用序列seq_1。

select seq_1.currval from dual;

查询序列当前值

##如果在你指定缓存的环境下,执行startup force重启数据库,接着写的数据的序列号会从初始值+缓存值开始。例如,初始值为10,缓存值为30个,那么执行startup force后,序列号会从40开始生成。

3、维护序列

1)查看序列(使用字典user_sequences)

select from user_sequences;2)删除序列drop sequence seq_name;3)更改序列alter sequence seq_name [...];二、Oracle的同义词

·顾名思义,同义词就是意思相同的词语,你可以看做是对象的一个别名,就像liunx操作系统中的命令的别名一样。但是linux命令别名只提供了方便容易记忆的好处。

1、而在Oracle中,同义词可用来:

1)简化Oracle中输入的SQL语句,通过给对象建立同义词,我们可以简化复杂的SQL语句,方便记忆和操作

2)隐藏对象的名称和所有者,给对象建立了同义词,如scott模式下的emp表(scott,emp),我们建立一个同义词就叫做se。那么我们在查询这个表的时候就不用担心暴露表的位置,提供了一定的安全性

3)提供对数据库的公共访问,可以通过给远程连接建立公有同义词给其他的用户查看。

4)以及为分布式数据库的远程对象提供位置透明性,我们给数据库链接(将其看做是一个对象)建立同义词,使用户可以无阻碍的查看数据表,这时候对于用户而言,位置就是透明的。

2、同义词分类(两种)

1)私有同义词:为当前模式的用户私有,其他用户无法使用

2)公有同义词:与私有同义词相反

3、创建同义词create [or replace] [public] synonym sy_name for object_name;注释:

create ... for :给...创键同义词

[or replace] :该可选项的作用是覆盖(如果存在同名的同义词就会将其覆盖掉)

[public] :加上该选项表示创建公有同义词

sy_name :同义词名

object_name :对象名称,如scott.emp(即scott用户下的emp表)

4、举例create synonym sy_name for scott.emp;为scott.emp表创建私有同义词create public synonym sy_name for scott.emp;创建公有同义词

##创建好的公有同义词不代表用户就可以使用,我们还需要对需要操作这个表的用户进行授权

5、复杂应用

1)建立oracle连接的命令

举例:①conn system/pwd123@neworcl;

②create database link link_1 connect system identified by pwd123 using orcl;

③create synonym sy_t for scott.emp@link_1;通过以上命令建立一条连接到远程数据库的数据库链接,并为链接中数据库的scott.emp表建立同义词。

6、维护同义词

1)查看同义词select from user_synonyms;

2)删除公有/私有同义词

drop [public] synonym sy_name;

三、数据库链接

1、数据库链接是定义一个数据库到另一个数据库路径的对象,可以通过数据库链接查询远程表、执行远程程序。在分布式环境中,Oracle数据库链接是必须的。有一点,oracle数据库链接是单向的;一个链接,能从a数据库链接到b数据库,那么无法从b数据库链接到a数据库。

2、数据库链接分类

private:属于创建该链接的用户,也只有该用户可以使用

public:属于public,允许本地数据库中所有拥有数据库访问权限的用户使用

global:全集类型,网络中的数据库用户均可使用

3、创建数据库链接

create database link connect to username identified by user

passwd using

‘(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = ipaddress)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = dbtest)

)

)’;

四、分区表

·Oracle可将表的行分成多个部分(存储于不同的表空间),这些部分组成的表就是分区表,这些部分被称为Oracle分区。而分区表的应用一般来说,表的大小要足够大才可以体现分区表的作用,太小的表不建议使用。

1、分区表有很大的作用:

1)改善标的查询性能;同时实现分开管理

2)便于备份和恢复,如果一部分的数据丢失,只需要单独恢复对应分区即可

3)分开存储数据,提高安全性

4)分区对于用户而言也是透明的

2、创建分区表

create table t_name

(stu_id number,stu_name varchar2(20),stu_age number)

partition by range (stu_id)

(

partition p1 values less than (),

partition p2 values less than (),

parti...

);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值