对于初学者来说,对表的概念也有一定的认识。因为我们对数据库的操作,90%以上是对表的操作。

常见表的规则表(Regular table),严格意义上来说又叫 heap table(堆表),也就是我们最普通的一张表。

partition talbe、Index-organized table、Cluster 三种表类型。

partition Table :

如果一张表非常大,里面存储了几千万条、上亿条记录,那么对这一张表进行操作,效率就非常低了。分区表是将大表的数据分成称为分区的许多小的子集。假如一张表是存放中国人口信息的表,那么这么多条记录是有规律的,可以基于某一个字段将其分开。那么可以根据省级行政区可以划分  个分区,每个分区实际上就是一个独立的表,但在逻辑上这些分区又同属于一张表。

如果一张表是普通的表,只点一个 segments;如果一张表是 partition 的表,可能占多个 segments。

Index-organized table :

索引组织表(IOT),就是存储在一个索引结果中的表。存储在堆中的表是无组织的(也就是说,只要有可用的空间,数据可放在任何地方)。对你的应用来说,IOT 表和一个“常规”表并无差别。使用堆组织表时,我们必须为表和表主键上的索引分别留出空间。而 IOT 不存在主键的空间开销,因为索引就是数据,数据就是索引。

IOT 带来的好处不仅节约磁盘空间的占用,更重要的是大幅度降低了 I/O,减少了访问缓冲区 缓存(尽管从缓冲区缓存获取数据比硬盘要快得多,但缓冲区缓存并不是免费,而且也绝不是廉价的。每个缓冲区缓存获取都需要缓冲区缓存的多个闩(shuān),而闩是串行化设备,会限制应用的扩展能力)

Cluster :

Oracle 中普通的表称为堆表(heap table),堆表中的数据是无序存放的,往往在使用一段时间后,数据就变得非常无序。比如:索引中相同的 key 对应的数据存放在不同的 block 中,这时,如果要通过索引查询某个 key 的数据,就需要访问很多不同的 block,代价非常高。 我们发现很多表与表,他们的数据有相关性,因为我们访问一个表里的数据,往往要访问另一些表里的数据。我们可以把这些数据物理上存储在一块。

本节的重点也就是讲解普通的表。

对于一张普通的表,他的插入规则是无序,我们把数据的存储空间看成学生宿舍楼一个连一个的房间。并不是第一个来的人就一定先在第一个房间。先来的人只要发现某个房间还有床位是空的就可以入住。

那么我们如何让他变成的有序的呢?那么我可以专业创建一列来记录顺序。宿管在一楼门口发号码,进来一同学,发一个号码,上面标注几号房间几号床位。这样所有入住的同学都是有序的。

SQL> create table test (a int,b varchar2(200) default rpad('*',200,'*'), c varchar2(200) default rpad('*',200,'*'));

Table created.
SQL> insert into test(a) values(1);
1 row created.
SQL> insert into test(a) values(2);
1 row created.
SQL> insert into test(a) values(3);--插入若干条记录
1 row created.
.........
SQL> select a from test; A
----------
2
3
4
5
1 SQL>

  

上面查询插入的结果是无序的,如何变成的有序的呢?加上 order by

SQL> select a from t order by a;

         A
----------
1
2
3
4
5 SQL>

  

我们可以在表中添加一列用来记录行号,每添加一条数据自动加1。这样就有效保证插入有数据是有序列的。

表的字段类型划分:

Oracle 数据类型分用户自定义类型(user-defined)和内嵌类型(built-in),但我们大多时候都用内嵌类型,在极特别情况下才会用到自定义类型。

内嵌类型可以用为三大类,scalar 翻译成标量,可以理解成单一的数据类型,collection 收集, 这里可以理解为复合的类型,relationship 关系类型,类似于指针引用。而我们一般最常用的也就 是 scalar 数据类型。

Scalar 又可以分为:

字符串型 char(n)、nchar(n)、varchar2(n)、nvarchar2(n)、

数值型 number(p,s)、

日期型 data、timestamp

二进制类型 raw(n)、blog、clob、nclob、bfile、long、long raw、

记录编号 rowid、urowid

CHAR & VARCHAR2 类型存储比较:

char(n) n=1 to 2000 字节定长字符串,n 字节长,如果不指定长度,缺省为 1 个字节长(一个汉字为 2 字节)。

varchar2(n) n=1 to 4000 字节可变长的字符串,具体定义时指最大长度 n,这种数据类型可以放数字、字母以及 ASCII 码字符集(或者 EBCDIC 等数据库系统接受的字符集标准)中的所有符号。如果数据长度没有达到最大值 n,Oracle 8i/9i/10g 会根据数据大小自动调节字段长度,如果你的数据前后有空格,Oracle 8i 会自动将其删去。VARCHAR2 是最常用的数据类型。

Varchar2 相比于 char 在大数据的存储中就有效果的节约了很多空间。 Nchar、Nvarchar2 分别是 char 与 varchar2 的国际版。

表日常的一些操作

表的改变

alter table test move tablespace test;

  

