MySQLのAUTO_INCREMENT列に「NULL」を挿入するとどうなる?
MySQLでは、AUTO_INCREMENTが設定された列にNULL値を挿入すると、エラーにはならず、代わりに自動的に次の連番(シーケンス番号)が生成されて挿入されます。
つまり、AUTO_INCREMENT列に対して明示的に値を指定しなくても、NULLを渡すだけで一意な番号が自動採番される仕組みになっています。これは主キーとしてAUTO_INCREMENTを利用する際によく使われる動作です。
動作確認の例
まず、id列にAUTO_INCREMENTとPRIMARY KEYを設定したテーブルを作成します。
mysql> Create table employee(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name Varchar(10)); Query OK, 0 rows affected (0.16 sec)
次に、INSERT文でid列にNULLを指定してデータを挿入します。
mysql> Insert into employee(id, Name) values(NULL, 'Gaurav'); Query OK, 1 row affected (0.07 sec)
挿入後、テーブルの中身を確認してみましょう。
mysql> Select * from employee; +----+---------+ | id | Name | +----+---------+ | 1 | Gaurav | +----+---------+ 1 row in set (0.00 sec)
結果のポイント
上記の結果から分かるように、id列にNULLを挿入したにもかかわらず、自動的に1という連番が割り当てられています。
- AUTO_INCREMENT列にNULLを挿入 → 次のシーケンス番号が自動的に採番される
- 2行目以降の挿入では、続けて 2、3、4… と順に番号が増えていく
- なお、NOT NULL制約のある列でもエラーにならないのは、MySQLがNULLを自動採番のトリガーとして特別扱いするためです
このように、AUTO_INCREMENT列へのNULL挿入は実質的に「値の自動生成を指示する」操作であり、主キー管理を簡単に行うための便利な機能です。
-
MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法
はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036 
-
MySQLで列の最大値を取得する方法をわかりやすく解説
MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(