达梦数据库对象信息

一、查看数据库基本信息

1、版本信息

select * from v$version;

LINEID     BANNER                   

---------- -------------------------

1          DM Database Server 64 V8 

2          DB Version: 0x7000b

2、查看数据库的页大小

select para_name,para_value from v$dm_ini where para_name = 'GLOBAL_PAGE_SIZE';

LINEID     PARA_NAME        PARA_VALUE

---------- ---------------- ----------

1          GLOBAL_PAGE_SIZE 8192

3、查看簇的大小

select para_name,para_value from v$dm_ini where para_name = 'GLOBAL_EXTENT_SIZE';

LINEID     PARA_NAME          PARA_VALUE

---------- ------------------ ----------

1          GLOBAL_EXTENT_SIZE 16

4、查看数据库目前字符集

select SF_GET_UNICODE_FLAG();

LINEID     SF_GET_UNICODE_FLAG()

---------- ---------------------

1          0

##  0 表示 GB18030,1 表示 UTF-8,2 表示 EUC-KR


二、表空间对象

1、创建表空间

用户可以在用户表空间中添加数据文件,添加的数据文件大小最小为:4096*页大小(8K)=32M,否则报错,详情见下表

CREATE TABLESPACE PROD DATAFILE '/dm8/data/DAMENG/tbs_prod01.dbf' size 20 autoextend on next 1 maxsize 10240;

CREATE TABLESPACE PROD DATAFILE '/dm8/data/DAMENG/tbs_prod01.dbf' size 20 autoextend on next 1 maxsize 10240;

[-2410]:Error in line: 1

Data file [/dm8/data/DAMENG/tbs_prod01.dbf] size is invalid.

used time: 1.072(ms). Execute id is 0.

修改成32就OK

SQL> CREATE TABLESPACE PROD DATAFILE '/dm8/data/DAMENG/tbs_prod01.dbf' size 32 autoextend on next 1 maxsize 10240;

executed successfully

used time: 40.281(ms). Execute id is 41613.

HUGE表空间也类似

SQL> CREATE HUGE TABLESPACE HTS_NAME PATH '/dm8/data/DAMENG/TBS_HTS_NAME01.DBF';

executed successfully

used time: 13.836(ms). Execute id is 41614.

与ORACLE 类似,大同小异

SQL> CREATE TABLESPACE PROD DATAFILE '/oradata/FXW3DB/datafile/tbs_prod01.dbf' size 32M autoextend on next 1M maxsize 10G;

Tablespace created.

2、增加表空间数据文件

SQL> alter tablespace prod add datafile '/dm8/data/DAMENG/tbs_prod02.dbf' size 64 autoextend on next 1 maxsize unlimited;

executed successfully

used time: 23.069(ms). Execute id is 41615.

3、修改表空间参数

ALTER TABLESPACE prod DATAFILE '/dm8/data/DAMENG/TBS_PROD01.DBF' AUTOEXTEND OFF;

4、删除表空间

DROP TABLESPACE PROD;

5、查看表空间信息

5.1 HUGE和普通表空间信息

SELECT * FROM V$HUGE_TABLESPACE;

SELECT ID,NAME,CACHE,TYPE$,STATUS$,MAX_SIZE,TOTAL_SIZE,FILE_NUM FROM V$TABLESPACE;

5.2 查看表空间和数据文件信息

select tablespace_name,file_id

       ,AUTOEXTENSIBLE,file_name

       ,round(bytes/1024/1024,1) MB_bytes

       ,round(MAXBYTES/1024/1024/1024,2) Max_GB_bytes

  from dba_data_files;

LINEID     TABLESPACE_NAME FILE_ID     AUTOEXTENSIBLE FILE_NAME           MB_BYTES MAX_GB_BYTES

---------- --------------- ----------- -------------- -------------------------------  -------- ------------

1          SYSTEM         0           YES            /dm8/data/BURTON/SYSTEM.DBF      26         16384

2          PROD            1           YES            /dm8/data/DAMENG/tbs_prod02.dbf 64         16384

3          PROD            0           YES            /dm8/data/DAMENG/tbs_prod01.dbf 32         10

4          SYSAUX         0           YES            /dm8/data/BURTON/SYSAWR.DBF     4651      10

5          TEST              0           YES            /dm8/data/BURTON/TBS_TEST01.DBF 64         20

6          MAIN            0           YES            /dm8/data/BURTON/MAIN.DBF           128       16384

