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"将具有自动递增功能。