デフォルト値が指定されていない場合、フィールドのデフォルト値は何ですか?

私はこれがばかな質問ではないことを願っています。すべての変数にデフォルト値を設定することも、変数を挿入するための関数を設定することもできます。フィールドを挿入する必要がなく、null値を許可しない場合、phpMyAdminに表示される「空白」の値は何ですか?クエリで空の文字列などとして返されますか?

そのレコードの特定の列の値が「空」でないか、空白であるかどうかなど、すべてのレコードを照会する必要があります。

ありがとう。

12

3 答え

マニュアルを参照すると、

明示的なDEFAULTを持たないNOT NULL列のデータ入力   INSERT文またはREPLACE文に値が指定されていない場合   列、またはUPDATEステートメントで列をNULLに設定すると、MySQLハンドル   その時点で有効なSQLモードによる列:

     
      
  • 厳密なSQLモードが有効になっていない場合、MySQLはカラムをカラムデータ型の暗黙のデフォルト値に設定します。
  •   
  • 厳密モードが有効な場合、トランザクションテーブルでエラーが発生し、文がロールバックされます。非トランザクションテーブルの場合、
      エラーが発生しますが、2行目以降の   複数行のステートメントの場合、前の行が挿入されます。
  •   

ですから、あなたの質問は、さまざまな列データ型の暗黙的なデフォルト値は何ですか?どうぞ:

暗黙のデフォルトは次のように定義されています:

     
      
  • 数値型の場合、デフォルトは0です。ただし、AUTO_INCREMENT
    で宣言された整数型または浮動小数点型の場合   属性の場合、デフォルトはシーケンス内の次の値です。
  •   
  • TIMESTAMP以外の日付と時刻のタイプの場合、デフォルトはタイプの適切な「ゼロ」値です。最初のTIMESTAMP列   表のデフォルト値は現在の日付と時刻です。第10.3項「日付と時刻のタイプ」を参照してください。
  •   
  • ENUM以外の文字列型の場合、デフォルト値は空文字列です。 ENUMの場合、デフォルトは最初の列挙値です。
  •   
24
追加された

nullを許可しない場合: -

alter table YOUR_TABLE modify column COLUMN varchar(255) not null default '';

上記のクエリでは、nullが許可されず、値が指定されていない場合は空の文字列が割り当てられます。
phpmysqladminの blank = empty
PHPを使用して mysqli関数または mysql関数 null値はnullとして返されます

クエリを適用したら、簡単にフィルタを使用できます。

select ... from YOUR_TABLE 
where COLUMN != "";        <-- no need to check is null
                           <-- because the first query already enforce not null

ただし、変更を実行する前にこれを行うのが最良です:

update YOUR_TABLE set COLUMN = ""
where COLUMN is null;  
1
追加された
これは賢明ではありません。 NULL は値の不足(未知数)を意味し、空の値と同じではありませんです。
追加された 著者 Elliot Chance,

指定しない限り(つまり、問題の列に「デフォルト制約」を定義しない限り)デフォルト値はありません。

既存の列にデフォルトを追加する例を次に示します。

ALTER TABLE dbo.customer ALTER COLUMN contactname SET DEFAULT 'Unknown'

デフォルトのテーブルを作成する例を次に示します。

CREATE TABLE Books (
  ID SMALLINT NOT NULL,
  Name VARCHAR(40) NOT NULL,
  PubID SMALLINT NOT NULL DEFAULT 0
)

すべての列を「nullでない」と宣言し、適切なデフォルトの制約を提供するのがよい方法です。

上記の "books"の例では、PubIDを指定せずに「挿入」すると、PubIDはゼロになります。

同じ例で、IDまたは名前を指定せずに「挿入」するとエラーが発生します。

MySQLにIDを自動的に割り当てるには、代わりに次の構文を使用します。

CREATE TABLE Books (
  ID SMALLINT NOT NULL AUTO_INCREMENT,
  Name VARCHAR(40) NOT NULL,
  PubID SMALLINT NOT NULL DEFAULT 0
)
0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com