SQLチュートリアル

SQL HOME SQLイントロ SQL構文 SQL Select SQL Select Distinct SQL Where SQL And、Or、Not SQLの順序 SQL Insert Into SQLNull値 SQLアップデート SQL削除 SQL Select Top SQLの最小値と最大値 SQLカウント、平均、合計 SQL Like SQLワイルドカード SQL入力 SQLの間 SQLエイリアス SQL結合 SQL内部結合 SQL左結合 SQL右結合 SQL完全結合 SQL自己結合 SQLユニオン SQL Group By SQLを持っている SQLが存在する SQL Any、All SQL Select Into SQL Insert Into Select SQLケース SQLNull関数 SQLストアドプロシージャ SQLコメント SQL演算子

SQLデータベース

SQL Create DB SQLドロップDB SQLバックアップDB SQLテーブルの作成 SQLドロップテーブル SQL ALTER TABLE SQLの制約 SQLはNullではありません SQL独自 SQL主キー SQL外部キー SQLチェック SQLのデフォルト SQLインデックス SQL自動インクリメント SQLの日付 SQLビュー SQLインジェクション SQLホスティング SQLデータ型

SQLリファレンス

SQLキーワード MySQL関数 SQLServerの機能 MSAccess関数 SQLクイック参照

SQLの

SQLの例 SQLクイズ SQL演習 SQL証明書

SQL AUTOINCREMENTフィールド


AUTOINCREMENTフィールド

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

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


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」に設定されます。


SQLServerの構文

次の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」に設定されます。



アクセスの構文

次の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(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;

上記のコードは、seq_personというシーケンスオブジェクトを作成します。このオブジェクトは1から始まり、1ずつ増加します。また、パフォーマンスのために最大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」に設定されます。