7          TEMP            0           YES            /dm8/data/BURTON/TEMP.DBF            10         16384

8          ROLL             0           YES            /dm8/data/BURTON/ROLL.DBF             384      16384

套用oracle查询语句也通用

select b.tablespace_name

       ,b.files

       ,round(b.bytes) total_M

       ,round(nvl(a.free_space,0)) free_M

       ,round((b.bytes-nvl(a.free_space,0))/b.bytes*100,2) "usedsz_rt%"

       ,round(b.extensible_space) extens_M

       ,round((nvl(a.free_space,0)+b.extensible_space)/(b.bytes+b.extensible_space)*100,6) "total_free%"

       ,round((b.bytes-nvl(a.free_space,0))/(b.bytes+b.extensible_space)*100,6)  "actused_rt%"

  from (select tablespace_name,sum(bytes)/1024/1024 free_space from

        dba_free_space group by tablespace_name) a,

       (select tablespace_name

               ,count(tablespace_name) files

               ,sum(decode(autoextensible,'NO',0,decode(sign(maxbytes-bytes),1,maxbytes-bytes,0)))/1024/1024 extensible_space

               ,sum(bytes)/1024/1024 bytes

          from dba_data_files

         group by tablespace_name) b

where a.tablespace_name(+)=b.tablespace_name

 order by 7;


三、用户

1、创建用户

create user test identified by "Test_2020" diskspace limit 10240 default tablespace test temporary tablespace temp; # 用户使用最大磁盘空间10G

create user prod identified by "Prod_2020" default tablespace prod temporary tablespace temp; 

grant resource to prod;

grant create view,create synonym to prod;

达梦区别ORACLE创建时自带connect权限

2、查询用户

alter user test account lock;

select USERNAME,USER_ID,ACCOUNT_STATUS,LOCK_DATE,EXPIRY_DATE,DEFAULT_TABLESPACE,CREATED,PASSWORD_VERSIONS from dba_users where USERNAME in ('TEST','PROD');

LINEID     USERNAME USER_ID     ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE DEFAULT_TABLESPACE CREATED                    PASSWORD_VERSIONS

---------- -------- ----------- -------------- --------- ----------- ------------------ -------------------------- -----------------

1          TEST     50331751    LOCKED         NULL      NULL        TEST               2021-01-07 10:07:32.958423 2

2          PROD     50331752    OPEN           NULL      NULL        PROD               2021-01-07 10:07:38.223804 2

有些字段如LOCK_DATE,EXPIRY_DATE等感觉为兼容ORACLE设置,实际没值。

3、删除用户

drop user test cascade; # 删除用户及对象

4、查看用户权限

4.1 用户角色权限

select * from dba_role_privs where GRANTEE='PROD';

LINEID     GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE

---------- ------- ------------ ------------ ------------

1          PROD    RESOURCE     N            NULL

2          PROD    PUBLIC       N            NULL

3          PROD    SOI          N            NULL

4.2 用户系统权限

select * from dba_sys_privs where grantee='PROD';

LINEID     GRANTEE PRIVILEGE      ADMIN_OPTION

---------- ------- -------------- ------------

1          PROD    CREATE VIEW    NO

2          PROD    CREATE SYNONYM NO

4.3 用户表访问权限

select * from dba_tab_privs where grantee='PROD';

LINEID     GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY

---------- ------- ----- ---------- ------- --------- --------- ---------

1          PROD    TEST  TEST01     SYSDBA  SELECT    NO        NO


四、表

根据存储方式不同有普通表,堆表和HUGE表。下图就索引组织表和堆表结果做简单对比

1、创建表

1.1 普通表(默认创建索引组织表),索引组织表是以主键排序的方式的B树组织结构,数据都存在叶子节点

1.1.1 普通表

CREATE TABLE PROD.TB_01

( ID INT NOT NULL

  ,NAME1 VARCHAR(20) NOT NULL

  ,NAME2 VARCHAR(20)

  ,CREATE_DT DATE DEFAULT SYSDATE

  )

STORAGE (INITIAL 2, MINEXTENTS 3,NEXT 4, ON PROD, FILLFACTOR 85);

COMMENT ON TABLE PROD.TB_01 IS 'TEST TABLE';

COMMENT ON COLUMN PROD.TB_01.ID IS 'SEQ_ID';

ALTER TABLE PROD.TB_01 ADD CONSTRAINT PK_TB01_ID PRIMARY KEY (ID);

