MySQLフィールドのデフォルト値を設定する方法

MySQLフィールドのデフォルト値を設定する方法

序文:

MySQL では、テーブル フィールドにデフォルト値を設定できます。テーブルに新しいレコードを挿入するときに、フィールドに値が割り当てられていない場合、システムは自動的にこのフィールドにデフォルト値を挿入します。デフォルト値についてはまだ理解しておくべき知識がいくつかあります。この記事では、フィールドのデフォルト値について学びましょう。

1. デフォルト値に関する操作

DEFAULT キーワードを使用してデフォルト値を定義できます。デフォルト値は通常、データ テーブルにデータを入力するときにエラーを防ぐために、空でない列で使用されます。

テーブルを作成するときに、列のデフォルト値を設定できます。具体的な構文形式は次のとおりです。

# フォーマットテンプレート <フィールド名> <データ型> DEFAULT <デフォルト値>

# 例mysql> CREATE TABLE `test_tb` (
    -> `id` int NOT NULL AUTO_INCREMENT、
    -> `col1` varchar(50) NULLではない DEFAULT 'a',
    -> `col2` int 非null DEFAULT 1,
    -> 主キー (`id`)
    -> ) ENGINE=InnoDB デフォルト文字セット=utf8;
クエリは正常、影響を受けた行は 0 行 (0.06 秒)

mysql> desc test_tb;
+-------+-------------+------+-----+---------+----------------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | 自動増分 |
| col1 | varchar(50) | いいえ | | a | |
| col2 | int(11) | いいえ | | 1 | |
+-------+-------------+------+-----+---------+----------------+
セット内の 3 行 (0.00 秒)

mysql> test_tb (col1) に値 ('fdg') を挿入します。
クエリは正常、1 行が影響を受けました (0.01 秒)

mysql> test_tb (col2) に値を挿入します (2);
クエリは正常、1 行が影響を受けました (0.03 秒)

mysql> test_tb から * を選択します。
+----+------+------+
| id | 列1 | 列2 |
+----+------+------+
| 1 | 1 |
| 2 | 2 |
+----+------+------+
セット内の 2 行 (0.00 秒)

上記の実験から、フィールドにデフォルト値が設定されている場合、データを挿入するときにフィールドの値が指定されていない場合は、デフォルト値が使用されることがわかります。

デフォルト値の変更、デフォルト値の追加、デフォルト値の削除など、デフォルト値に関するその他の操作もあります。これがどのように機能するかを見てみましょう。

# 新しいフィールドを追加し、デフォルト値を設定します。 alter table `test_tb` add column `col3` varchar(20) not null DEFAULT 'abc';

# 元のデフォルト値を変更します alter table `test_tb` alter column `col3` set default '3a';
テーブル `test_tb` を変更し、列 `col3` を変更します。`col3` varchar(20) は null ではありません。DEFAULT '3b';
テーブル `test_tb` を変更し、列 `col3` varchar(20) を null 以外にします。デフォルトは '3c' です。

# 元のデフォルト値を削除します。 alter table `test_tb` alter column `col3` drop default;

# デフォルト値を増やす(変更と同様)
テーブル `test_tb` を変更し、列 `col3` をデフォルト '3aa' に設定します。

2. 使用上の提案

実際、空でないフィールドだけでなく、通常のフィールドでもデフォルト値を設定できます。ただし、一般的にはフィールドを空でない値に設定することをお勧めします。

mysql> テーブル `test_tb` を変更し、列 `col4` varchar(20) DEFAULT '4a' を追加します。
クエリは正常、影響を受けた行は 0 行 (0.12 秒)
レコード: 0 重複: 0 警告: 0

mysql> desc test_tb;
+-------+-------------+------+-----+---------+----------------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | 自動増分 |
| col1 | varchar(50) | いいえ | | a | |
| col2 | int(11) | いいえ | | 1 | |
| col3 | varchar(20) | いいえ | | 3aa | |
| col4 | varchar(20) | はい | | 4a | |
+-------+-------------+------+-----+---------+----------------+
セット内の行数は 5 です (0.00 秒)

プロジェクト開発では、デフォルトが現在の時刻である、デフォルトが削除されない、特定のステータスのデフォルト値が 1 であるなど、いくつかのデフォルト値フィールドが依然として頻繁に使用されます。次の表は、よく使用されるデフォルト値フィールドを簡単に示しています。

