Oracle的数据表:
l 关系表
l 临时表
l 索引表
l 外部表
l 对象表
8.1数据类型
名称 含义
Char 用于描述定长的字符型数据,长度<=2000字节
varchar2 用于描述变长的字符型数据,长度<=4000字节
nchar 用来存储Unicode字符集的定长字符型数据,长度<=1000字节
nvarchar2 用来存储Unicode字符集的变长字符型数据,长度<=1000字节
number 用来存储整型或者浮点型数值
Date 用来存储日期数据
Long 用来存储最大长度为2GB的变长字符数据
Raw 用来存储非结构化数据的变长字符数据,长度<=2000字节
Long raw 用来存储非结构化数据的变长字符数据,长度<=2GB
rowid 用来存储表中列的物理地址的二进制数据,占用固定的10个字节
Blob 用来存储多达4GB的非结构化的二进制数据
Clob 用来存储多达4GB的字符数据
nclob 用来存储多达4GB的Unicode字符数据
Bfile 用来把非结构化的二进制数据存储在数据库以外的操作系统文件中
urowid 用来存储表示任何类型列地址的二进制数据
float 用来存储浮点数
8.2创建表的策略
这个不需要多说,这是创建一个高效的数据库的关键。至于如何设计一个高效的数据库,是一个从需求分析-〉概念结构设计-〉逻辑结构设计-〉物理设计的过程,这里很大一部分靠的是实际经验。积累吧,呵呵。
前几章已经讲过,如果经常使用update操作则需要加大PCTFREE值,如果经常使用insert操作则需要加大PCTUSED值。
尽量不要将用户表创建在SYSTEM表空间中,尽量不要将同一个应用中的表分散在不同的表空间中。
在使用CREATE TABLE…AS SELECT语句时,尽量加上NOLOGGING子句。
尽量将表和索引放在不同的表空间中,为其分配足够的临时空间。
8.3创建表
创建表的语法很简单,如上图。不过这两个表是创建在了SYSTEM表空间中了。
上图的例子是通过查询创建的表,为了使用新的表空间,我们首先创建了一个名字叫test的表空间,之后又将temp2这张表创建在了test表空间中。当然这里也使用了很多参数,参数含义在前几章已经讲过了。下面我们再举一个参数比较全一点的例子如下图:
临时表在自动删除的时候有两种情况,一种是事物结束,一种是会话结束。
l 一种是事物结束:on commit delete rows
l 一种是会话结束: on commit preserve rows
如图:
以上都是使用oracle的sqlplus worksheet 工具通过psql来创建表,当然我们也可以通过控制台通过鼠标来创建表
如上图,在展开的方案项目中鼠标右键表项目,通过创建选项也可以创建表。细节就不多说了,基本上的意思就是将我在上面提到的参数通过鼠标点选来创建表。
8.4修改表
以上为修改表的语法示例。
8.5表存储空间
一般来说当一个表需要更多的空间时oracle会自动分配。不过有时候我们可以手动为表分配新区。
增加一个大小等于next值的新区。
回收了所有空闲区空间。
8.6删除表
删除的语法很简单:
Delete from temp1;删除表中所有数据,比较占资源。
Drop table temp1;将整个表彻底删除。
Truncate table temp1;快速删除表中所有数据。
8.7约束
隐式约束,如下图
显式约束如下图:
上图的语法演示了如何添加和删除一个约束。
有时候我们在插入批量数据的时候,会遇到数据库报的违反约束的错误,特别是外键约束尤其会引起这方面的问题。这个时候我们就需要将各个约束禁用掉,等修改好数据之后,再将其激活。语法如下图: