日常の開発では、データベースの追加、削除、変更、クエリが一般的に行われるため、Mysql で NULL や空文字に遭遇することは避けられません。 意味:
簡単に言うと: 空の文字列 ('') は、何も入っていない真空カップのようなものです。 違い:
例:
CREATE TABLE test_ab (id int, col_a varchar(128)、 col_b varchar(128) NULLではない ); test_ab(id,col_a,col_b) の値(1,1,1) を挿入します。 test_ab(id,col_a,col_b) 値(2,'','') を挿入します。 test_ab(id,col_a,col_b) 値(3,null,'') を挿入します。 test_ab(id,col_a,col_b) に値(4,null,1) を挿入します。 mysql> test_ab から * を選択します。 +------+-------+-------+ | id | 列a | 列b | +------+-------+-------+ | 1 | 1 | 1 | | 2 | | | | 3 | NULL | | | 4 | NULL | 1 | +------+-------+-------+ セット内の 4 行 (0.00 秒)
mysql> test_ab から * を選択します。 where col_a = ''; +------+-------+-------+ | id | 列a | 列b | +------+-------+-------+ | 2 | | | +------+-------+-------+ セット内の 1 行 (0.00 秒) mysql> col_a が null である test_ab から * を選択します。 +------+-------+-------+ | id | 列a | 列b | +------+-------+-------+ | 3 | NULL | | | 4 | NULL | 1 | +------+-------+-------+ セット内の 2 行 (0.00 秒)
mysql> test_ab から col_a+1 を選択します (id = 4)。 +---------+ | 列a+1 | +---------+ | NULL | +---------+ セット内の 1 行 (0.00 秒) mysql> test_ab から col_b+1 を選択します (id = 4)。 +---------+ | 列b+1 | +---------+ | 2 | +---------+ セット内の 1 行 (0.00 秒) このことから、null 値は計算に参加できないことがわかります。null 値は計算に参加すると空になるからです。
mysql> test_ab から count(col_a) を選択します。 +--------------+ | カウント(col_a) | +--------------+ | 2 | +--------------+ セット内の 1 行 (0.00 秒) mysql> test_ab から count(col_b) を選択します。 +--------------+ | カウント(col_b) | +--------------+ | 4 | +--------------+ セット内の 1 行 (0.00 秒) このことから、数を数えると次のことがわかります。 null値は有効な値としてカウントされません。 結論は: したがって、デフォルト値を設定するときは、デフォルト値として null を使用しないようにしてください。フィールドが int 型の場合、デフォルト値は 0 です。varchar 型の場合、デフォルト値としては空の文字列 ('') の方が適しています。 null を含むデフォルト値もインデックス付けできますが、効率は影響を受けます。もちろん、フィールドにインデックスが作成されないことが確実な場合は、null に設定できます。 フィールドを設定するときは、not null の概念がデフォルト値と競合しないため、not null に設定できます。デフォルト値を ('') に設定すると、null 状況を回避できますが、フィールドに null 値が直接割り当てられる可能性があり、データベースに null が引き続き表示されるため、フィールドに not null を追加することを強くお勧めします。 次のようなものです: mysql> alter table test_ab `col_b` varchar(128) NOT NULL DEFAULT '' を変更します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) レコード: 0 重複: 0 警告: 0 mysql> desc test_ab; +-------+--------------+------+-----+--------+-------+ | フィールド | タイプ | Null | キー | デフォルト | 追加 | +-------+--------------+------+-----+--------+-------+ | id | int | はい | | NULL | | | col_a | varchar(128) | はい | | NULL | | | col_b | varchar(128) | いいえ | | | | +-------+--------------+------+-----+--------+-------+ セット内の 3 行 (0.00 秒) ストレージスペースとインデックスのパフォーマンスの点では NULL 文字より悪くないかもしれませんが、その特殊性を回避し、プロジェクトに不確実性をもたらすために、NULL をデフォルト値として使用しないことをお勧めします。 以上がMySQLにおけるnull値と空文字('')の区別の詳細です。MySQLのnull値と空文字の詳細については、123WORDPRESS.COMの他の関連記事に注目してください! 以下もご興味があるかもしれません:
|
>>: Vue3 のリアクティブ関数 toRef 関数 ref 関数の紹介
序文MySQL クエリは select コマンドを使用し、limit および offset パラメー...
01. 概要絶対パスと相対パスはシェル環境でよく使用され、それぞれに独自の用途があります。相対パスの...
1. ネットワーク接続方法がブリッジされていることを確認する物理ネットワーク接続ステータスのコピーを...
この記事では、centos6.6 で php7 + nginx 環境をインストールする方法について説...
IPマスカレードとポート転送Firewalldは2種類のネットワークアドレス変換をサポートしています...
色はあらゆるウェブサイトにとって最も重要な要素の 1 つであり、閲覧者に大きな影響を与えるため、色の...
詳細な手順は次のとおりです。 1. ディスク容量を確認します。 [root@localhost バッ...
目次概要バーチャルドム原理実装プロセスパッチ方式sameVnode関数patchVnode関数upd...
目次1. 基本概念と基本コマンド1) 基本的な概念2) 基本コマンド2. SQL文の記述順序と実行順...
今日、会社の Springboot プロジェクトは、テストのためにテスト サーバーにデプロイする準備...
この記事では、Vueを使用して特定の領域に透かしを描く方法を紹介します。具体的な内容は次のとおりです...
目次1. ファイルとディレクトリの基本的な保存2. Inコマンドの紹介(1)lnコマンドの基本情報を...
.NET の世界に参入したい開発者であれば、何が可能なのかを知る必要があります。 .NET Fram...
目次1. 連結() 2. 結合() 3. プッシュ() 5. シフト() 6. シフト解除() 7....
目次概要ファイル記述子同期、非同期、Promise同期書き込み非同期書き込み(推奨)約束の書き方...