Oracle对象下集(序列、同义词、分区表、database link)
发布时间:2020-12-12 13:35:42 所属栏目:百科 来源:网络整理
导读:本人所有博文纯手码,给个关注或者赞吧!博主:张晨晨QQ:1445696451欢迎随时加Q讨论技术。 一、Oracle的序列 ·序列是用来生成惟一的连续的整数的数据库对象。序列通常可以用来自动生成主键或者唯一键的值;可根据数值进行升序或者降序的排列 ·比如创建班级
本人所有博文纯手码,给个关注或者赞吧!博主:张晨晨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/[email?protected]; ②create database link link_1 connect system identified by pwd123 using orcl; ③create synonym sy_t for [email?protected]_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_age number)partition by range (stu_id)(partition p1 values less than (),partition p2 values less than (),parti...); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |