SQL - 自動遞增



SQL 自動遞增用於自動將唯一的順序值新增到表的列中。

我們通常在建立表時為列定義自動遞增。當我們將新記錄插入表中時,唯一值將新增到這些記錄中。

當我們在表列上使用自動遞增時,無需向該列插入 NOT NULL 值。如果我們提供此類值,它們將覆蓋唯一標識,並且遞增將僅在 NULL 值(如果有)上繼續;導致資料模糊。

不同的 RDBMS 以不同的方式支援自動遞增功能。

MySQL 中的自動遞增

在 MySQL 中,您可以使用名為 AUTO_INCREMENT 的屬性將自動遞增功能新增到表的列。

預設情況下,當我們在列上定義 AUTO_INCREMENT 屬性時,唯一值從“1”生成;對於我們輸入表中的每個新記錄,列中的值將遞增 1。因此,插入的第一條記錄的值為 1,第二條記錄的值為 2,依此類推。

語法

以下是將 AUTO_INCREMENT 屬性新增到 MySQL 表列的語法:

CREATE TABLE table_name(
   column1 datatype AUTO_INCREMENT,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype
);

示例

在查詢中,我們建立一個名為 CUSTOMERS 的表,並將 AUTO_INCREMENT 新增到名為 ID 的列:

CREATE TABLE CUSTOMERS(
   ID INT PRIMARY KEY AUTO_INCREMENT,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2)
);

現在,讓我們使用 INSERT 語句將值插入 CUSTOMERS 表:

INSERT INTO CUSTOMERS (NAME, AGE, ADDRESS, SALARY) VALUES
("Ramesh", 32, "Ahmedabad", 2000.00),
("Khilan", 25, "Delhi", 1500.00),
("Kaushik", 23, "Kota", 2000.00),
("Chaitali", 25, "Mumbai", 6500.00);

驗證

要驗證這一點,您需要使用 SELECT 查詢檢索 CUSTOMERS 的內容,如下所示:

SELECT * FROM CUSTOMERS;

輸出

以下是上述查詢的輸出,您可以在此處觀察到 ID 值是自動生成的:

ID 姓名 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00

現有列上的 AUTO_INCREMENT

MySQL 還允許您使用 ALTER TABLE 語句在現有表上實現 AUTO_INCREMENT 屬性。

以下查詢從 CUSTOMERS 表 CUSTOMERS 中的 ID 值 5 開始遞增:

ALTER TABLE CUSTOMERS AUTO_INCREMENT = 100;

現在,讓我們插入更多記錄以檢視 ID 值是否自動遞增。

INSERT INTO CUSTOMERS(NAME, AGE, ADDRESS, SALARY) VALUES
("Hardik", 27, "Bhopal", 8500.00),
("Komal", 22, "MP", 4500.00),
("Muffy", 24, "Indore", 10000.00);

要檢視上述表資料,我們使用以下 SELECT 查詢:

SELECT * FROM CUSTOMERS;

輸出

以下顯示了上述查詢的輸出。它顯示了自動遞增的作用。我們得到新插入記錄的 ID 值從 100 開始。

ID 姓名 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
100 Hardik 27 Bhopal 8500.00
101 Komal 22 Hyderabad 4500.00
102 Muffy 24 Indore 10000.00

SQL Server 中的自動遞增

在 SQL Server 中,沒有直接命令/查詢來執行自動遞增。相反,我們使用 IDENTITY() 屬性。此屬性的工作方式類似於 MySQL 中的 AUTO_INCREMENT 屬性。它自動生成唯一的順序編號,並且主要用於 PRIMARY KEY 約束。

語法

以下是 SQL Server 中 IDENTITY() 屬性的基本語法:

CREATE TABLE table_name (
   column1 datatype IDENTITY [(seed, increment)],
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype
);

此屬性接受兩個引數。下面描述了這些引數

  • seed:它設定自動遞增列的起始值。
  • increment:它指定每增加一行值增加多少。

示例

在以下示例中,我們在名為 CUSTOMERS 的表的 ID 列上使用 IDENTITY() 屬性:

CREATE TABLE CUSTOMERS(
   ID INT PRIMARY KEY IDENTITY(1,1),
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2)
);

建立表後,我們使用以下查詢插入一些記錄:

INSERT INTO CUSTOMERS(NAME, AGE, ADDRESS, SALARY) VALUES
('Ramesh', 32, 'Ahmedabad', 2000.00),
('Khilan', 25, 'Delhi', 1500.00),
('Kaushik', 23, 'Kota', 2000.00),
('Chaitali', 25, 'Mumbai', 6500.00);

要查看錶資料,我們使用以下 SELECT 查詢:

SELECT * FROM CUSTOMERS;

輸出

以下是上述查詢的輸出,其中 ID 值是自動生成的:

ID 姓名 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
廣告