普通表以 B 树形式存放,ROWID 是逻辑的 ROWID,堆表采用了物理 ROWID 形式的堆表,采用的是“扁平 B 树”数据页都是通过链表形式存储。HUGE 表通过 HFS 存储机制来管理的,它相当于一个文件系统。通过文件的形式来存储列数据。
本篇我们来学习下普通表的基本操作。
1 创建表
1.1 创建普通表
在业务中,正常是先创建业务的用户和表空间,然后将表建在这个用户下。 如果用户没有指定独立的表空间,那么表会创建在默认的MAIN表空间下。https://www.cndba.cn/cndba/dave/article/3584
SQL> create user cndba identified by "www.cndba.cn";
executed successfully
used time: 10.332(ms). Execute id is 356.
SQL> grant resource,dba to cndba;
executed successfully
used time: 7.152(ms). Execute id is 357.
SQL> conn cndba/"www.cndba.cn"
Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 11.702(ms)
SQL> create table dave(id int);
executed successfully
used time: 8.680(ms). Execute id is 358.
SQL> insert into dave values(1);
affect rows 1
used time: 2.611(ms). Execute id is 359.
SQL> insert into dave values(1);
affect rows 1
used time: 0.910(ms). Execute id is 360.
SQL> commit;
executed successfully
used time: 10.619(ms). Execute id is 361.
SQL> select * from dave;
LINEID ID
---------- -----------
1 1
2 1
used time: 2.403(ms). Execute id is 362.
SQL>
1.2 指定表的聚集索引
表(列存储表和堆表除外)都是使用 B+树(以下简称 B 树)索引结构管理的,每一个普通表都有一个聚集索引,数据通过聚集索引键排序,根据聚集索引键可以快速查询任何记录。
当建表语句未指定聚集索引键,DM 的默认聚集索引键是 ROWID,即记录默认以 ROWID在页面中排序。ROWID 是 B 树为记录生成的逻辑递增序号,表上不同记录的 ROWID 是不一样的,并且最新插入的记录 ROWID 最大。很多情况下,以 ROWID 建的默认聚集索引并不能提高查询速度,因为实际情况下很少人根据 ROWID 来查找数据。
因此,DM 提供三种方式供用户指定聚集索引键:
CLUSTER PRIMARY KEY:指定列为聚集索引键,并同时指定为主键,称为聚簇主键;
CLUSTER KEY:指定列为聚集索引键,但是是非唯一的;
CLUSTER UNIQUE KEY:指定列为聚集索引键,并且是唯一的。
例如,创建 student 表,指定 stu_no 为聚簇主键。
CREATE TABLE STUDENT(
STUNO INT CLUSTER PRIMARY KEY,
STUNAME VARCHAR(15) NOT NULL,
TEA