码迷,mamicode.com
首页 > 数据库 > 详细

程序员的SQL经典笔记1_自动增长字段

时间:2015-08-14 19:31:23      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:sequence   auto_increment   sequence.nextval   sequenc.currval   

自动增长字段
在设计数据库的时候,有时需要表的某个字段是自动增长的,最常使用自动增长字段的就是表的主键,使用自动增长字段可以简化主键的生成.不同的DBMS中自动增长字段的实现机制也有不同,下面分别介绍。

  • MYSQL 中设定一个字段为自动增长字段非常简单,只要在表定义中指定字段为AUTO_INCREMENT即可.
    例子:

create table t_student
(
t_id int primary key auto_increment,
t_name varchar(50),
t_age int
);
insert into t_student(t_name,t_age)values("King",22);
insert into t_student(t_name,t_age)values("Hong",22);
  • Oracle 中的自动增长字段

Oracle中不像MYSQL和MSSQLServer中那样指定一个列为自动增长列的方式,不过在Oracle中可以通过SEQUENCE序列来实现自动增长字段.
在使用SEQUENCE前需要首先定义一个 SEQUENCE,定义 SEQUENCE 的语法如下:

CREATE SEQUENCE sequence_name
INCREMENT BY step
START WITH startvalue;

其中sequence_name为序列的名字,每个序列都必须有唯一的名字;startvalue参数值为起始数字,step参数值为步长,即每次自动增长时增加的值.
一旦定义了SEQUENCE,你就可以用CURRVAL来取得SEQUENCE的当前值,也可以通过NEXTVAL来增加SEQUENCE,然后返回新的SEQUENCE值,比如:

sequence_name.CURRVAL
sequence_name.NEXTVAL

如果SEQUENCE不需要的话就可以将其删除:

DROP SEQUENCE sequence_name;

下面举一个使用SEQUENCE序列实现自动增长的例子.
首先创建一个名称为seq_PersonId的SEQUENCE:

create sequence seq_t_person
increment by 1
start with 1;

然后创建T_Person表:

CREATE TABLE T_Person
( 
FId NUMBER (10) PRIMARY KEY, 
FName VARCHAR2( 20) , 
FAge NUMBER ( 10)
) ;

执行上面的 SQL 语句后就创建成功了 T_Person 表,然后执行下面的 SQL 语句向
T_Person 表中插入一些数据:

INSERT INTO T_Person( FId, FName, FAge)
VALUES( seq_PersonId.NEXTVAL, ‘ Tom‘ , 18) ;
INSERT INTO T_Person( FId, FName, FAge)
VALUES( seq_PersonId.NEXTVAL, ‘ Jim‘ , 81) ;
INSERT INTO T_Person( FId, FName, FAge)
VALUES( seq_PersonId.NEXTVAL, ‘ Kerry‘ , 33) ;


程序员的SQL经典笔记1_自动增长字段

标签:sequence   auto_increment   sequence.nextval   sequenc.currval   

原文地址:http://8196049.blog.51cto.com/8186049/1684662

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!