SQL 自动递增

SQL 自动递增

数据库通常用于逻辑存储海量数据。您可能遇到过各种情况,在其中难以为表中的每个记录指定唯一编号。这种情况实际上是不可能的,因为手动录入是受限的。因此,没有增量的余地。在这种情况下,您可以使用其他方法,并选择在SQL中自动递增。SQL中的自动递增会自动为表中的每个新记录增加一个唯一的数字。为了熟悉SQL中的自动递增,让我们看一些较好的解释来更好地理解。

SQL中的自动递增是什么?

顾名思义,自动递增是指一个字段,该字段主要用于为添加到表中的每条记录生成唯一的编号。通常情况下,它用于主键列,因为SQL中的主键应该是唯一且非空的。因此,自动递增使开发人员可以方便地为所有记录自动生成唯一的编号。

您存储在数据库中的数据并不总是具有唯一属性,因此某些记录需要进行唯一选择和处理。为了确保每条记录的唯一标识,您可以创建一个用于唯一标识的属性,该属性可以指定每一行。因此,在创建此类唯一标识之后,您需要使用自动递增来设置它,以便一旦递增的值可以方便地存储在数据库中。

SQL中的自动递增通过轻松识别每条记录而带来了一些优势。请注意,您需要在Create语句中将列设置为自动递增。否则,可能会出现一些问题。因此,为了保持完整性,您需要为自动递增分配一个主键,以确保数据的标识在数据库中得到维护。

现在,您已经对SQL中的自动递增非常熟悉,让我们继续讨论不同的数据库管理系统中的该字段。

SQL中的自动递增功能。

自动递增的一些功能如下:

  1. 它可以帮助您创建可能没有数据中任何唯一标识属性的主键。
  2. 自动递增的值可以在任何时间点被明确初始化和修改。
  3. 可以轻松地创建记录的唯一标识。
  4. 使用自动递增,可以灵活处理每条记录之间的间隙。
  5. 在SQL中编写自动递增的查询语句在语法上很容易。

设置自动递增

为了您的方便,您可以开始创建一个具有一些属性的表,例如 CustomerID, CustomerName, Age, PhoneNumber 等等。要使用自动递增字段,您需要在SQL Server中使用IDENTITY关键字。为了进行设置,让我们从自动递增的语法和示例开始。

语法

CREATE TABLE TableName (
Column1 DataType  IDENTITY(starting value, increment by),
Column2 DataType, 
);

SQL Server示例

假设您必须创建一个按照上述语法的表,其中包含像Customers这样的名称的属性,列具有CustomerID,CustomerName,Age和PhoneNumber。在这种情况下,如果创建一个自增列,CustomerID将被视为主键,因为它可以充当表的唯一标识符。

CREATE TABLE Customers (
CustomerID int IDENTITY(1,1) PRIMARY KEY,
CustomerName varchar(255),
Age int,
PhoneNumber int);

在上面的示例中,赋予了IDENTITY的初始值为1,并且预期每当添加新记录时,该值将增加1。您可以根据自己的需要直接指定该值,并且需要按照以下的方式使用INSERT查询来插入该值,如下所示。

INSERT INTO Customers (CustomerName,Age, PhoneNumber)
VALUES ('Kundan','24','9876543210');

如果你仔细观察,CustomerID列没有被提及,因为它们将自动生成。所以,如果你想存储更多类似的值,可以按照以下方式操作。

INSERT INTO Customers (CustomerName,Age, PhoneNumber)
VALUES ('Suraj','21','9812323210');

INSERT INTO Customers (CustomerName,Age, PhoneNumber)
VALUES ('Anup','19','9954413210');

INSERT INTO Customers (CustomerName,Age, PhoneNumber)
VALUES ('Monalisa','24','9876544911');

INSERT INTO Customers (CustomerName,Age, PhoneNumber)
VALUES ('Sanju','31','9657154310');

在包含上述数据并保存更改之后,结果可能如下所示。

SQL 自动递增

到目前为止,您已经看到了SQL中自动递增的详细版本。现在,您将看到一些重要操作和示例的快速回顾,以便对自动递增及其广泛应用有一个清晰的了解。

创建自动递增列

CREATE TABLE tableName (
col1 NOT NULL AUTO_INCREMENT,
Col2, col3,......
PRIMARY KEY(col1)
);