テーブル `default_tb` を作成します (
  `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自動増分主キー',
  ...
  `country` varchar(50) nullではない DEFAULT '中国',
  `col_status` tinyint not null デフォルト 1 コメント '1: 何を表していますか 2: 何を表していますか...',
  `col_time` datetime NOT NULL DEFAULT '2020-10-01 00:00:00' COMMENT '何時',
  `is_deleted` tinyint not null デフォルト 0 コメント '0: 削除されていません 1: 削除されました',
  `create_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成時刻',
  `update_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '変更時刻',
  主キー (`id`)
)ENGINE=InnoDB デフォルト文字セット=utf8;

ここで、デフォルト値はフィールド タイプと一致する必要があることにも注意する必要があります。たとえば、フィールドがステータス値を表す場合、その値は 1、2、3 などになります。その場合、このフィールドには char または varchar タイプではなく tinyint タイプを使用することをお勧めします。

私の個人的な経験に基づいて、デフォルト値の使用に関するいくつかの提案をまとめたいと思います。

非 null フィールドにデフォルト値を設定すると、挿入エラーを防ぐことができます。

NULL 可能フィールドにデフォルト値を設定することもできます。

特定の値がどのようなステータスを表すかを示すために、いくつかのステータス値フィールドにメモを付けるのが最適です。

デフォルト値はフィールド タイプと一致する必要があります。

要約:

この記事では主にMySQLフィールドのデフォルト値に関する知識について解説しています。比較的シンプルでわかりやすい内容になっていますので、何か参考になれば幸いです。

上記は、MySQL フィールドのデフォルト値を設定する方法の詳細な内容です。MySQL フィールドのデフォルト値の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQLクエリ時にフィールドにデフォルト値を割り当てる方法
  • MySQL コマンドラインでテーブルにフィールドを追加します (フィールド名、空かどうか、デフォルト値)
  • MySQL テーブル フィールドのデフォルト値の設定 (グラフィック チュートリアルと詳細に注意)
  • MySQL テーブル フィールドの時間設定のデフォルト値

<<:  CSS でテキストカラーグラデーションを実装する 3 つの方法

>>:  Vue イメージ ドラッグ アンド ドロップ ズーム コンポーネントの使用方法の詳細な説明

推薦する

Dockerコンテナの自動終了を停止する方法の詳細な説明

この記事では、Docker コンテナとフロントエンド プロセスの関係と、コンテナを永続的に実行できる...

SQL ストアド プロシージャの取得、データ取得、プロセス分析

この記事は主に、SQL のストアド プロシージャから返されたデータを取得するプロセスの分析を紹介しま...

フォーム入力ボックスに関するWebデザインのヒント

1. キャンセル ボタンが押されたときの破線ボックス<br /> 入力に属性値 hide...

訪問者を惹きつけるウェブサイトコンテンツを作成する14の方法

ネットサーフィンをしていると、私の注意を引こうとする美しいグラフィックでいっぱいの Web サイトを...

Dockerコンテナを使用してプロキシ転送とデータバックアップを実装する方法

序文アプリケーションを Docker コンテナとしてサーバーにデプロイする場合、通常はネットワークと...

MySQLの左結合と内部結合について簡単に説明します

序文最近、X 省のコールド チェーン トレーサビリティ システムの開発で忙しくしています。毎日午後 ...

MySQL を使用した分散ロックの実装

導入分散システムでは、分散ロックは最も基本的なツール クラスです。たとえば、支払い機能を備えた 2 ...

CSS コンテンツ属性を使用して、マウスホバープロンプト (ツールチップ) 効果を実現します。

なぜこのような効果を実現するのでしょうか。実は、この効果もタイトルプロンプトから派生したものですが、...

nginxを使用してドメイン名ベースの仮想ホストを構成する

1. 仮想ホストとは何ですか?仮想ホストは、特殊なテクノロジーを使用して、実行中のサーバーを論理的に...

CSSは下部のタップバー機能を実装します

現在多くの携帯電話には、下部のタブバーを切り替える機能があります。私も最近、同様の機能を見つけました...

DockerがMySQL構成実装プロセスを開始

目次実際の戦闘プロセスまずは主なコマンドと詳細を一つずつ説明しましょう起動が成功したかどうかを確認す...

アカウントとパスワードを記憶する機能を実現するVueの考え方とプロセス

目次実装のアイデアアカウント パスワードを保存する方法は 3 つあります。機能インターフェースアカウ...

MySQL がエラーを報告: ファイルが見つかりません: './mysql/plugin.frm' 解決策

問題を見つける最近、仕事中に問題が見つかりました。問題は、MySQL ディスクがいっぱいだったことで...

Javascriptのクロージャとアプリケーションの詳細な説明

目次序文1. クロージャとは何ですか? 1.1 クロージャは条件コードを満たす1.2 クロージャ生成...

初心者がソースコードからMySQLのデッドロック問題を理解する

夜遅くまで何度も困難なシングルステップデバッグを行った後、ようやく理想的なブレークポイントを見つけま...