web-dev-qa-db-ja.com

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

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

それを理解しようとしているだけで、そのレコードの特定の列の値が「空」または空白などにならないように、すべてのレコードをクエリしたいと思います。

ありがとう。

16
lollercoaster

手動 を参照すると、

明示的なDEFAULT句がないNOTNULL列のデータ入力の場合、INSERTまたはREPLACEステートメントに列の値が含まれていないか、UPDATEステートメントが列をNULLに設定すると、MySQLはで有効なSQLモードに従って列を処理します。時間:

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

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

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

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

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

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

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ではない」と宣言し、必要に応じてデフォルトの制約を指定することをお勧めします。

上記の「本」の例では、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
paulsm4