MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでテーブルを作成し、現在の日付をデフォルト値として設定する方法

MySQLでは、テーブル作成時にDEFAULT制約を追加することで、カラムにデフォルト値を設定できます。日付型のカラムに対して現在の日付(CURRENT_DATE)をデフォルト値として指定すれば、レコード挿入時に明示的に値を渡さなくても自動的に当日の日付が登録されます。

基本構文

テーブルを作成し、DEFAULT制約を使ってデフォルト値を設定する際の基本的な構文は以下の通りです。

CREATE TABLE yourTableName
(
yourColumnName1 dataType not null ,
yourColumnName2 dataType default anyValue,
.
.
.
N
);

現在の日付をデフォルトに設定したテーブルの作成例

それでは、「employee_joining_date(従業員の入社日)」カラムにCURRENT_DATEをデフォルト値とするDEFAULT制約を設定したテーブルを作成してみましょう。

mysql> create table demo43
-> (
-> employee_id int not null auto_increment primary key,
-> employee_name varchar(40) not null,
-> employee_status varchar(60) default "NOT JOINED",
-> employee_joining_date date default(CURRENT_DATE)
-> );
Query OK, 0 rows affected (0.66 sec)

このテーブルでは、employee_idが自動採番の主キー、employee_nameが必須項目、employee_statusには「NOT JOINED」が、employee_joining_dateには現在の日付がそれぞれデフォルト値として設定されています。なお、CURRENT_DATEをデフォルトに指定できるのはMySQL 8.0以降です。

レコードの挿入

INSERTコマンドを使って、いくつかのレコードをテーブルに追加します。3件目のBobのように、employee_statusとemployee_joining_dateを指定せずに挿入すると、両方ともデフォルト値が適用されます。

mysql> insert into demo43(employee_name,employee_status,employee_joining_date) values('John','JOINED','2020-05-10');
Query OK, 1 row affected (0.12 sec)
mysql> insert into demo43(employee_name,employee_status,employee_joining_date) values('David','JOINED','2020-10-12');
Query OK, 1 row affected (0.21 sec)
mysql> insert into demo43(employee_name) values('Bob');
Query OK, 1 row affected (0.15 sec)

結果の確認

SELECT文でテーブル内のレコードを表示します。

mysql> select *from demo43;

実行すると、次のような出力が得られます。

+-------------+---------------+-----------------+-----------------------+
| employee_id | employee_name | employee_status | employee_joining_date |
+-------------+---------------+-----------------+-----------------------+
|           1 | John          | JOINED          | 2020−05−10            |
|           2 | David         | JOINED          | 2020−10−12            |
|           3 | Bob           | NOT JOINED      | 2020−10−31            |
+-------------+---------------+-----------------+-----------------------+
3 rows in set (0.00 sec)

このように、INSERT時に日付を指定しなかったBobのレコードには、実行日である「2020-10-31」が自動的に登録されていることが確認できます。DEFAULT制約とCURRENT_DATEを組み合わせれば、入力漏れによるデータ不整合を防ぎ、登録日の自動記録などに活用できる便利な設計となります。

  1. MySQLで現在の日付に11日を追加する方法【DATE_ADD関数の使い方】

    はじめにMySQLでは、DATE_ADD()関数を使うことで、日付に指定した日数を簡単に加算できます。本記事では、現在の日付(CURDATE())に11日を追加する方法を、テーブル作成からクエリ実行まで具体的な例を交えて解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1994 ( ArrivalDate date ); Query OK, 0 rows affected (5.33 sec)テストデータの挿入続いて、INSERTコマンドを使用してテーブルに複数のレコードを挿入します。mysql&g

  2. MySQLでJSON型カラムにデフォルト値を設定する方法

    MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK,