Oracle表
一oracle的表的分类:
基本表:关系表,用于存储永久数据
临时表:一般由系统使用,存放某一特定会话中的数据,如查询的结果,回退的数据
按索引组织的表:按照主关键字进行数据排序存储的表
外部表:数据存储在oracle数据库外部的文件中,可读,不可更新
对象表与嵌套表:支持面向对象操作的数据表。【对象表:采用抽象数据类型来定义表,嵌套表:一个表可以被嵌入到另一个表中】
开发人员常用的表:基本表/按索引组织的表/对象表与嵌套表存储用户永久数据
关系/基本表又分三种:
规则表:普通的关系表,其中数据按自然顺序存储,mysql只有基本表,而且基本表里只有规则表
分区表:对数据量大,并发访问要求高的表可分区存储,
簇表:簇中各表数据共享存储快(按关键字存储到一起),可显著改善多表查询的性能
其中分区表和簇表是oracle对mysql的一种提高,用于解决数据量大,多表查询的问题
其中对象表与嵌套表是oracle对面向对象的一种支持
二Oracle数据类型
char:<=2kb
vachar2:<=4kb
long:可变长字符类型,<=2GB
clob:大字符串对象类型
-----------------------------------------------
date:固定长度的日期类型 7b
/timestamp:
-------------------------------------------
number:可存放实型和整型
-------------------------------------------
raw:可变长二进制数据类型 ,<=4kb
long raw:<=2GB
blob:大二进制对象类型<=4GB
-----------------------------------
三oracle如何创建基本表?
规则表
不能使用oracle的保留字作为表名,MySQL就可以用mysql的保留字作为表名,相比之下oracle显得更合理一些,因为有的时候
在mysql下真的使用了保留字作为表名,会带来很多的麻烦。。。。。。我曾经就在mysql中将order作为表名,因为这个我找了8个多小时的bug!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(1)create table创建表
(2)利用查询创建表 as
其中oracle数据库在建表时有一个可选的参数---存储参数,用来控制表的空间占用情况,(指定该表属于哪个表空间,该表占用多大的空间)
参照完整性体现在当删除父记录时级联子记录的对应情况
cascade:表示当删除父记录时,级联删除子记录
set null:表示当删除父记录时,对影响到的子记录的外键置为null
no action:表示当删除父记录时,子记录不做变化
restrict:表示若有子记录和要删除的父记录对应,那么不允许删除该父记录
簇表
一个簇由共享相同数据块的一组表组成,簇将不同表的相关的行一起存储到相同的数据块,使用簇可以减少磁盘i/o的次数,
什么样的表可使用簇呢?(1)表主要用于查询,表不总被插入/更改,(2)表中的记录经常被连接查询
创建簇表
(1)创建簇
(2)基于该簇创建簇表
(3)在数据插入之前,必须先创建簇索引
分区表
实现快速存取又大量数据的表的方法时创建和使用分区表和分区索引
四oracle如何创建按索引组织的表?
按索引组织的表,数据按主键排序存储在B-树索引组织中,
当执行必须基于主键的查询且相关的少量字段经常要一起获取的应用时,采用按索引组织的表
五oracle如何创建外部表?
oracle允许以只读的方式访问外部表中的数据,外部表是指不再数据库中的表
六oracle如何创建对象表和嵌套表?
对象表
oracle已不再是传统的数据库系统,对对象类型提供了支持,发展为对象关系型数据库系统、
创建对象表
(1)创建对象类型
(2)使用对象类型创建表
嵌套表
嵌套表是通过表类型进行定义的