AUTO INCREMENT 欄位 (SQL AUTO INCREMENT Field)

AUTO INCREMENT 欄位會自動遞增資料行的值,因為每次新增資料時欄位值都會自動遞增也就是說 AUTO INCREMENT 欄位值會是唯一的,該欄位用途就像是一個識別碼或流水號,而 AUTO INCREMENT 常與 Primary Key 一起搭配使用。

設定 AUTO INCREMENT 欄位

MySQL

語法...
CREATE TABLE customers
(
  C_Id INT AUTO_INCREMENT,
  Name varchar(50),
  Address varchar(255),
  Phone varchar(20),
  PRIMARY KEY (C_Id)
);
MySQL語法使用AUTO_INCREMENT這關鍵字。注意要將AUTO_INCREMENT欄位指定為PRIMARY KEY,否則會有錯誤!
新增資料...
INSERT INTO customers (Name,Address,Phone)
VALUES ('姓名XXX','地址XXX','電話XXX');
C_Id欄位不需要指定值,MySQL預設會由1開始逐列自動遞增(2,3,4...)。
不過您也可以替AUTO_INCREMENT欄位指定一個起始值,語法如下:
ALTER TABLE table_name AUTO_INCREMENT=某數字;

SQL Server

語法...
CREATE TABLE customers
(
  C_Id INT PRIMARY KEY IDENTITY,
  Name varchar(50),
  Address varchar(255),
  Phone varchar(20)
);
SQL Server語法使用IDENTITY這關鍵字。
新增資料...
INSERT INTO customers (Name,Address,Phone)
VALUES ('姓名XXX','地址XXX','電話XXX');
SQL Server預設會由1開始逐列自動遞增(2,3,4...)。
不過您也可以替IDENTITY欄位指定一個起始值與遞增量,語法如下:
將IDENTITY改成「IDENTITY(起始值,遞增量)」

Oracle

Oracle 比較不一樣,我們需要先建立一個「Sequence」,然後遞增值則從這個 Sequence 抓:

Sequence 建立語法...
CREATE SEQUENCE sequence_name
START WITH 1      #設定起始值
INCREMENT BY 1;   #設定遞增量
新增資料...
INSERT INTO customers (C_Id,Name,Address,Phone)
VALUES (sequence_name.NEXTVAL ,'姓名XXX','地址XXX','電話XXX');
NEXTVAL是用來取得下一個值。

MS Access

語法...
CREATE TABLE customers
(
  C_Id INT PRIMARY KEY AUTOINCREMENT,
  Name varchar(50),
  Address varchar(255),
  Phone varchar(20)
);
Access語法使用AUTOINCREMENT這關鍵字。
新增資料...
INSERT INTO customers (Name,Address,Phone)
VALUES ('姓名XXX','地址XXX','電話XXX');
Access預設會由1開始逐列自動遞增(2,3,4...)。
不過您也可以替AUTOINCREMENT欄位指定一個起始值與遞增量,語法如下:
將AUTOINCREMENT改成「AUTOINCREMENT(起始值,遞增量)」