清空表

truncate table test

  

删除表

drop table test
drop table test cascade constraints;

  

删除某列数据

alter table test drop column comments cascade constraints checkpoint 1000;

  

创建表各个参数的意义:

Create table
create table TEST.T1
(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13)
)
tablespace TEST
pctfree 10 --此块空闲空间小于10%,则此块在FREELIST列表中移除
initrans 1
maxtrans 255
storage
(
initial 64K --当前64k大小
next 1M --下一个锻的空间
minextents 1 --最小锻个数
maxextents unlimited --限制最大锻个数-不限制
);

Oracle表概念的更多相关文章

  1. oracle表分区、表分析及oracle数据泵文件导入导出开心版

    1.先说oracle表分区是什么吧,这样吧我们来举个桃子,栗子太小,我们就不举了,我们来举个桃子. 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到 ...

  2. Oracle表空间,用户,用户授权

    一:Oracle表空间 1,Oracle表空间与SQL Server文件组对比 SQL Server的文件组(文件组包括若干MDF,NDF数据文件)对我们来说并不陌生,前段时间我在博客“怎样玩转千万级 ...

  3. oracle表分区详解

    原文来自:http://www.cnblogs.com/leiOOlei/archive/2012/06/08/2541306.html oracle表分区详解 从以下几个方面来整理关于分区表的概念及 ...

  4. Oracle表空间管理

    oracle表空间相关常用命令小结: 1.ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;              //修改表空间数据文件类型 2.ALT ...

  5. 【转】Oracle 表空间与数据文件

    --============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...

  6. Oracle表连接

    一个普通的语句select * from t1, t2 where t1.id = t2.id and t1.name = 'a'; 这个语句在什么情况下最高效? 表连接分类: 1. 嵌套循环连接(N ...

  7. interview:about Oracle表空间

    Oracle表空间 SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计.Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献.可 ...

  8. oracle表连接------>排序合并连接(Merge Sort Join)

    排序合并连接 (Sort Merge Join)是一种两个表在做连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的连接方法. 对于排序合并连接的优缺点及适用场景例如以下: a,通常 ...

  9. Oracle表空间的管理方式

    解释说明:表空间是一个逻辑概念:=> oracle 逻辑概念段区块管理方式: number one => tablespace number two=> segments Oracl ...

随机推荐

  1. MessagePack Java Jackson 在不关闭输出流(output stream)的情况下序列化多变量

    com.fasterxml.jackson.databind.ObjectMapper 在默认的情况下在写出输入后将会关闭输出流(output stream). 如果你希望序列化多值变量在同一个输出流 ...

  2. noi.ac #536 打地鼠

    题目链接:戳我 [问题描述] 小A在玩打地鼠游戏.有一个n×m的网格,每个位置上地鼠都会要么冒出头要么缩进去.地鼠很狡猾,每次小A选一个地鼠冒出头的格子(x,y)把它打下去,但同一行同一列的地鼠全都会 ...

  3. Springdata-Jpa学习笔记

    Respository接口 Respository是Springdata JPA中的顶层接口,提供了两种查询方法: 1)基于方法名称命名规则 2)基于@Qeury注解查询 1. 方法名称命名规则查询 ...

  4. State Threads之编程注意事项

    原文: Programming Notes 1. 移植 State Thread 库可移植到大多数类 UNIX 平台上,但是该库有几个部分需要依赖于平台特性,以下列出了这些部分: 线程上下文初始化. ...

  5. 一、基础篇--1.2Java集合-HashMap死循环问题

    为什么HashMap会出现死循环 首先,我们知道java的HashMap不是线程安全的.多线程下应该使用ConcurrentHashMap. HashMap底层是基于动态数组和单向链表(JDK1.7, ...

  6. nginx环境准备

    一.环境调试确认 1.四项确认 确认公网已连通. 确认yum源可用. 确认iptables已经关闭. 确认selinux已经关闭. a.确认是否连通公网. ping www.baidu.com b.确 ...

  7. 开源的图片查看库之PhotoView

    PhotoView是一个开源的图片查看库,可以实现图片的浏览,手势放大缩小等操作,以及支持在ViewPager中翻页浏览图片等功能.PhotoView使用简单,还可以对缩放模式进行设置, 其开源地址为 ...

  8. Failed to install the following Android SDK packages as some licences have not been accepted.

    问题描述: 执行gradle tasks报错: gradle tasks > Configure project :app Exception /package.xml. Probably th ...

  9. tensorflow文件读取

    1.知识点 """ 注意:在tensorflow当中,运行操作具有依赖性 1.CPU操作计算与IO计算区别: CPU操作: 1.tensorflow是一个正真的多线程,并 ...

  10. 如何在终端使用后台运行模式启动一个Linux应用程序

    这是一个篇幅不长但是十分有用的教程,可以帮助你在终端启动一个Linux应用程序,并且使终端窗口不会丢失焦点. 我们有很多可以在Linux系统中打开一个终端窗口的方法,这取决于你的选择以及你的桌面环境. ...