FILLFACTOR:指定插入数据时数据页的充满程度,取值范围从0 到100。默认值为0,等价于100。

插入数据时填充比例的值越低,可由新数据使用的空间就越多;更新数据时填充比例的值越大,

更新导致出现的页分裂的几率越大。

类似与ORACLE中pctfree定义了一个块保留空间的百分比,保留空间是为了将来可能发生的更新操作,

如果此时该块没有可利用空间,那么只有发生row migrate。

begin

for i in 1..100 loop

insert into prod.tb_01 values(i,'a'||i,'b'||i,sysdate-i/2);

end loop;

commit; 

end;

/

1.1.2 分区表

分区表优点:

a. 减少所有数据都损坏的可能性,一个表空间损坏不影响其他表空间,提高可用性;

b. 恢复时间大大减少;

c. 可以将同一个表中的数据分布在不同的磁盘上,从而均衡磁盘上的I/O操作;

d. 提高了表的可管理性、可利用性和访问效率。

达梦数据库DM支持对表进行水平分区。

a. 范围(range)水平分区:对表中的某些列上值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上;

b. 哈希(hash)水平分区:通过指定分区编号来均匀分布数据的一种分区类型,通过在I/O设备上进行散列分区,

使得这些分区大小基本一致;

c. 列表(list)水平分区:通过指定表中的某个列的离散值集,来确定应当存储在一起的数据。

CREATE TABLE PROD.TB_PART_01(

id int not null,

code_id varchar(2),

name1 varchar(20) not null,

name2 varchar(20),

create_dt date default sysdate

)

PARTITION BY RANGE(create_dt)(

PARTITION P_2016 VALUES LESS THAN ('2016-01-01'),

PARTITION P_2020 VALUES LESS THAN ('2020-01-01'),

PARTITION P_2024 VALUES LESS THAN ('2024-01-01')

);

COMMENT ON COLUMN PROD.TB_PART_01.ID IS 'SEQ_ID';

# 堆表所有的子表只能在一个表空间,索引组织表的字表可以放在不同表空间。

begin

for i in 1..10000 loop

insert into PROD.TB_PART_01 values(i,'C'||mod(i,5),'a'||i,'b'||i,sysdate-i/2);

end loop;

commit;

end;

/

分区表操作

(1)增加分区:

ALTER TABLE PROD.TB_PART_01 ADD PARTITION P_MAX VALUES LESS THAN (MAXVALUE);

(2)拆分分区:

ALTER TABLE PROD.TB_PART_01 SPLIT PARTITION P_2024 AT('2022-01-01') INTO (PARTITION P_2022 TABLESPACE PROD,PARTITION P_2024_2);

(3)合并分区:

ALTER TABLE PROD.TB_PART_01 MERGE PARTITIONS P_2022,P_2024_2 INTO PARTITION P_2024;

(4)交换分区(TB_04 和 TB_PART_01表结构和索引一致)

ALTER TABLE PROD.TB_PART_01 EXCHANGE PARTITION P_2016 WITH TABLE PROD.TB_04;

(5)删除分区:

ALTER TABLE PROD.TB_PART_01 DROP PARTITION P_2016;

1.1.3 多级分区表

CREATE TABLE PROD.TB_PART_02(

ID INT NOT NULL,

CODE_ID CHAR(2),

NAME1 VARCHAR(20) NOT NULL,

NAME2 VARCHAR(20),

CREATE_DT DATE DEFAULT SYSDATE

)

PARTITION BY LIST(CODE_ID)

SUBPARTITION BY RANGE(CREATE_DT) SUBPARTITION TEMPLATE(

SUBPARTITION P11 VALUES LESS THAN ('2015-01-01'),

SUBPARTITION P12 VALUES LESS THAN ('2020-01-01'),

SUBPARTITION P13 VALUES EQU OR LESS THAN (MAXVALUE))

(

   PARTITION P1 VALUES ('C0', 'C1')

      (

      SUBPARTITION P11_1 VALUES LESS THAN ('2015-01-01'),

      SUBPARTITION P11_2 VALUES LESS THAN ('2020-01-01'),

      SUBPARTITION P11_3 VALUES equ or LESS THAN (MAXVALUE)

      ),

   PARTITION P2 VALUES ('C2','C3','C4'),

   PARTITION P3 VALUES (DEFAULT)

);

begin

