MySQLでID列(AUTO_INCREMENT)のシード値を取得・変更する方法
MySQLでAUTO_INCREMENT(ID列)の現在のシード値を確認するには、SHOW VARIABLESコマンドを使用します。
mysql> SHOW VARIABLES LIKE 'auto_inc%';
出力結果
上記のコマンドを実行すると、以下のような出力が得られます。
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.95 sec)
「auto_increment_increment」は連番の増分値、「auto_increment_offset」は開始時のオフセット値を表しています。これらの設定により、AUTO_INCREMENTの挙動を外部から制御することも可能です。
ここからは、実際にテーブルを作成してAUTO_INCREMENTの動作を確認していきましょう。
テーブルの作成
まず、AUTO_INCREMENTを持つテーブルを作成します。
mysql> create table DemoTable
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY
-> );
Query OK, 0 rows affected (0.94 sec)レコードの挿入
INSERTコマンドを使ってレコードを2件追加します。AUTO_INCREMENT列は値を指定しなくても自動的に採番されます。
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.44 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.26 sec)
レコードの確認
SELECT文でテーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable;
出力結果
+-----------+ | StudentId | +-----------+ | 1 | | 2 | +-----------+ 2 rows in set (0.00 sec)
デフォルト設定では、1から順番に連番が振られていることがわかります。
AUTO_INCREMENTの開始値を変更する
次に、ALTER TABLE文を使ってAUTO_INCREMENTのシード値を1000に変更してみます。
mysql> alter table DemoTable AUTO_INCREMENT=1000; Query OK, 0 rows affected (0.50 sec) Records: 0 Duplicates: 0 Warnings: 0
変更後、再度レコードを挿入します。
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.51 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (1.37 sec)
SELECT文で結果を確認しましょう。
mysql> select *from DemoTable;
出力結果
+-----------+ | StudentId | +-----------+ | 1 | | 2 | | 1000 | | 1001 | +-----------+ 4 rows in set (0.00 sec)
このように、AUTO_INCREMENTの値を変更した後に入力されたレコードには、指定した値(1000)以降の連番が自動的に採番されることが確認できます。SHOW VARIABLESコマンドと組み合わせれば、現在のシード値の確認と変更の両方を柔軟に行うことが可能です。
-
MySQLで列の値の先頭に000(ゼロ埋め)を追加する方法
MySQLで列の値に000(ゼロ)を追加するには?MySQLで数値の先頭に「000」のようなゼロを追加して表示したい場合は、ZEROFILL属性を使用します。ZEROFILLを指定した列では、設定された表示幅に満たない桁数が自動的に0で埋められます。まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1913 ( Code int(4) ZEROFILL AUTO_INCREMENT NOT NULL, PRIMARY KEY(Code) ); Query OK, 0 rows affected (0.00
-
MySQLで列の最大値を取得する方法をわかりやすく解説
MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(