Mysql

image.png
CREATE SCHEMA 可代替 CREATE DATABASE
在mysql中基本认为schema和数据库(database)是相同的,也就是说schema名称和数据库实例的名称是相同的,一个数据库只拥有一个schema

oracle

Oracle表空间是一个逻辑的概念,它在物理上是不存在的,真正存放数据的是数据文件(data files)。一个数据库有多个表空间,一个表空间包含多个数据文件。表空间是Oracle数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
创建表空间时会在物理磁盘上建立一个数据文件,作为数据库对象(用户、表、存储过程等等)的物理存储空间。当数据文件空间不足时,可以对数据文件进行扩容或增加数据文件。


在oracle数据库中,schema是数据库database的一部分。
模式与表空间 - 图2

“我们可以把Database看作是一个大仓库。仓库分了很多很多的房间,Schema就是其中的房间。 一个Schema代表一个房间。Table可以看作是每个Schema中的床,Table(床)被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了。 然后床上可以放置很多物品,就好比 Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table。 现实中每个仓库放置物品的基本单位就是床, User就是每个Schema的主人(所以Schema包含的是Object,而不是User),user和schema是一一对应的,每个user在没有特别指定下只能使用自己schema(房间)的东西。 如果一个user想使用其他schema(房间)的东西,那就要看那个schema(房间)的user(主人)有没有给你这个权限了,或者看这个仓库的老大(DBA)有没有给你这个权限了。 换句话说,如果你是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是你的(包括房间),你有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,你还可以给每个User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了。