TECH I.S.

SQL AUTO INCREMENTフィールド


AUTO INCREMENTフィールド

自動インクリメントにより、新しいレコードがテーブルに挿入されたときに一意の番号が自動的に生成されます。

多くの場合、これは、新しいレコードが挿入されるたびに自動的に作成される主キー・フィールドです。


MySQLの構文

次のSQLステートメントは、"Personid"列を"Persons"テーブルの自動インクリメント主キー・フィールドとして定義します。

CREATE TABLE Persons(     Personid int NOT NULL AUTO_INCREMENT,    LastName varchar(255) NOT NULL,    FirstName varchar(255),     Age int,    PRIMARY KEY (Personid) );

MySQLはAUTO_INCREMENT自動インクリメント機能を実行するためのキーワード。

デフォルトでは、AUTO_INCREMENTは1で、新しいレコードごとに1ずつ増加します。

AUTO_INCREMENTシーケンスを別の値で開始するには、次のSQLステートメントを使用します。
ALTER TABLE Persons AUTO_INCREMENT=100;

「Persons」テーブルに新しいレコードを挿入するために、「Personid」列の値を指定する必要はありません (一意の値が自動的に追加されます)。

INSERT INTO Persons (FirstName,LastName) VALUES ('Lars','Monsen');

上記のSQLステートメントは、「Persons」テーブルに新しいレコードを挿入します。 「Personid」列には一意の値が割り当てられます。 "FirstName"列は"Lars"に設定され、"LastName" 列は"Monsen"に設定されます。


SQL Serverの構文

次のSQLステートメントは、"Personid"列を"Persons"テーブルの自動インクリメント主キー・フィールドとして定義します。

CREATE TABLE Persons(     Personid int IDENTITY(1,1) PRIMARY KEY,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int );

MS SQL Serverは、IDENTITYキーワードを使用して自動インクリメント機能を実行します。

上記の例では、IDENTITYは1で、新しいレコードごとに1ずつ増加します。

ヒント:"Personid" 列の値を10から開始して5ずつ増やすように指定するには、次のように変更します。IDENTITY(10,5).

「Persons」テーブルに新しいレコードを挿入するために、「Personid」列の値を指定する必要はありません (一意の値が自動的に追加されます)。

INSERT INTO Persons (FirstName,LastName) VALUES ('Lars','Monsen');

上記のSQLステートメントは、「Persons」テーブルに新しいレコードを挿入します。 「Personid」列には一意の値が割り当てられます。"FirstName"列は"Lars"に設定され、"LastName"列は"Monsen"に設定されます。


MS Accessの構文

次のSQLステートメントは、"Personid"列を"Persons"テーブルの自動インクリメント主キー・フィールドとして定義します。

CREATE TABLE Persons(     Personid AUTOINCREMENT PRIMARY KEY,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int );

MS Accessでは、AUTOINCREMENTキーワードを使用してオートインクリメント機能を実行します。

デフォルトでは、AUTOINCREMENTの開始値は 1 で、新しいレコードが作成されるたびに 1 ずつ増加します。

ヒント:"Personid" 列が値10から開始し、5ずつ増加するように指定するには、autoincrement を次のように変更します。AUTOINCREMENT(10,5)

「Persons」テーブルに新しいレコードを挿入するために、「Personid」列の値を指定する必要はありません (一意の値が自動的に追加されます)。

INSERT INTO Persons (FirstName,LastName) VALUES ('Lars','Monsen');

上記のSQLステートメントは、「Persons」テーブルに新しいレコードを挿入します。 「Personid」列には一意の値が割り当てられます。 "FirstName"列は"Lars"に設定され、"LastName"列は"Monsen"に設定されます。


Oracleの構文

Oracleでは、コードはもう少しトリッキーです。

シーケンスオブジェクトを使用して自動インクリメントフィールドを作成する必要があります (このオブジェクトは番号シーケンスを生成します)。

以下を使用しますCREATE SEQUENCE構文:

CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10;

上記のコードは、1から始まり1ずつ増加するseq_personという名前のシーケンス オブジェクトを作成します。また、パフォーマンスのために最大10個の値をキャッシュします。キャッシュ オプションは、アクセスを高速化するためにメモリに保存するシーケンス値の数を指定します。

"Persons"テーブルに新しいレコードを挿入するには、nextval関数を使用する必要があります(この関数は、seq_personシーケンスから次の値を取得します)。

INSERT INTO Persons (Personid,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen');

上記のSQLステートメントは、「Persons」テーブルに新しいレコードを挿入します。「Personid」列には、seq_personシーケンスの次の番号が割り当てられます。"FirstName"列は "Lars"に設定され、"LastName"列は"Monsen"に設定されます。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細