加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于Oracle中schema和user区别的认知

发布时间:2020-12-12 16:04:20 所属栏目:百科 来源:网络整理
导读:最近在测试代码的时候遇到了一件事,花费了不少脑力。 在Java代码中 DatabaseMetaData 类的 getColumns 方法(参照http://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,%20java.lang.String))获取Test表

最近在测试代码的时候遇到了一件事,花费了不少脑力。


在Java代码中DatabaseMetaData类的getColumns方法(参照http://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,%20java.lang.String))获取Test表的所有列信息。然后恰好在我的Oracle数据库中我曾经通过system用户添加了这个Test表,然后偶尔发现system作为一个超级用户不应该轻易拿出来操作,而且system用户(其实是schema,后面谈)下有很多系统表,看起来很是凌乱。然后我新建了用户hello,然后为了省事我从system下面复制了Test表到hello用户下。这就是背景。


然后在使用getColumns方法的时候就这样使用了getColumns(null,"Test");。然后发现取到的值是每个列都有一条重复的数据。经过研究发现,我们应该在getColumns方法的第二个参数中添加对应的schema用来确定正在操作的schema。问题就来了,以前从来想过这个schema到底是个什么玩意,这会懵逼了,然后就有了这篇博客。


下面就是正题。


关于Oralce数据库中user和schema的的关系,参照 https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:6162110256950 user就是一个用户,我们可以直接理解为他就是我们登录时使用的那个字符串;而schema则是和这个用户对应的所有对象的集合(Objects or Collections),具体在程序开发过程中schema名等于user名。 例如一个简单的查询语句select * from abc.test 这里的abc就是schema名,而不是user,尽管它俩个总是看起来难于区别。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读