MYSQL: auto_increament
SQL server : identity
Oracle:
在oracle中没有想sqlserver自动增长列,如果想要达到这个效果必须要自己建立索引
先介绍Oracle中怎么实现的:
create sequence seq;
create table person(id number(3),name varchar2(10));
insert into person values (seq.nextval,“测试1”);
insert into person values (seq.nextval,“测试2”);
SQLserver中的:
创建表时指定标识列标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。( 种子(seed)是指派给表中第一行的值,默认为1
递增量(increment)
相邻两个标识值之间的增量,默认为1。
下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列
CREATE TABLE T_test
(ID int IDENTITY(1,1),
Name varchar(50)
)
MySQL中的:
creat table test
(
id int not null auto_increament;
name varchar(50);
)
再总结一个Mysql和SQL中的异同点:
前提:表中都有id,即自动增长,作为主键,
步骤:实现表插入数据的时候。
Mysql中的实现:
INSERT INTO 表名(列名1,列名2,列名3......) VALUES(值1,值2,值3........)
不能实现 省略表明字段值的,如下
INSERT INTO 表名 VALUES(值1,值2,值3........)
但是省略表的字段值可以在SQLserver中实现;
个人感觉还是SQLserver中不错;
总结:
oracle :sequence;
mysql:autoincreament
SQL :identity;
当有自动增长的时候,mysql必须补齐其字段值;
而在SQL中就不需要,只写表名即可;