精华内容
下载资源
问答
  • Oracle_同义词

    2020-05-09 10:11:46
    Oracle 同义词 Oracle 同义词 1. Oracle同义词简介 Oracle数据库中提供了同义词管理的功能。 同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。 在使用同义词时,Oracle数据库将它...

    Oracle 同义词

    Oracle 同义词
    
    1. Oracle同义词简介
    Oracle数据库中提供了同义词管理的功能。
    同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。
    在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。
    与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。
    在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。
    同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。 
     
    2. Oracle同义词的分类 
    
    Oracle同义词有两种类型,分别是公用Oracle同义词与私有Oracle同义词。 
    1) 公用Oracle同义词:
    a) 由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。 
    2) 私有Oracle同义词:
    a) 它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。 
    3. Oracle同义词创建及删除 
    创建公有Oracle同义词的语法:Create [public] synonym 同义词名称 for [username.]objectName; 
    Drop [public] synonym 同义词名称
    4. 实例测试
    本地数据库:192.168.7.17 ******/******
    远程数据库:192.168.7.11 ******/******
    远程数据库准备工作:
    1.创建数据表
    create table TBTEST
    (
      id        NUMBER not null,
      firstname NVARCHAR2(20),
      lastname  NVARCHAR2(20)
    )
    2.创建序列
    create sequence TESTSEQ
    minvalue 0
    maxvalue 9999999999999999999999999999
    start with 0
    increment by 1
    cache 20;
    3.储存过程
    create or replace procedure testproc(firstname in varchar,lastname in varchar)
    is 
    begin
      insert into tbtest values(testseq.nextval,firstname,lastname);
      commit; 
    end;
    4. 函数
    create or replace function testfunc(tid in number) return varchar2 is
      retvalue varchar2(50);
      firstname varchar2(20);
      lastname varchar2(20);
    begin
      dbms_output.put_line(tid);
      select t.firstname,t.lastname into firstname,lastname from tbtest t where t.id=tid;
      retvalue:=firstname||' '||lastname; 
      return(retvalue);
    end; 
    5.视图
     create or replace view testview as
    select * from tbtest t;
    本地数据库测试:
    1.创建序列的同义词
    create synonym seq for testseq@nrmis.nrmsdb;
    测试:
    select seq.nextval from dual;
    结果:4
    结论:sequence可以创建同义词并且能够使用
    2.创建表的同义词
    create synonym tbtest for tbtest@nrmis.nrmsdb;
      测试:
    select * from tbtest;
      结论:表的同义词可以使用
    3.测试表的插入
    insert into tbtest values(seq.nextval,'first','last');
    select * from tbtest;
    结果:
    5 first 
    last
    2 yu deyang
    4.  创建存储过程同义词
    create synonym proc for testproc@nrmis.nrmsdb;
        调用储存过程
        call proc('firstname','lastname');
    结果:
    1 5 firstlast
    2 6 firstnamelastname
    3 2 yudeyang
    5.创建函数的同义词
       create synonym func for testfunc@nrmis.nrmsdb;
       select func(5) from dual;
      结果:
    1 first last
    6.创建视图同义词
       create synonym tview for testview@nrmis.nrmsdb;
       select * from tview;
       结果:
    1 5 firstlast
    2 6 firstnamelastname
    3 2 yudeyang
    
    5. 性能相关
    在oracle 9i 升级到oracle 10g或oracle 11g的时候可能会有性能问题,
    请参考http://www.zlsoft.com/techbbs/dispbbs.asp?boardid=3&id=50337看是否符合。
    
    (如果对同义词再建同义词,ORACLE 9.2.01有一个严重BUG, 
    ORACLE 10G对视图进行了修改,如果我们系统中没有使用对同义词再建同义词,
    我们可以修改10g或者11g视图。)
    
    展开全文
  • SQL基础-- 序列 SEQUENCE 同义词 SYNONYM

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    --=============================================

    --SQL基础--> 序列(SEQUENCE)、同义词(SYNONYM)

    --=============================================

     

    一、序列

        是一个Oracle对象,提供唯一的数字,在需要时根据指定的增量值来递增,通常用于产生主键值

        类似于SQL server中的IDENTITY(int,1,1) 或者列为IDENTITY列。SQL server可以直接将列指定

        IDENTITY列,在使用的时候可以不需要理会IDENTITY列,系统会自动递增,这样看来SQL

        server 中主键的产生更为简便。

       

        1.序列的特性:

           自动提供唯一的数值

           共享对象

           主要用于提供主键值

           代替应用代码

           将序列值装入内存可以提高访问效率

     

        2.CREATE SEQUENCE 语句定义序列:

     

           CREATE SEQUENCE sequencename

           [INCREMENT BY n]             定义序列增长步长,省略为1

           [START WITH m]               序列起始值,省略为1

           [{MAXVALUE n | NOMAXVALUE}] 序列最大值,NOMAXVALUE升序时,序列最大值的次方

                                        降序时为-(默认也是为此)

           [{MINVALUE n | NOMINVALUE}] 序列最小值,NOMINVALUE升序时,最小值为,降序时序列

                                        最小值为-的次方(默认也是为此)

           [{CYCLE | NOCYCLE}]         到达最大值或最小值后,继续产生序列(默认NOCYCLE

           [{CACHE n | NOCACHE}];       序列缓存与否(默认NOCACHE

       

            关于创建序列,使用序列所需要的权限请参考:Oracle

                             

           --创建一个序列

               SQL> CREATE SEQUENCE my_seq

                 2  INCREMENT BY 10

                 3  START WITH 100

                 4  MAXVALUE 150

                 5  NOCACHE

                 6  NOCYCLE;

     

               Sequence created.

     

        3.使用序列

           NEXTVAL CURRVAL 伪列

               NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用

               CURRVAL 中存放序列的当前值

               第一次使用时CURRVAL不能用

               使用时需要指定序列的对象名

               将序列值装入内存可提高访问效率

           序列在下列情况下出现裂缝:

               –回滚

               –系统异常

               –多个表同时使用同一序列

           如果不将序列的值装入内存(NOCACHE), 可使用表USER_SEQUENCES 查看序列当前的有效值

              

           --当第一次使用序列时指定了currval列,结果出现如下错误提示    

               SQL> SELECT my_seq.currval FROM dual;

               SELECT my_seq.currval FROM dual

                     *

               ERROR at line 1:

               ORA-08002: sequence MY_SEQ.CURRVAL is not yet defined in this session

     

           --使用nextval列,则成功执行,这就是NEXTVAL 必须在CURRVAL 之前指定,及第一次使用必须是NEXTVAL

               SQL> SELECT my_seq.nextval FROM dual;

     

                  NEXTVAL

               ----------

                     100

     

               SQL> SELECT my_seq.currval FROM dual;

     

                  CURRVAL

               ----------

                     100 

          

        4.查询序列

           USER_SEQUENCES

           DBA_SEQUENCES

           ALL_SEQUENCES

           查询数据字典视图USER_SEQUENCES获取序列定义信息

           如果指定NOCACHE 选项,则列LAST_NUMBER 显示序列中下一个有效的值

     

           SQL> SELECT sequence_name,min_value,max_value

             2      increment_by,cycle_flag,order_flag,

             3      cache_size,last_number

             4  FROM user_sequences

             5  WHERE sequence_name IN ('SEQ1','SEQ2','MY_SEQ');

     

           SEQUENCE_NAME                   MIN_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER

           ------------------------------ ---------- ------------ - - ---------- -----------

           MY_SEQ                                  1          150 N N          0         110

           SEQ1                                    1          200 Y N          0         110

           SEQ2                                    1          200 Y N          0          31

       

        5.序列应用举例:

           SQL> conn robinson/lion

           Connected.

           SQL> ALTER TABLE robinson.dept MODIFY(deptno NUMBER);

     

           Table altered.

     

           --出现了下面的错误,怀疑是授权的问题

               SQL> INSERT INTO robinson.dept(deptno,dname,loc)

                 2  VALUES(my_seq.currval,'Customers','HongKong');

               VALUES(my_seq.currval,'Customers','HongKong')

                     *

               ERROR at line 2:

               ORA-02289: sequence does not exist

     

           --使用sys帐户授权成功

               SQL> conn sys as sysdba       

               Enter password:

               Connected.

               SQL> GRANT ALL ON my_seq TO robinson;

     

               Grant succeeded.

     

           --查看权限已被成功授予

               SQL> select grantee,owner,table_name,grantor,privilege from user_tab_privs;

     

               GRANTEE    OWNER      TABLE_NAME    GRANTOR        PRIVILEGE

               ---------- ---------- ------------- -------------- --------------

               ROBINSON   SCOTT      EMP           SCOTT          SELECT

               ROBINSON   SYS        MY_SEQ        SYS            SELECT

               ROBINSON   SYS        MY_SEQ        SYS            ALTER

     

     

           --成功授权之后还是出现同样的提示

               SQL> INSERT INTO robinson.dept(deptno,dname,loc)

                 2  VALUES(my_seq.currval,'Customers','HongKong');

               VALUES(my_seq.currval,'Customers','HongKong')

                     *

               ERROR at line 2:

               ORA-02289: sequence does not exist

     

           --sequence名字前增加schema sys ,出现了如下提示

               SQL> INSERT INTO robinson.dept(deptno,dname,loc)

                 2  VALUES(sys.my_seq.currval,'Customers','HongKong');

               VALUES(sys.my_seq.currval,'Customers','HongKong')

                         *

               ERROR at line 2:

               ORA-08002: sequence MY_SEQ.CURRVAL is not yet defined in this session

     

           --修改currvalnextval,操作成功

               SQL> INSERT INTO robinson.dept(deptno,dname,loc)

                 2  VALUES(sys.my_seq.nextval,'Customers','HongKong');

     

               1 row created.

     

               SQL> SELECT * FROM dept;                              

     

                  DEPTNO DNAME          LOC

               ---------- -------------- -------------

                      10 ACCOUNTING     NEW YORK

                      20 RESEARCH       DALLAS

                      30 SALES          CHICAGO

                      40 OPERATIONS     BOSTON

                     110 Customers      HongKong

     

           --第二次使用currval可以成功执行,因该表未设置主键,故未提示冲突     

               SQL> INSERT INTO robinson.dept(deptno,dname,loc)

                 2  VALUES(sys.my_seq.currval,'Customers','HongKong');

     

               1 row created.

     

               SQL> SELECT * FROM dept;

     

                  DEPTNO DNAME          LOC

               ---------- -------------- -------------

                      10 ACCOUNTING     NEW YORK

                      20 RESEARCH       DALLAS

                      30 SALES          CHICAGO

                      40 OPERATIONS     BOSTON

                     110 Customers      HongKong

                     110 Customers      HongKong

     

        6.修改序列

           修改序列的增量, 最大值, 最小值, 循环选项

    展开全文
  • Oracle 同义词Synonym和序列Sequence Synonym 它是用来简化用户对其它数据对象(表、函数、存储过程、视图等)的命名引用 -- 创建同义词对象 create synonym emp for scott.emp; -- 等同于select * from scott....

    Oracle 同义词Synonym和序列Sequence

    • Synonym 它是用来简化用户对其它数据对象(表、函数、存储过程、视图等)的命名引用
    -- 创建同义词对象
    create synonym emp for scott.emp;
    
    -- 等同于select * from scott.emp;
    select * from emp;
    

    同义词是用户自己的数据对象,不能和已有的表、视图、函数等数据对象重名!

    -- 查看已有的同义词
    select * from user_synonyms;
    
    -- 删除同义词
    drop synonym emp;
    

    • Sequence 它是一个数据对象,用于存储和定义自增值
    create sequence seq_student;
    
    -- 查询并消耗了序列中的下一个自增值
    select seq_student.nextval from dual;
    

    注意:不要使用nextval来查看下一个自增序列值,因为查看后,当你调用insert时,nextval值又会递增!

    select seq_student.currval from dual;
    -- 注意:创建完序列后,currval无效(要先nextval执行一次)
    
    -- 指定从1000开始每次递增2
    create sequence seq_student
        start with 1000
        increment by 2;
    

    循环序列(从最小到最大值之间循环自增)

    肯定不适用于做主键!!!

    create sequence seq_student
        maxvalue 1000
        cache 50
        -- 如果没有设置缓冲,那么每次请求序列时,都会查询序列对象的下一个值
        -- 如果设置缓冲,那么数据库会一次性预先分配指定数量的序列值,避免频繁的查询序列对象(优化执行)
        -- 从缓冲/内存中读取预先分配的序列肯定要比查数据库来的快
        cycle;
    

    删除序列

    drop sequence seq_student;
    

    查看序列数据字典

    select * from user_sequences where sequence_name = 'SEQ_STUDENT';
    

    修改序列

    alter sequence seq_student
        maxvalue 10000			-- 因为没有指定cycle,因此一旦超过maxvalue报错
        increment by 2;
    
    select seq_student.nextval, seq_student.nextval, seq_student.nextval from dual;
    -- 在同一个select语句中,多次调用nextval都是相同的值!
    

    序列可以递减

    create sequence seq_test maxvalue 1000 increment by -1;
    
    select seq_test.nextval from dual;
    
    展开全文
  • Sequence 序列 – 如果我们在表中设置了主键,序列可以让主键自动增长。 – 在 Oracle 中,我们使用序列来实现主键增长。 – 在 MySql 中,我们使用 auto_increment 关键字来设置即可。 – 这个序列并不是...

    – Sequence 序列

    – 如果我们在表中设置了主键,序列可以让主键自动增长。
    – 在 Oracle 中,我们使用序列来实现主键增长。
    – 在 MySql 中,我们使用 auto_increment 关键字来设置即可。

    – 这个序列并不是单独属于某个表的,它是独立的,任何表都可以使用它。
    – 但一般情况下,为了避免数据混乱,我们建议单张表对应一个序列就好。
    – 创建序列的时候,名字不能重复,因为它是一个对象来的。

    – 在 Oracle 中常见的对象:表、序列、索引、同义词、数据库连接、视图等等。

    – 如果要使用序列,需要先创建,再使用。
    create sequence stu_seq;

    drop table tb_class;
    create table tb_class (
    id int primary key,
    code varchar(20)
    );
    insert into tb_class values (1, ‘Java9’);

    drop table tb_stu;
    create table tb_stu (
    id int primary key,
    name varchar(20) not null,

       class_id int,
       foreign key (class_id) references tb_class(id)
    

    );

    insert into tb_stu
    values(stu_seq.nextval, ‘韩红5号’, 1);

    select * from tb_stu;

    insert into tb_stu
    values(6, ‘春花2号’, 1);
    – Synonym 同义词

    – 其实就是一个别名

    – 创建同义词
    create synonym stu for tb_stu;
    select * from tb_stu;
    select * from stu;
    – DBLink

    – D:\Oracle安装路径\product\11.1.0\db_1\NETWORK\ADMIN\可以看到对应的文件
    – 1)listener.ora 监听器
    – 2)sqlnet.ora 网络
    – 3)tnsnames.ora tns配置文件

    – 创建连接
    create database link hello
    connect to system identified by “1234”
    using ‘(DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.25.161.113)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = Oracle)
    )
    )’;

    – 测试连接
    select * from scott.emp@hello;

    展开全文
  • oracle 创建同义词

    2016-11-23 14:04:19
    本教程用示例来说明在Oracle数据中如何创建和删除同义词(SYNONYM)。 概念 同义词是指数据库对象(表、视图、序列、存储过程等数据库对象)用另一个名字来引用。比如: 建立一个同义词可以排除一个对象名字的...
  • --同义词创建的语法 /* CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema .] synonym  FOR [schema .] object [@ dblink]; */ --同义词的优点 --1.安全,隐藏了数据库对象的名称和所有者 --2.提供了对象的公共访问 --...
  • oracle序列同义词

    千次阅读 2017-05-25 08:06:26
    创建序列books_seq 初始值为...CREATE SEQUENCE books_seq START WITH 10 INCREMENT BY 1 MAXVALUE 100000 CACHE 10 NOCYCLE; 创建序列books_seq2 初始值为100000 递步增长-5 CREATE SEQUENCE books_seq2 S
  • Oracle 同义词

    2012-12-20 13:30:34
    1. Oracle同义词简介 Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图...
  • ORACLE同义词

    2015-10-10 23:48:38
    转载【红黑联盟—还不算晕的专栏】ORACLE公有/私有同义词ORACLE公有私有同义词 同义词概念 同义词作用同义词概念 同义词可以是表、索引、序列、过程、函数、包、视图、数据链等模式对象的一个别名。经常用于简化对象...
  • Oracle同义词(synonyms)详解  2012-01-17 15:50:36| 分类: DB·Ora-basic | 标签: |举报 |字号大中小 订阅         用微信 “扫一扫” 将文章分享到朋友圈。   ...
  • 本教程用示例来说明在Oracle数据中如何创建和删除同义词(SYNONYM)。概念同义词是指数据库对象(表、视图、序列、存储过程等数据库对象)用另一个名字来引用。比如:建立一个同义词可以排除一个对象名字的限制.如果你的...
  • oracle同义词和序列

    2011-08-08 11:58:48
    [size=large][color=red][size=xx-small]同义词同义词是一个对象的替代名称[/size][/color][/size] 作用:利用同义词可以很方便地操纵不同用户模式下的对象。 通过select user from dual查看当前使用的用户。 ...
  • oracle 同义词/视图

    2017-09-14 19:16:12
    oracle 中的同义词 和 视图。
  • Oracle数据库之同义词(SYNONYM)使用

    万次阅读 2014-12-31 21:18:39
    实例讲解Oracle数据库同义词的创建、删除
  • Oracle数据库中同义词、试图和序列
  • 同义词(Synonyms) 创建同义词: 语法 CREATE [PUBLIC] SYNONYM synonym FOR object; CREATE SYNONYM d_sum 2 FOR dept_sum_vu;删除同义词DROP SYNONYM d_sum; 用户访问控制: GRANT(赋予用户相关权限)和RE...
  • Oracle同义词,序列,视图,索引,表空间一、同义词二、序列调用序列修改序列删除序列三、视图四、索引五、表空间 一、同义词 同义词是(synonym)数据库对象的一个别名,oracle可以为表,视图,序列,过程,...
  • oracle中private同义词和public同义词

    千次阅读 2016-01-15 13:22:02
    假设oracle有以下两个用户: admin , visitor 我们在admin下建立了 testtable 这个表,并且对visitor用户赋权 然后我们用visitor登陆 : 查询这个表的时候我们一定需要这样写 select * from admin.testtable 如果直接...
  • Oracle同义词和序列

    2019-09-28 02:47:03
    1 1 同义词:是表、索引、视图的模式对象的一个别名,通过模式对象创建同意词,可以隐藏对象的实际名称和 所有者信息,为对象提供一定的安全性,开发应用程序时;应该尽量避免直接使用表,视图 或其他对象,改用对象...
  • Oracle序列和同义词

    2020-12-29 09:29:02
    序列:序列号生成器,自动生成序列号 一般用来作为主键 是oracle独有的 创建序列需要有创建序列的权限:create sequence 语法格式: create sequence 序列名(以seq_开头) [increment by n]–步长 [start with n]–...
  • 导出oracle数据库对象---同义词,系列,视图作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站脚本可分两部分:同义词1:synonym.cmd:sqlplus dxsq/teledoone@jnnew @synonym.sql2.synonym.sql:create table...
  • ORACLE授权/同义词/序列语句

    千次阅读 2019-10-23 22:19:33
    授权/同义词/序列 点关注不迷路,欢迎再访! 1.授权 -- Grant/Revoke object privileges grant select, insert, update ON AI_OPR.T_user_info TO TP_AI_OPR; 2.同义词:TP_AI_OPR执行创建AI_OPR表同义词 -- ...
  • 同义词 是数据库对象的一个别名,Oracle可以为表、视图、序列、存储过程、函数、程序包等制定一个特定的别名。 同义词的两种类型: >>私有同义词:拥有CREATE SYNONYM 权限的用户(包括非管理员用户)即可...
  • ORACLE SEQUENCE

    2010-05-19 10:21:55
    sequence是用来在多用户环境下产生唯一整数的数据库对象。序列产生器顺序生成数字,它可用于自动生成主键值,并能协调多行或者多表的主键操 作。没有sequence,顺序的值只能靠编写程序来生成。先找出最近产生的值...
  • 索引用于快快速访问数据 创建索引 Oracle P143 create index ixnameon on student(sname,tc); 修改索引 alter index ixgrade rename to ixgradescore ...同义词用于简化数据库对象的访问,另外提供了一定

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,898
精华内容 2,759
关键字:

oraclesequence的同义词