使用数据库序列生成主键
来源:互联网 发布:怎样生成淘宝客链接 编辑:程序博客网 时间:2024/04/29 11:39
一,什么是序列
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要
的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。创建序列需
要CREATE SEQUENCE系统权限。序列的创建语法如下:
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}];
创建一个名称为:SEQUENCE_PARAMID 的序列:
CREATE SEQUENCE SEQUENCE_PARAMID
INCREMENT BY 1
MINVALUE 100001001
MAXVALUE 999999999
NOCYCLE
NOCACHE;
INCREMENT BY 用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。 START WITH 定义序列的初始值(即产生的第一个值),默认为1。 MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。 MINVALUE定义序列生成器能产生的最小值 ...
在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动
生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通
过查询检查当前值,或使序列增至下一个值。
二,使用序列生成主键
创建一个序列以后,如何使用这个序列,生成主键呢?我们获取序列的NEXTVAL就可以了,具体还要结合使用场景。
假如我们在INSERT语句中使用序列生成主键,只需要把SEQUENCE_PARAMID.NEXTVAL作为值,传递给主键字段就可以了。
假如我们想获取这个值,在程序中使用,我们可以通过下面的语句:SELECT SEQUENCE_PARAMID.NEXTVAL FROM DUAL;
和自增长的方式相比,序列具有更好的灵活性,可以根据需要设置的主键的长度。而使用自增长的方式,缺乏灵活
性,总是从1开始,每次递增1,我们没法控制。
三,实战演示
1,创建序列
CREATE SEQUENCE SEQUENCE_PARAMID
INCREMENT BY 1
MINVALUE 100001001
MAXVALUE 999999999
NOCYCLE
NOCACHE;
2,创建数据库表
CREATE TABLE YY_PRODUCT(
PRODUCT_ID VARCHAR(18) NOT NULL, -- 由于是主键,是唯一的,因此不用再加上unique关键字
PRODUCT_NAME VARCHAR(100) NOT NULL,
PRIMARY KEY(PRODUCT_ID) -- 把PRODUCT_ID 设置为主键
);
3,数据库插入操作
INSERT INTO YY_PRODUCT(
PRODUCT_ID,
PRODUCT_NAME
)
VALUES(
sequence_paramId.nextval,
'秋冬女士打底裤加绒加厚'
);
OK,一个简单的应用就是这样的,赶紧试试吧。这里补充说明一点,很多人会问,为什么你写SQL语句都用大写字母呢,
因为ORACLE和DB2数据库,在对SQL进行编译时,会把SQL转换成大写,我们都使用大写,数据库就减少了一个转换的
过程,这样可以提高SQL的执行效率。虽然对效率的提升不大,但相对而言,效率是有提升的。书写高效的SQL,必须要
从细节着手。正所谓:不积跬步无以至千里。
0 0
- 使用数据库序列生成主键
- 使用redis生成数据库主键自增
- 数据库主键生成策略
- 数据库主键生成
- 数据库主键生成策略
- 数据库主键生成策略
- Oracle数据库生成主键
- 数据库主键生成策略
- Oracle数据库生成主键
- 程序控制数据库主键生成
- 数据库主键ID生成
- 时间格式生成序列【主键】
- oracle创建主键生成序列
- 使用JDBC如何获取数据库自动生成的主键
- 使用JDBC获取数据库自动生成的主键
- 非mongodb数据库如何使用mongodb生成的主键id
- 使用mybatis批量插入数据库自动生成主键
- 【oracle】oracle数据库建立序列、使用序列实现主键自增
- AChartEngine应用之BarChart(动态柱形图)
- vim相关的一些比较好的帖子
- Client(客户端)测试专题技术
- gif 格式图片详细解析
- R语言 决策树--预测模型
- 使用数据库序列生成主键
- chatrr权限
- ZOJ 3492Kagome Kagome
- 【树莓派】更新软件源之后更新报错
- Bootstrap 多媒体对象和列表组
- libpng的png_read_info和png_read_image使用实例分析
- Spring MVC 静态资源访问 mvc:resources 标签
- C#封装自己的函数,并且引用
- 四种算法 Dijkstra bellman spfa Floyd 模版