SQL自动增量

时间:2020-02-23 14:32:23  来源:igfitidea点击:

有时我们在表中没有唯一的标识符来创建主键。
在这种情况下,我们可以从SQL寻求帮助,为主键设置一个特殊的列,当插入新行时其值将自动递增。

SQL自动增量

当插入新行时,SQL自动增量生成唯一的增量号。
通常,递增编号用于主键。

我们将尝试了解自动递增功能如何与以下数据库一起使用。

  • 的MySQL
  • SQL服务器
  • PostgreSQL的

MySQL自动增量

语法:

CREATE TABLE table_name (
column1 int NOT NULL AUTO_INCREMENT,
column2 datatype,
columnN datatype
);

在以上语法中,关键字AUTO_INCREMENT指定对应的列值必须增加1。

在MySQL中,默认情况下该值增加1,从1开始。
如果要从其他数字而不是1开始该值,则可以使用以下命令。

ALTER TABLE table_name AUTO_INCREMENT = new_value;

new_value将作为自动增量的新起始值。
让我们尝试在MySQL中创建一个具有自动增量的表。

CREATE TABLE Student (
stdid int NOT NULL AUTO_INCREMENT,
stdFirstName varchar(255),
stdLastName varchar(255),
Age int,
PRIMARY KEY (stdid)
);

我们正在使用上述查询创建一个Student表,并且主键使用AUTO_INCREMENT关键字自动递增。

执行完上述内容后,表属性将如下所示。

如果检查"另外"列,则对于stdid,在"另外"列中会提到auto_increment。

自动递增的SQL Server IDENTITY

语法:

CREATE TABLE table_name (
column1 int IDENTITY(1,1) PRIMARY KEY,
column2 datatype,
columnN datatype
);

在上述语法中,关键字IDENTITY指定必须增加相应的列值。

在上述示例中,计数将从1开始,并将增加1。

如果我们想让序列从10开始并增加5,则下面是相同的语法。

IDENTITY(10,5);

让我们尝试在SQL Server中创建具有自动增量的表。

CREATE TABLE Student (
stdid int IDENTITY(1,1) PRIMARY KEY,
stdFirstName varchar(255),
stdLastName varchar(255),
Age int
);

使用下面提到的查询将数据插入到Student表中。

INSERT INTO [dbo].[Student]
([stdFirstName]
,[stdLastName]
,[Age]) VALUES ('First1','Last1',1);

当我们插入数据时,我们不会插入" stdid"的值,但是该值将由SQL Server自动提供。

PostgreSQL SERIAL自动增量

语法:

CREATE TABLE table_name (
column1 datatype SERIAL PRIMARY KEY,
column2 datatype,
columnN datatype
);

在上面的语法中,我们可以看到关键字SERIAL用于指定相应的列将具有自动递增的值。

让我们尝试在PostgreSQL中创建一个具有自动增量的表。

CREATE TABLE Student (
stdid SERIAL PRIMARY KEY,
stdName varchar(255)
);

执行完上述查询后," stdid"将具有自动递增功能。