sql >> データベース >  >> RDS >> Mysql

NOT NULL DEFAULT''のポイントは何ですか?

    NULLには特別な動作があります。NULLと何かを比較すると、NULLが返されます。 、これはfalse以外のものです または0 。 「不明」という意味です。

    たとえば、次の表を見てください:

     user_id | gender
    ------------------
     1       | NULL
     2       | 'M'
     3       | 'F'
     4       | 'F'
    

    SELECT * FROM mytable WHERE gender = 'M' 期待どおりに1行を返します

    SELECT * FROM mytable WHERE gender != 'M' 3行ではなく、2行を返します。

    SELECT * FROM mytable WHERE gender != 'M' OR gender IS NULL 予想される3行を返します。

    編集:一部のアプリケーションでは、0を使用します (または、神は禁じています、別の「魔法の数」)NULLの代わりに 推奨されていません(この例では、単位や正確な値は関係ありません):

     Date       | Temperature 
    --------------------------
     2010-01-01 | 10          
     2010-01-02 | 4
     2010-01-03 | 0
     2010-01-04 | -22
     2010-01-05 | -45
     2010-01-06 | NULL
     2010-01-07 | -34
    

    ここでは、NULL 1月6日は「値が不明」を意味します。おそらく、温度が低すぎて温度計のプローブが応答しなくなったためです。ただし、気温が0だった1月3日とはまったく異なる意味です。 、つまり0度です。

    また、@ Bill Karwinが言及しているように、NULLは集計関数(COUNT)で特別に動作します。 、SUMAVG など):AVG(Temperature)を計算します 上記のデータで-14.5が得られます 、NULL行は無視されるため。



    1. MySQLデータベース/テーブル/列がどの文字セットであるかを確認するにはどうすればよいですか?

    2. 1:nテーブルからの単一のクエリで最新のメモを(タイムスタンプで)取得する

    3. 要求されたサービスを作成できません[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

    4. シーケンスとアイデンティティ