纠结了好久,不知道数据库主键该如何使用,进行数据库插入操作时,不知道怎么使处于主键的列自动进行增长,下面简单介绍一下,【SqlServer 2008数据库软件使用sql语句创建表的相关事项】主键的自动增长:
方式一:
设置“主键”的sql语句:primary key
标识符:使得进行数据库表插入操作时,使主键自动增长,语句是:identity(1,1)
1、使用sql语句进行创建表:
create table student( id int identity(1,1) primary key,//主键的设置,还有主键的自动增长 sid varchar(40) not null, sname varchar(30) not null )
执行一下:创建表成功
创建自动增长的主键表的具体方式:
详见:http://www.cnblogs.com/joeblackzqq/archive/2011/01/24/1943584.html
然后进行插入操作:
insert into student (id,sid,sname) values ('232','哈哈')//或者insert into student (id,sid,sname) values (1,'232','哈哈') //上面的两种插入语句都不可以,都会报错的,因为id是主键,不能为空;是标识符,不需要插入这列的数据,系统会自动的添加数据列的数据。 //所以,正确的写法是: insert into student (sid,sname) values('2020','gaga') 得到的结果就是:
方式二:
项目中,每个表中都会有好多个字段名,为了使读效果增加,一般都会增加主键,然后主键自动增长(只是起到一个计数的作用而已),这就会省很大的事。
在设计表的时候就需要增加“主键”且还需要“标识列”,这样子在进行插入操作的时候就可以直接将其字段名省略掉;
比如:
注意一:在编写sql语句时:其中flowId是主键,其他的都是普通的字段名 【sql语句中是没有flowId字段名的;】
insert into dbo.Hishop_OrderRetuenFlow (RetuId, OrderId, LinkMan, LinkTel)
values (#retuid:VARCHAR#, #orderid:VARCHAR#, #linkman:VARCHAR#, #linktel:VARCHAR#)
注意二:在进行插入操作时,写url路径时,其中插入的字段的值,也不需要写主键的【易错点】
注意三:在进行前后台交互时,也不需要对此字段名进行命名或赋值什么的
方式三:
在创建不同类型的数据库,也会有不同的设置“主键、且主键自动增长”的方式: 如下
其中Mysql数据库创建主键且主键自动增长时,可以直接对字段设置;然而Oracle数据库则不行,需要使用sequence(序列),实现主键的自动增长;
详细见:http://blog.csdn.net/java3344520/article/details/4907591,{在oracle下触发器实现主键自增}