for i in 1..10000 loop

insert into PROD.TB_PART_02 values(i,'C'||mod(i,5),'a'||i,'b'||i,sysdate-i/2);

end loop;

commit;

end;

/

1.2 创建堆表

INI参数方式用户可以在配置文件中,添加LIST_TABLE参数:

1) 如果LIST_TABLE = 1,则在未显式指定表是否为堆表或非堆表时,默认情况下创建的表为堆表;

2) 如果LIST_TABLE = 0,则在未显式指定表是否为堆表或非堆表时,默认情况下创建的表为普通表形式。

为支持并发插入,扁平B树可以支持最多128个数据页链表(最多64个并发分支和最多64个非并发分支),

在B树的控制页中记录了所有链表的首、尾页地址。

select para_name,para_value from v$dm_ini where para_name='LIST_TABLE';

LINEID     PARA_NAME  PARA_VALUE

---------- ---------- ----------

1          LIST_TABLE 0

sp_set_para_value(1,'LIST_TABLE',1);  # 修改后默认创建堆表


CREATE TABLE PROD.TB_02

( ID INT NOT NULL

  ,NAME1 VARCHAR(20) NOT NULL

  ,NAME2 VARCHAR(20)

  ,CREATE_DT DATE DEFAULT SYSDATE

  )

STORAGE (INITIAL 2, MINEXTENTS 3,NEXT 4, ON PROD, FILLFACTOR 85,BRANCH(4,2)); 

COMMENT ON TABLE PROD.TB_02 IS 'HEAP TABLE';

COMMENT ON COLUMN PROD.TB_02.ID IS 'SEQ_ID';

ALTER TABLE PROD.TB_02 ADD CONSTRAINT PK_TB02_ID PRIMARY KEY (ID);

insert into PROD.TB_02 select * from PROD.TB_01;

commit;

1.3 创建HUGE表

HUGE表的存储方式有以下几个优点:

1.同一个列的数据都是连续存储的,可以加快某一个列的数据查询速度;

2.连续存储的列数据,具有更大的压缩单元和数据相似性,可以获得远优于行存储的压缩效率,

     压缩的单位是区;

3.条件扫描借助数据区的统计信息进行精确过滤,可以进一步减少IO,提高扫描效率;

CREATE HUGE TABLE PROD.TB_03 ( 

  ID INT NOT NULL

  ,NAME1 VARCHAR(20) NOT NULL

  ,NAME2 VARCHAR(20)

  ,CREATE_DT DATE DEFAULT SYSDATE

) STORAGE(ON HTS_NAME,SECTION(2048)) ;

2、查看表信息

一般表查询

SP_TABLEDEF('PROD','TB_01');

SP_TABLEDEF('PROD','TB_02');

SP_TABLEDEF('PROD','TB_03');

SELECT TABLE_NAME,PARTITIONED,TABLESPACE_NAME,STATUS FROM DBA_TABLES WHERE OWNER='PROD' AND TABLE_NAME IN ('TB_01','TB_02','TB_03');

分区查询

SELECT OWNER,TABLE_NAME,PARTITIONING_TYPE,SUBPARTITIONING_TYPE,PARTITION_COUNT,DEF_SUBPARTITION_COUNT,PARTITIONING_KEY_COUNT,SUBPARTITIONING_KEY_COUNT,STATUS

  FROM DBA_PART_TABLES WHERE TABLE_NAME IN ('TB_PART_01','TB_PART_02');

SELECT TABLE_OWNER,TABLE_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,HIGH_VALUE,HIGH_VALUE_LENGTH PARTITION_POSITION,TABLESPACE_NAME 

  FROM DBA_TAB_PARTITIONS WHERE TABLE_NAME in ('TB_PART_01','TB_PART_02');3、修改表结构

ALTER TABLE PROD.TB_01 ADD GENDER CHAR(2);

ALTER TABLE PROD.TB_01 MODIFY GENDER VARCHAR(6);

ALTER TABLE PROD.TB_01 DROP COLUMN GENDER;

4、删除表

DROP TABLE PROD.TB_01;

如果要删除的表被其他表引用,即其他表的外键引用了表的任何主键或唯一键,则需要在DROP TABLE 语句中包含CASCADE 选项,如:

DROP TABLE PROD.TB_01 CASCADE;

五、索引

1、普通索引

1.1 创建索引

CREATE INDEX PROD.IND_CREATE_DT ON PROD.TB_01(CREATE_DT) TABLESPACE IDX_PROD;

