MySQLのAUTO_INCREMENTはデフォルトで符号付き?負の値も格納できるのか検証
はい、MySQLのAUTO_INCREMENTカラムは、デフォルトで符号付き(正と負の両方の値を扱える)です。つまり、明示的に負の値を挿入することも可能です。
実際にテーブルを作成して動作を確認してみましょう。
テーブルの作成
まず、AUTO_INCREMENTを設定したカラムを持つテーブルを作成します。
mysql> create table DemoTable
-> (
-> MyNumber int AUTO_INCREMENT PRIMARY KEY
-> );
Query OK, 0 rows affected (0.45 sec)
データの挿入
次に、INSERT文でレコードを挿入します。ここでは、AUTO_INCREMENTカラムにあえて負の値も指定しています。
mysql> insert into DemoTable values() ;
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(-100);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(-300);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(0);
Query OK, 1 row affected (0.18 sec)
SELECT文での確認
SELECT文を実行して、テーブル内のすべてのレコードを表示します。
mysql> select * from DemoTable;
出力結果
+----------+
| MyNumber |
+----------+
| -300 |
| -100 |
| 1 |
| 2 |
+----------+
4 rows in set (0.00 sec)
この結果から、AUTO_INCREMENTカラムに負の値(-100、-300)がそのまま格納されていることが確認できます。
動作のポイント
- 値を省略した場合: 自動的に連番が採番されます。最初の挿入では「1」が割り当てられています。
- 負の値を明示した場合: 指定した値がそのまま保存され、連番には影響しません。
- 「0」を挿入した場合: 通常は次の連番が自動生成されます(最後の行が「2」になっているのはこのためです)。※NO_AUTO_VALUE_ON_ZEROモードが有効な場合は例外です。
- UNSIGNED属性: カラム定義にUNSIGNEDを付けると負の値を禁止でき、代わりに正の数値として扱える範囲を広げられます。
-
MySQLではInnoDBはデフォルトで有効になっている?ストレージエンジンの確認方法を解説
MySQLにおけるInnoDBのデフォルト設定 はい、MySQLではInnoDBはデフォルトで有効になっています。特にMySQL 5.5以降ではInnoDBが標準のストレージエンジンとして採用されているため、CREATE文で明示的に指定しなくても自動的にInnoDBが使用されます。 ここでは、MySQL 8.0の環境を使って実際に確認していきましょう。まずは現在使用中のバージョンをチェックします。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1
-
MySQLでAUTO_INCREMENT列を扱う方法を徹底解説
MySQLでは、AUTO_INCREMENT属性を使うことで、新しい行に対して自動的に一意の番号(識別子)を割り当てることができます。本記事では、AUTO_INCREMENT列の基本的な使い方、動作の仕組み、そして利用時に守るべきルールについて、実例とともにわかりやすく解説します。基本的な使い方まずは、以下のクエリを見てみましょう。テーブルを作成し、データを挿入した結果を確認します。クエリ例CREATE TABLE tableName ( id MEDIUMINT NOT NULL AUTO_INCREMENT,