什么是模式(schema)
创新互联是一家专业的成都网站建设公司,我们专注网站设计、成都网站建设、网络营销、企业网站建设,买链接,广告投放为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。
模式是一个逻辑容器,你可以把模式理解为文件夹,方便我们对一组数据库对象进行管理。通常,一个大的系统由许多小的系统组成,我们可以给每个小的系统创建一个模式,把该系统中用到的数据库对象都创建在这个模式中。例如,每个公司都会有员工,我们可以创建一个模式 HR,然后在 HR 中创建一个表 EMPLOYEES 来维护员工信息,如果需要在其他模式中访问 EMPLOYEES 表,我们需要指定它的全名 HR.EMPLOYEES。
模式对象
我们可以在模式中创建表(Table), 分区(Partition), 视图(View), 索引(Indexe), 包(Package),存储过程(Procedure),函数(Function),触发起(Trigger),类型(Type), 序列(Sequence), 同义(Synonym)等数据库对象。
创建模式
模式隶属于某个数据库用户,模式名和数据库用户是相同的,那如何创建模式呢?呵呵,很简单,其实就是创建数据库用户。
SYS 和 SYSTEM 模式
当我们安装 Oracle 的时候,系统自动帮我们创建了 SYS 和 SYSTEM 模式,它们拥有最高权限,用来管理数据库,SYSTEM 比 SYS 提供了更多的表。
-- 更多参见:Oracle 精萃
-- 声明:转载请注明出处
-- Last edited on 2015-09-04
-- Created by ShangBo on 2015-09-04
-- End
从数据库用户角度看,数据库中的数据是以表、视图等方式储存的。那么用户自己是怎么创建表的呢?简单的有两种方式,一种是用户可以在Oracle提供的SQL*Plus中使用CREATE TABLE语句创建表,也可以通过OEM图形化工具创建表。
工具/材料
电脑
Oracle 10g
CREATE TABLE创建表 01
首先用户必须要有CREATE TABLE系统权限,并且只能在自己的模式中创建表,图中的例子使用CREATE TABLE语句在当前模式中创建了一个共有5列的表:表的名称为employees,包含 emp_id, name, job,age,dep_id 等5列,后面的number、 varchar2、等为数据类型,括号里面为长度。
02
如果想要在其他模式中创建表,则必须在表名前加上模式名,并且用户还要有CREATE ANY TABLE系统权限,例如图中语句将在SYSTEM模式中创建employees1表
OEM创建表 01
在OEM主界面中选择【管理】选项卡,进入如图所示的数据库管理界面;然后在“数据库对象”中单击【表】选项。
02
系统进入管理表界面,在该页面中单击【创建】按钮,进入如图所示的“创建表的组织形式”界面。在该界面中用户可以选择创建的表类型---标准表、临时表或索引表。
03
在选择创建的表类型后,单击【继续】按钮,进入如图所示的“创建表”界面。在“名称”文本框中输入要创建表的名称。系统在“方案”文本框中显示当前模式,这表示新创建的表将属于该模式。
04
在“创建表”页面中选择“约束条件”选项卡,进入如图所示的“表约束条件”页面。该页面中用户可以为创建的表定义约束条件,包括主键约束(PRIMARY)、唯一约束(UNIQUE)、检查约束(CHECK)和外键(FOREIGN)约束。
05
设置储存参数,选择“储存”选项卡,进入如图所示的储存设置界面,最后保存表格,单机【确定】按钮,系统会根据用户对表的设置,创建一个新表。
oracle在创建用户(user)的时候自动创建一个同名的模式(schema),基本上,你不用区分模式和用户,登录用户,也就是使用了该模式。
至于用户(模式)下要创建哪些对象,这个得依据需求,做出概要设计才能确定。比如图书表,工作人员表,学生表,图书借阅记录表是最基本的,然后还要有很多外围的支持表(如各种代码表)和视图,以及若干存储过程、触发器等进行数据处理和保持业务逻辑的完整性一致性,以及其它的一些OBJECTS。这些细节是在需求分析的基础才能确定的。你这一句话太笼统,暂时无法确定。
SQL创建用户johny
2由1234确定
3默认表空间johny_tabspace
4临时表空间johny_tabspace_temp;
举例说明
oracle数据库的特点:
一个数据库,可创建多个用户,然后在每个用户下创建表,序列等,所以Schema(模式)的概念在oracle数据库中不是很重要,因为我们连接数据库时就是连接的'特定用户',所以里面不可能存在相同名字的表
***********
Mysql,postgre等其它数据库的特点:
一个用户,一个库下可创建多个模式,在同一个模式下不能创建相同名字的表,所以可创建多个模式,在不同的模式中可存在同名字的表,当写"select * from users"时,如果两个模式下都有users表 则应该加上模式名字以区分调用的是那个,语句写成:"select * from db1.users" ,即体现出"模式"这个概念的作用