CREATE UNIQUE INDEX PROD.IND_NAME1 ON PROD.TB_01 (NAME1) TABLESPACE IDX_PROD;

1.2 修改索引

ALTER INDEX PROD.IND_CREATE_DT RENAME TO PROD.IND_TB01_DT;

ALTER INDEX PROD.IND_TB01_DT REBUILD ONLINE;

ALTER TABLE PROD.TB_01 ADD CONSTRAINT PK_TB01_ID PRIMARY KEY (ID);

1.3 查看索引

SELECT OWNER,TABLE_NAME,PARTITIONED,INDEX_NAME,INDEX_TYPE,STATUS,COMPRESSION,UNIQUENESS FROM DBA_INDEXES WHERE TABLE_NAME IN ('TB_01');

LINEID     OWNER TABLE_NAME PARTITIONED INDEX_NAME    INDEX_TYPE STATUS COMPRESSION UNIQUENESS

---------- ----- ---------- ----------- ------------- ---------- ------ ----------- ----------

1          PROD  TB_01      NO          INDEX33556211 CLUSTER    VALID  DISABLED    NONUNIQUE

2          PROD  TB_01      NO          IND_TB01_DT   NORMAL     VALID  DISABLED    NONUNIQUE

3          PROD  TB_01      NO          IND_NAME1     NORMAL     VALID  DISABLED    UNIQUE

4          PROD  TB_01      NO          INDEX33556212 NORMAL     VALID  DISABLED    UNIQUE

SELECT INDEX_OWNER,INDEX_NAME,TABLE_OWNER,TABLE_NAME,COLUMN_NAME,COLUMN_POSITION,COLUMN_LENGTH,CHAR_LENGTH,DESCEND FROM DBA_IND_COLUMNS WHERE TABLE_NAME IN ('TB_01');

LINEID     INDEX_OWNER INDEX_NAME    TABLE_OWNER TABLE_NAME COLUMN_NAME COLUMN_POSITION COLUMN_LENGTH CHAR_LENGTH DESCEND

---------- ----------- ------------- ----------- ---------- ----------- --------------- ------------- ----------- -------

1          PROD        IND_NAME1     PROD        TB_01      NAME1       1               20            20          ASC

2          PROD        INDEX33556212 PROD        TB_01      ID          1               4             0           ASC

3          PROD        IND_TB01_DT   PROD        TB_01      CREATE_DT   1               3             0           ASC

1.4 删除索引

DROP INDEX PROD.IND_NAME1;

ALTER TABLE PROD.TB_01 DROP CONSTRAINT PK_TB01_ID;

2、分区索引

2.1 创建分区索引

CREATE INDEX PROD.IND_PT01_NAME1 ON PROD.TB_PART_01(NAME1) ;

CREATE UNIQUE INDEX PROD.IND_PT01_NAME2 ON PROD.TB_PART_01(NAME2);

## 报错:唯一索引需要添加分区字段,创建组合索引

[-2683]:Error in line: 1

Local unique index must contain all partition columns.used time: 1.066(ms). Execute id is 0.

SQL> CREATE UNIQUE INDEX PROD.IND_PT01_NAME2_DT ON PROD.TB_PART_01(CREATE_DT,NAME2);

executed successfully

2.2 修改分区索引

ALTER INDEX PROD.IND_PT01_NAME2_DT REBUILD;   # REBUILD ONLINE 测试不支持

ALTER INDEX PROD.IND_PT01_NAME1 REBUILD;

ALTER TABLE PROD.TB_PART_02 ADD CONSTRAINT PK_TBPT02_CID_DT PRIMARY KEY (ID,CODE_ID,CREATE_DT);

# 只有堆表支持全局分区索引

2.3 收集索引统计信息

