SQL - 自動増加

こんにちは、未来のデータベースの魔法使いたち!今日は、SQLの自動増加の魔法の世界に飛び込みましょう。これは初めてかもしれませんが、このチュートリアルの終わりまでに、プロのように自動増加を行えるようになるでしょう!

SQL - Auto Increment

自動増加とは?

具体的な内容に入る前に、まず自動増加とは何かを理解しましょう。図書館司書(私も大学時代に司書をしていたことがあります!)として、新しい本が入ってきた際にそれぞれに唯一の番号を割り当てる必要があるとします。最後に使用した番号を覚えて、毎回手動でインクリメントするのは一筋縛りではありませんか?それが自動増加で救済されます!

SQLでは、自動増加はテーブルに挿入される新しいレコードごとに唯一の番号を自動生成するフィールドです。助手的なロボットアシスタントが「心配しないで、番号の処理は私がやるよ!」と言っているようなものです。

MySQLでの自動増加

まずは、最も人気のあるデータベース管理システムの一つであるMySQLから始めましょう。MySQLでは、AUTO_INCREMENTキーワードを使用して自動インクリメントするコラムを作成します。

自動増加のコラムを持つテーブルの作成

以下に、自動インクリメントするプライマリーキーを持つテーブルを作成する方法を示します:

CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);

この例では:

  • idは自動インクリメントするコラムです
  • INTはそれが整数であることを指定します
  • AUTO_INCREMENTはMySQLに自動でこの値をインクリメントするように指示します
  • PRIMARY KEYはこのコラムをテーブルのプライマリーキーにします

レコードの挿入

次に、テーブルに生徒を追加してみましょう:

INSERT INTO students (name, age) VALUES ('Alice', 20);
INSERT INTO students (name, age) VALUES ('Bob', 22);
INSERT INTO students (name, age) VALUES ('Charlie', 21);

idを指定していないことに注意してください。MySQLは自動的にこれらの値を割り当ててインクリメントします。このテーブルからすべてのレコードを選択すると、以下のようになります:

+----+---------+-----+
| id | name    | age |
+----+---------+-----+
|  1 | Alice   |  20 |
|  2 | Bob     |  22 |
|  3 | Charlie |  21 |
+----+---------+-----+

特定の値から開始する

自動増加を特定の番号から開始したい場合はどうでしょうか?もしかしたら、2つのデータベースを統合して重複したIDを避けたいかもしれません。問題ありません!初期値を以下のように設定できます:

ALTER TABLE students AUTO_INCREMENT = 1000;

これで、次に挿入されるレコードのIDは1000から始まり、そこからインクリメントされます。

SQL Serverでの自動増加

次に、SQL Serverに移動しましょう。概念は同じですが、シンタックスが少し異なります。SQL Serverでは、IDENTITYキーワードを使用して自動インクリメントするコラムを指定します。

IDENTITYを持つテーブルの作成

以下に、SQL Serverで自動インクリメントするコラムを持つテーブルを作成する方法を示します:

CREATE TABLE employees (
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);

この例では:

  • IDENTITY(1,1)は1から始めて1ずつインクリメントする意味です
  • 第一パラメータ(1)はシード値(どこから始めるか)です
  • 第二パラメータ(1)はインクリメント値(どれだけ増やすか)です

レコードの挿入

レコードの挿入はMySQLと似ています:

INSERT INTO employees (name, department) VALUES ('David', 'Sales');
INSERT INTO employees (name, department) VALUES ('Emma', 'Marketing');
INSERT INTO employees (name, department) VALUES ('Frank', 'IT');

また、idを指定しません。SQL Serverが代わりに処理します。

現在のIDENTITY値の確認

SQL Serverでは、IDENT_CURRENT関数を使用して現在のIDENTITY値を確認できます:

SELECT IDENT_CURRENT('employees');

これは、'employees'テーブルの最後に生成されたIDENTITY値を返します。

IDENTITYのリセット

IDENTITY値をリセットする必要がある場合は(注意が必要ですが)、以下のようにします:

DBCC CHECKIDENT ('employees', RESEED, 1000);

これはIDENTITYを1000にリセットし、次に挿入されるレコードのIDが1000から始まるようにします。

共通の自動増加方法

以下に、私たちが議論した一般的な自動増加方法をまとめた表を示します:

データベース キーワード
MySQL AUTO_INCREMENT id INT AUTO_INCREMENT PRIMARY KEY
SQL Server IDENTITY id INT IDENTITY(1,1) PRIMARY KEY

結論

そして、皆さん!あなたのSQLスキルが自動増加のスーパーパワーでレベルアップしました。自動増加のコラムはユニークな識別子を作成するため非常に便利ですが、賢く使用しましょう。スパイスのように、必要不可欠ですが、過度に使用しないように注意してください!

私が教えてきた年月の中で、学生たちは混乱から「ああ、これだ!」という瞬間に達し、自動増加を理解したときに、データベース設計がもっと楽しくなるのを見てきました!光がついたように、突然、データベース設計が楽しくなります!

練習を続け、好奇心を持ち続けると、あなたは周囲でSQLのすべてを理解する人物になるでしょう。幸せなコーディングを、あなたのクエリが常に期待通りの結果を返すことを祈っています!

Credits: Image by storyset