更改自增列

ALTER TABLE tableName  AUTO_INCREMENT = n;

每列增量的数量

CREATE TABLE tableName (
col1 NOT NULL AUTO_INCREMENT(n,m),
Col2, col3,......
PRIMARY KEY(col1)
);

Here, n and m are starting points and gaps between the created record.

创建自动递增属性

首先,您需要创建一个带有任意名称的示例数据库。为方便起见,您可以创建一个名为DataFlair_emp的数据库,其中包含下面显示的列。

  1. ID int 自动递增 NOT NULL
  2. Name varchar(50)
  3. Location varchar(50)

使用以下查询来显示上述应用的列。

USE DataFlair;
CREATE TABLE DataFlair_emp(
ID int NOT NULL auto_increment,
Name varchar(50),
Location varchar(50),
PRIMARY KEY(ID));

结果可能会类似这样。

SQL 自动递增

您可以看到数据库已经创建,其中一个ID被定义为自增。您下一个被指派的任务是使用下面给出的查询向数据库插入数据。

USE DataFlair;
INSERT INTO DataFlair_emp(Name, Location) VALUES
("Amit","Indore"),
("RAJ","Pune"),
("Rita","Noida"),
("Shiv","Indore"),
("Ram","Noida");
SELECT * FROM DataFlair_emp; 

在上面的查询中,您主要输入了数据,尽管没有传递任何数字值或ID列值。这是由SQL中的自动增量处理的,结果会自动分配其相应的值。

预期的输出以可视化数据库,可以通过下面给出的图像来查看。

SQL 自动递增

下一个任务是找到一种改变表格的方法。以前,你看到了一个关于如何改变SQL表格的代码片段,现在你将通过这个例子实际看到。

USE DataFlair;
ALTER TABLE DataFlair_emp AUTO_INCREMENT = 100 ;
INSERT INTO DataFlair_emp(Name,Location) VALUES
("Riya","Indore"),
("Shriya","Pune");
SELECT * FROM DataFlair_emp; 

以上代码片段的输出将类似于以下内容。

SQL 自动递增

您可以注意到,初始情况下将自增值设置为100,以便在结果中插入多条记录。您可以添加值范围为1到100的值,并且它们将递增一次并存储为我们数据库中的主键。

自增示例

示例1

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;

输出

+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+--------+

在上面的例子中,AUTO_INCREMENT列没有指定值。MySQL会自动分配一个数字,范围从0到生成的列序列的数量。例如,考虑以下格式。

INSERT INTO animals (id,name) VALUES(0,'groundhog');

如果你将列设置为NOT NULL,有可能将其分配给可以生成序列号的列。

对于这种情况,插入任何其他值到自增列中可能会自动重新设置,并且设置的值将按照较大的列的序列来进行。例如:

INSERT INTO animals (id,name) VALUES(100,'rabbit');
INSERT INTO animals (id,name) VALUES(NULL,'mouse');
SELECT * FROM animals;
+-----+-----------+
| id  | name      |
+-----+-----------+
|   1 | dog       |
|   2 | cat      |
|   3 | penguin   |
|   4 | lax      |
|   5 | whale     |
|   6 | ostrich   |
|   7 | groundhog |
|   8 | squirrel  |
| 100 | rabbit    |
| 101 | mouse     |
+-----+-----------+

当您在任何数据库中更新现有的自增列值时,表格直接不会重置自增列的序列。因此,您可以检索到最近的自增值,或者是最后插入的值。这些函数是与连接相关的,并且由于此属性,对于正在进行的其他插入操作没有影响。

另一个要补充的是,自增列可以轻松地容纳更大数值的最大序列。然而,在达到数据类型上限的过程中,生成的序列号可能由于最大限制而无法成功。例如,如果您将整数的最大许可序列设置为127,那么相同的无符号序列可能会设置为255。因此,您必须最初保持对TINYINT、BIGINT等的约定。

总结

在本教程中,您了解了SQL中自增属性是什么以及如何使用它来存储、顺序和检索数据。在后面的部分中,您将熟悉语法,并且有大量的示例来理解自增流程在不同实例下的工作方式,无论是在表格中插入还是更改值。自增函数允许您基于数据缺乏某些唯一标识的事实来创建主键。借助这些特性和功能,自增允许您修改并填补主键值之间的差距。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程