MySQLでDATETIME列にデフォルト値「0000-00-00」を設定する方法
MySQLでは、DEFAULTキーワードを使うことで、DATETIME型の列にデフォルト値として「0000-00-00 00:00:00」を設定できます。ここでは、実際にテーブルを作成し、動作を確認するまでの手順を解説します。
1. デフォルト値を持つテーブルを作成する
まず、DATETIME列にDEFAULT値を指定したテーブルを作成します。
mysql> create table DemoTable
-> (
-> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName varchar(20),
-> EmployeeJoiningDate datetime default '0000-00-00 00:00:00'
-> )ENGINE=MyISAM,AUTO_INCREMENT=100;
Query OK, 0 rows affected (0.21 sec)
この例では、EmployeeJoiningDate列にdatetime default '0000-00-00 00:00:00'を指定しています。これにより、INSERT時に日時を明示的に指定しなかった場合、自動的に「0000-00-00 00:00:00」が格納されます。
2. レコードを挿入する
次に、INSERT文を使ってレコードを追加します。このとき、日時列は省略している点に注目してください。
mysql> insert into DemoTable(EmployeeName) values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(EmployeeName) values('David');
Query OK, 1 row affected (0.04 sec)
mysql> insert into DemoTable(EmployeeName) values('Mike');
Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable(EmployeeName) values('Sam');
Query OK, 1 row affected (0.06 sec)
3. データを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+------------+--------------+---------------------+ | EmployeeId | EmployeeName | EmployeeJoiningDate | +------------+--------------+---------------------+ | 100 | Chris | 0000-00-00 00:00:00 | | 101 | David | 0000-00-00 00:00:00 | | 102 | Mike | 0000-00-00 00:00:00 | | 103 | Sam | 0000-00-00 00:00:00 | +------------+--------------+---------------------+ 4 rows in set (0.00 sec)
INSERT時に日時を指定していないため、すべてのレコードのEmployeeJoiningDateにデフォルト値「0000-00-00 00:00:00」が格納されていることが確認できます。
注意点:sql_modeの設定について
MySQL 5.7以降では、デフォルトのsql_modeにNO_ZERO_DATEやSTRICT_TRANS_TABLESが含まれているため、「0000-00-00」をそのまま使用するとエラーになる場合があります。その際は、以下のようにsql_modeから該当モードを除外する必要があります。
SET sql_mode = '';
ただし、ゼロ日付は非推奨(deprecated)な機能であるため、実務ではNULLを許可するか、現在日時を返すCURRENT_TIMESTAMPをデフォルト値として使う方法も検討するとよいでしょう。
-
MySQLでシーケンスを作成する方法|AUTO_INCREMENTの使い方とルールを解説
MySQLにおけるシーケンスとは?MySQLにおける「シーケンス」とは、1(指定した場合は0)から始まり、昇順で自動生成される整数の連番のことです。多くのアプリケーションでは、レコードを一意に識別するための番号を発行する目的でシーケンスが利用されています。具体例代表的な例としては、CRMシステムの顧客ID、人事管理システムの社員番号、設備管理システムの機器番号などが挙げられます。MySQLでシーケンスを自動的に作成するには、対象のカラムにAUTO_INCREMENT属性を設定します。通常は、主キー(PRIMARY KEY)カラムに対して適用するのが一般的です。AUTO_INCREMENTを使用
-
MySQLのAUTO_INCREMENTの使い方と実例解説
ここでは、MySQLにおける AUTO_INCREMENT の仕組みについて詳しく解説します。AUTO_INCREMENTとはAUTO_INCREMENT 属性は、新しい行に対して一意の識別子を自動的に生成するために使用されます。実際にどのように動作するのか、以下のクエリで確認してみましょう。サンプルクエリCREATE TABLE tableName ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO tableName (name