DM数据库中建表实现主键自增
1、数据库和实例DM数据库服务是由“数据库”和“实例”组成。这两个概念还是有着很大的差别,甚至可以说它们是两个完全不同的实体。1.1 数据库简介在有些情况下,数据库的概念包含的内容会很广泛。如在单独提到DM数据库时,可能指的是DM数据库产品,也有可能是正在运行的DM数据库实例,还可能是DM数据库运行中所需的一系列物理文件的集合等。但同时出现DM数据库和实例时,DM数据库指的是 磁盘上存放在DM数据
在DM数据库中,自增有两种方法来实现,第一种是自增列,第二种是通过序列实现。这两个方式各自有各自的个好处,也有适用的场合。
1、自增列介绍
在创建表时可以制定列是否自增,该属性和CREATE TABLE语句一起使用,但是自增列在使用过程中存在较多的限制。
1.1、语法格式:
CREATE TABLE TEST(id int IDENTITY(1,1) primary key, name varchar(32)); |
1.2、参数介绍:
种子代表装载到表中的第一个行所使用的值;增量表示增量值,该值被添加到前一个已装载的行
的标识值上。增量值可以为正数或负数,但不能是0。
1.3、使用说明:
IDENTITY适用于INT类型和BIGINT类型的列;每个表只能创建一个自增列;不能对自增列使用DEFAULT约束;使用时必须同时指定种子和增量值或都不指定,如果两者都未指定则默认值都是1;最大值和最小值为该列的数据类型的边界;表种子和增量大于最大值或者种子和增量小于最小值时报错;自增列一旦生成法更新,不允许用update语句修改。
1.4、实际案例
create table TEST(id int IDENTITY(1,1) primary key, name varchar(32)); insert into TEST(name) values('AAA'),('BBB'),('CCC'); select * from TEST; |
1、序列的介绍
序列是一个数据库实体,通过序列多个用户可以产生唯一整数值,也可以用序列来自动地生成主关键字值,即就是提供一系列连续的数值。
2.1、语法格式:
CREATE SEQUENCE 序列名 [INCREMENT BY n] --每次增加的值 [START WITH n] --初始值,就是产生的第一个值 [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --MAXVALUE 定义生成的最大值,MINVALUE定义生成的最小值,NOMAXVALUE代表不设最大的值 [{CYCLE|NOCYCLE}] --CYCLE代表循环,NOCYCLE代表不循环 [{CACHE n|NOCACHE}]; --CACHE(缓冲)定义存放序列的内存块的大小,NOCACHE表示不对序列进行内存缓冲。 |
2.2、创建序列:
SQL> CREATE SEQUENCE SEQS INCREMENT BY 1000 START WITH 5 NOMAXVALUE NOMINVALUE; |
2.3、修改序列
--修改序列的步长,原来使1修改为现在的2 ALTER SEQUENCE SEQ1 INCREMENT BY 1 ; |
2.5、删除语句
drop sequence SEQS; |
2.6、使用案例
create table CODE(id int primary key, name varchar(32)); insert into CODE values(SEQS.NEXTVAL,'AAA'),(SEQS.NEXTVAL,'BBB'),(SEQS.NEXTVAL,'CCC'); select * from CODE; |
更多推荐
所有评论(0)