DBMS_STATS.GATHER_TABLE_STATS('PROD','TB_PART_01',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

DBMS_STATS.INDEX_STATS_SHOW ('PROD','INDEX33556122');

2.4 查看分区索引

SELECT OWNER,TABLE_NAME,PARTITIONED,INDEX_NAME,INDEX_TYPE,STATUS,COMPRESSION,UNIQUENESS FROM DBA_INDEXES WHERE TABLE_NAME IN ('TB_PART_01','TB_PART_02');

SELECT INDEX_OWNER,INDEX_NAME,TABLE_OWNER,TABLE_NAME,COLUMN_NAME,COLUMN_POSITION,COLUMN_LENGTH,CHAR_LENGTH,DESCEND FROM DBA_IND_COLUMNS WHERE TABLE_NAME IN ('TB_PART_02','TB_PART_01');

2.5 删除分区索引

DROP INDEX PROD.IND_PT01_NAME2_DT;

2.6 堆表如果有全局索引,删除或新增分区,会导致全局索引失效,需要重建,否则报错。


六、执行计划

explain select t1.id,t2.create_dt from PROD.TB_01 T1 ,PROD.TB_PART_01 T2

where T1.id = T2.id and T1.name1 = 'a992';

1   #NSET2: [1, 2, 68]

2     #PRJT2: [1, 2, 68]; exp_num(2), is_atom(FALSE)

3       #HASH2 INNER JOIN: [1, 2, 68]; LKEY_UNIQUE KEY_NUM(1); KEY(T1.ID=T2.ID) KEY_NULL_EQU(0)

4         #NEST LOOP INDEX JOIN2: [1, 2, 68]

5           #ACTRL: [1, 2, 68];

6             #BLKUP2: [1, 1, 52]; IND_NAME1(T1)

7               #SSEK2: [1, 1, 52]; scan_type(ASC), IND_NAME1(TB_01 as T1), scan_range['a992','a992']

8           #PARALLEL: [1, 2, 0]; scan_type(FULL), key_num(0, 0, 0), simple(0)

9             #SSEK2: [1, 2, 0]; scan_type(ASC), INDEX33555742(TB_PART_01 as T2), scan_range[(T1.ID,min),(T1.ID,max))

10        #PARALLEL: [1, 10000, 16]; scan_type(FULL), key_num(0, 0, 0), simple(0)

11          #SSCN: [1, 10000, 16]; INDEX33555742(TB_PART_01 as T2)


[1, 10000, 16]分别表示估算的操作符代价(时间毫秒)、处理的记录行数和每行记录的字节数

select * from v$sql_node_name;

打印执行计划:

EXPLAIN SELECT A.C1+1,B.D2 FROM T1 A, T2 B WHERE A.C1 = B.D1;

执行计划如下:

1 #NSET2: [0, 16, 9]

2   #PRJT2: [0, 16, 9]; EXP_NUM(2), IS_ATOM(FALSE)

3     #NEST LOOP INDEX JOIN2: [0, 16, 9]

4       #CSCN2: [0, 4, 5]; INDEX33555535(B)

5       #SSEK2: [0, 4, 0]; SCAN_TYPE(ASC), IDX_T1_C1 (A), SCAN_RANGE[T2.D1,T2.D1]

该计划的大致执行流程如下:

1) CSCN2: 扫描T2表的聚集索引,数据传递给父节点索引连接;

2) NEST LOOP INDEX JOIN2: 当左孩子有数据返回时取右侧数据;

3) SSEK2: 利用T2表当前的D1值作为二级索引IDX_T1_C1定位查找的KEY,返回结果给父节点;

4) NEST LOOP INDEX JOIN2: 如果右孩子有数据则将结果传递给父节点PRJT2,否则继续取左孩子的下一条记录;

5) PRJT2: 进行表达式计算C1+1, D2;

6) NSET2: 输出最后结果;

7) 重复过程1) ~ 4)直至左侧CSCN2数据全部取完。


七、管理序列

1、序列概况和语法

序列是一个数据库实体,通过它多个用户可以产生唯一整数值,可以用序列来自动地生成主关键字值。

语法格式

CREATE SEQUENCE [ <模式名>.] <序列名> [ <序列选项列表>];

<序列选项列表> ::= <序列选项>{<序列选项>}

<序列选项> ::=

INCREMENT BY <增量值>|

START WITH <初值>|

MAXVALUE <最大值>|

NOMAXVALUE|

MINVALUE <最小值>|

NOMINVALUE|

CYCLE|

NOCYCLE|

CACHE <缓存值>|

NOCACHE|

ORDER |

NOORDER |

GLOBAL |

LOCAL

2、创建序列

CREATE SEQUENCE PROD.SEQ1 INCREMENT BY 1 START WITH 8 MAXVALUE 50 MINVALUE 3 CYCLE CACHE 20 NOORDER;

3、序列使用

select prod.seq1.nextval;


由于时间比较紧迫只能整理这么多,后续继续整理。

请使用浏览器的分享功能分享到微信等