MySQL を長い間使用してきた多くの人は、これら 2 つのフィールド属性の概念をまだよく理解しておらず、一般的に次のような疑問を抱いていると思います。
上記の質問を念頭に置いて、null と not null の違いを詳しく見てみましょう。
たとえば、カップがある場合、null 値はカップが真空であることを意味し、NULL はカップが空気で満たされていることを意味します。カップは空に見えますが、その違いは非常に大きいです。 「null 値」と「NULL」の概念を明確にすると、問題は基本的に明らかになります。例を作ってテストしてみましょう。 テーブル「test」を作成します( `col1` VARCHAR( 10 ) 文字セット utf8 COLLATE utf8_general_ci NOT NULL , `col2` VARCHAR( 10 ) 文字セット utf8 COLLATE utf8_general_ci NULL ) エンジン = MYISAM ; データを挿入: `test` VALUES (null,1) に INSERT します。 MySQL エラー:
もうひとつ `test` VALUES ('',1) に挿入します。 正常に挿入されました。 NOT NULLフィールドには「NULL」を挿入できず、「null値」のみ挿入できることがわかります。上記の質問1の回答も利用可能です。 質問 2 に関して、NULL は実際には null 値ではないが、スペースを占有するということをすでに上で述べました。したがって、MySQL が比較を行うと、NULL がフィールド比較に参加し、効率にいくらか影響を及ぼします。 テスト テーブルにさらにデータを挿入してみましょう。 `test` VALUES ('', NULL); に INSERT します。 `test` に値 ('1', '2') を挿入します。 表のデータは次のようになります。 ここで、要件に従って、col1 が空でないテスト テーブル内のすべてのデータをカウントします。「<> ''」と「IS NOT NULL」のどちらを使用すればよいでしょうか。結果の違いを見てみましょう。 SELECT * FROM `test` WHERE col1 IS NOT NULL SELECT * FROM `test` WHERE col1 <> '' ご覧のとおり、結果はかなり異なるため、ビジネス ニーズに基づいて、使用する検索条件を決定する必要があります。 MYSQLでは、列属性は可能な限りNOT NULLにすることを推奨しています。 長さの検証: 空の値の間にスペースがないことに注意してください。 mysql> length(''),length(null),length(' '); を選択します。 +------------+--------------+--------------+ | 長さ('') | 長さ(null) | 長さ(' ') | +------------+--------------+--------------+ | 0 | NULL | 2 | +------------+--------------+--------------+ 注記:
これで、MySQL の null と not null、および null と空の値の違いに関するこの記事は終了です。MySQL の null と not null の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vue は PC カメラを呼び出してリアルタイムで写真を撮る機能を実装します
今日は、シンプルなハートビート効果を作成します。多くのコードは必要ありません。ボックスを追加し、CS...
具体的な方法は以下の通りです。 CSSコードコードをコピーコードは次のとおりです。 .wap_bot...
システムの入力と出力の管理1. システムの入力と出力を理解するLinuxシステムでは、1は正しい出力...
この記事では、Ubuntu 環境で PHP と Nginx をコンパイルしてインストールする方法につ...
目次1.ダウンロード後、インストールしたいディレクトリに解凍します。 2. インストールディレクトリ...
目次1. 切り替え方法2. タブを動的に生成する3. キャッシュコンポーネント3.1 キープアライブ...
私の開発環境は、VMWare 仮想マシンに CentOS をインストールし、ホスト ファイルにインタ...
派生テーブルについてメイン クエリに派生テーブルが含まれている場合、または SELECT ステートメ...
何人かの学生は、マスターとスレーブの間の不一致の問題に遭遇したと述べました。一般的な状況としては、m...
勉強の計画は簡単に中断され、継続するのが困難です。先日、社内で事業の方向性を調整するための会議があり...
Kubernetes は面白そうだったので(ギリシャ人なら名前に問題があると思うでしょうが)、ずっと...
この記事は主にDockerでパラメータ変数を外部から指定する方法を紹介します。この記事のサンプルコー...
pingスキャンをオフにする(役に立たないが)まずルートに切り替えるエコー 1 > /proc...
MySQL の仕様によっては、テーブル作成仕様にすべてのフィールドが空であってはならないという要件を...
まず、私の基本的な開発環境を見てみましょう。オペレーティングシステム: MacOS 10.13.5 ...