oracle中schema是什么

oracle中schema是什么

浏览次数:1433次
信息来源: 银河系资源网
更新日期: 2022-05-14
文章简介

在oracle中,schema是数据库对象的集合;一个oracle用户对应一个schema,并且只能通过创建用户的方法创建schema,可以将schema称为user的别名,也就是schema名字同user名字对应并且相同。本教程操作环境:Windows10系...

在oracle中,schema是数据库对象的集合;一个oracle用户对应一个schema,并且只能通过创建用户的方法创建schema,可以将schema称为user的别名,也就是schema名字同user名字对应并且相同。

本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。

oracle中schema是什么

我们先来看一下他们的定义:

A schema is a collection of database objects (used by a user.).

Schema objects are the logical structures that directly refer to the database’s data.

A user is a name defined in the database that can connect to and access objects.

Schemas and users help database administrators manage database security.

从定义中我们可以看出schema为对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。

咳,说了这么多,给大家举个例子,否则,一切枯燥无味!

SQL> Gruant dba to scott
SQL> create table test(name char(10));
Table created.
SQL> create table system.test(name char(10));
Table created.
SQL> insert into test values('scott'); 
1 row created.
SQL> insert into system.test values('system');
1 row created.
SQL> commit;
Commit complete.
SQL> conn system/manager
Connected.
SQL> select * from test;
NAME
----------
system
SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名
Session altered.
SQL> select * from test;
NAME
----------
scott
SQL> select owner ,table_name from dba_tables where table_name=upper('test');
OWNER TABLE_NAME
------------------------------ ------------------------------
SCOTT TEST
SYSTEM TEST

--上面这个查询就是我说将schema作为user的别名的依据。实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名。

教程:《Oracle教程》

以上就是oracle中schema是什么的详细内容

标签: 暂无标签
oracle中audit怎么关闭
« 上一篇
oracle 11g中的g是什么意思
下一篇 »
  • oracle怎么查询数据库中的所有表名
    811259阅读
    查询方法:1、使用“SELECT * FROM all_tables WHERE OWNER = '用户名'”语句,可查询指定用户的所有表名;2、使用“SELECT * FROM user_tables”语句,可查询当前用户的所有表名。本教程操作环境:Windows7...
  • 总结MySQL常见错误分析与解决方法
    79856阅读
    免费学习:mysql教程一、Can’t connect to MySQL server on ‘localhost’ (10061) 翻译:不能连接到 localhost 上的mysql 分析:这说明“localhost”计算机是存在的,但在这台机器上却没提供MySQL服务。 需要启动这...
  • mysql怎么查询第一列数据
    2493阅读
    在mysql中,可以利用SELECT语句来查询第一列数据,该语句可以根据指定列的字段名来查询数据并输出结果,只需要将“SELECT”关键字后面的字段名设置为需要查找的第一列字段名即可; 语法“SELECT 第一列字段名 FROM 表...
  • oracle怎么查询clob字段数据
    1885阅读
    在oracle中,可以利用instr()函数配合select语句查询clob字段数据,instr函数用于判断字符串是否含有指定的字符,语法为“select*from 表名 ...instr(字段名(clod类型),'查询条件',1,1)”。本教程操作环境:...
  • mysql主从同步如何跳过错误
    1827阅读
    mysql主从同步跳过错误的方法:1、跳过指定数量的事务,代码为【mysql>SET GLOBAL SQL_SLAVE_SKIP..】;2、修改mysql的配置文件,通过【slave_skip_errors】参数来跳所有错误。本教程操作环境:windows7系统、mysql ...
  • oracle怎么判断数据是否是数字类型
    1678阅读
    方法:1、利用“trim(translate(column,'0123456789',' ')) is NULL;”判断数据是否是数字;2、利用“regexp_like(column,'^[0-9]+[0-9]$');”判断数据是否是数字。本教程操作环境:Windows...
  • mysql workbench是什么意思
    1674阅读
    mysql workbench是管理MySQL数据库工具的意思,是一款专门为mysql设计的集成化桌面软件;该软件同时具有开源社区版和收费商业版两个版本,主要用于设计和创建新的数据库图示、建立数据库文档以及进行复杂的mysql迁移...
  • 实例详解oracle添加唯一约束
    1655阅读
    本篇文章给大家带来了关于Oracle的知识,其中主要介绍了添加唯一约束的问题,唯一性约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束,下面一起来看一下,希望对大家有帮助。教程:《Oracle教程》...
  • MySQL索引给拿捏住了
    1587阅读
    本篇文章给大家带来了关于mysql的知识,其中主要介绍了关于mysql索引的问题,包括了索引按照逻辑功能划分、按照物理实现划分、按照字段个数划分等索引类型问题,希望对大家有帮助。学习:mysql教程在 SQL 优化中,索...
  • oracle怎么删除trigger
    1543阅读
    在oracle中,可以利用DROP TRIGGER语句来删除trigger,DROP语句用于进行删除操作,DROP TRIGGER语句的作用就是删除指定的trigger,语法为“DROP TRIGGER 需要删除的trigger名称;”。本教程操作环境:Windows10系统、...

如本文对您有帮助,随意赞赏一下!