zoukankan      html  css  js  c++  java
  • oracle同义词 转

    1.为啥要用同义词:

    同义词,顾名思义就是两个词的意思一样,可以互相替换.那它的作用有哪些呢:

    a一个最明显的目的就是简化sql.如果某个数据库对象的名字太长了,可以创建一个短一点的同义词.就相当于是缩写呗.

    b.另外一个目的是隐藏一些对象的信息.比如查找另一个 schema中的某个表,需要在表名前加schema名做为前缀.如果创建一个同义词就可以隐藏schema信息.

    2.怎么创建同义词.

    语法:CREATE [OR REPLACE] [PUBLIC] SYNONYM synonym_name FOR [schema.]object

    1.创建私有同义词:

    例如:CREATE SYNONYM arwen FOR table_of_arwen

    这样使用select * from arwen或select * from table_of_arwen是一样的.

    删除同义词:DROP SYNOYM arwen.

    注意:私有同义词只有创建它的用户自己可以用.如果其他schema要用必须得加创建者schema为前缀.这和其他对象是一样的.

    2.创建公共同义词:

    CREATE PUBLIC SYNONYM arwen FOR table_of_arwen

    所有的schema都能使用公共同义词.比如schema scott访问schema arwen的表table_of_arwen就可以用select * from arwen

    有些人可能会奇怪这种情况为啥就不用到schema做前缀了.可能系统默认加了吧.

    所以CREATE PUBLIC SYNONYM arwen FOR table_of_arwen或CREATE PUBLIC SYNONYM arwen FOR arwen.table_of_arwen是等效的.

    其他schema都能用arwen去查找.

    注意:如果其他schema没有权限查找表table_of_arwen则 也不能使用它的同义词去查找的.

    3.关于错误:同义词转换不再有效.

    当创建同义词时不会检查同义词代表的对象是否存在,都会成功创建.比如CREATE PUBLIC SYNONYM arwen FOR no_table_exist

    假如不存在一个表叫no_table_exist或者其他数据库对象叫这名.

    则SELECT * FROM arwen时就会有错误提示:同义词转换不再有效.当然如果本来有那表后面删除了也会有同样的错误.

    3.和同义词类似的别名

    oracle里面还有个概念叫别名.它和同义词功能类似.只不过使用范围很小.主要用在一个sql语句中,只能临时起作用.像临时变量一样.

    例如:

    SELECT emp.ename,bonus.sal FROM emp ,bonus  where emp.ename = bonus.ename

    我们可以给emp取一个别名e,bonus取b列也取别名则查询语句如下

    SELECT e.ename AS myname,b.sal AS mysal FROM emp  e,bonus  b WHERE e.ename = b.ename

    里面的关键字AS是可选的,如果去掉也会实现同样的功能.在列中可用AS,但给表取别名是不能加的.

  • 相关阅读:
    javascript数据类型转换
    javascript运算符
    数据类型
    第一个JavaScript代码
    Javascript简介
    z-index
    Java代码优化
    Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
    java中继承条件下构造方法的执行过程
    java中的继承、重载和覆盖是什么意思
  • 原文地址:https://www.cnblogs.com/janeaiai/p/5190914.html
Copyright © 2011-2022 走看看