模式对象
数据库模式是数据结构的逻辑容器,称为模式对象。模式对象的示例是表和索引。您可以使用SQL创建和操作模式对象。
每个用户帐户拥有一个模式,该模式与用户具有相同的名称。
在生产数据库中,模式所有者通常表示数据库应用程序而不是人。
模式对象:表、视图、序列、Partitions(分区)、索引、Dimension(维)、Synonyms(同义词)、PL / SQL子程序和包
注:存储在数据库中,可以使用SQL语句创建和操作,但不包含在模式中的对象包括数据库用户帐户,角色,上下文和字典对象。
存储结构
--从逻辑的角度来看:
一个数据库(database)下面可以分多个表空间(tablespace)
一个表空间下面可以分多个段(segment)
一个数据表要占一个段(segment),一个索引也要占一个段(segment)
一个段(segment)由多个 区间(extent)组成
一个区间由一组连续的数据块(data block)组成,这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。
--模式和表空间之间没有关系:
表空间可以包含来自不同模式的对象
模式的对象可以包含在不同的表空间中
每个对象的数据物理地包含在一个或多个数据文件中。
模式对象依赖
如果对象A的定义引用了对象B,那么,A就是依赖对象,B则是被引用对象。(如视图)
当被引用对象的更改可能会影响依赖对象时,依赖对象被标记为无效。。。(视图关联的表如果被误删,此时视图不可用)
在一个无效的依赖对象重新变得可用之前,必须基于对被引用对象的新定义重新编译。当无效依赖对象被引用时,重新编译会自动发生。(视图关联的表被还原,视图变成可以)
SYS和SYSTEM架构
SYS模式存储用于基表和视图数据字典
SYSTEM模式用于存储各种Oracle数据库选项和工具使用的附加表和显示管理信息视图,以及内部表和视图
表
--Oracle数据库表分为以下基本类别:
关系表
对象表
堆组织表(新增快,查询相对慢)
索引组织表(新增相对慢,查询快)
外部表(不存在数据库中,只读)
列
表定义包括表名和列集
在创建表时为每列提供列名,数据类型和宽度
虚拟列,与非虚拟列不同,它不占用磁盘空间(例:查询两个数值列之和得到一个虚列)
隐形列(通过sql命令设置某一个是否可见)
CREATE TABLE products ( prod_id INT, count INT INVISIBLE ); (新建设置count为隐形列)
ALTER TABLE products MODIFY ( count VISIBLE );(设置count可见)
行
列是对应表中的记录列信息的集合
oracle常见数据类型
字符类型
时间日期类型
timetamp类型
数字类型
rowid类型