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

SQLServerの既存のテーブルにデフォルト値の列を追加します

    構文:

    ALTER TABLE {TABLENAME} 
    ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
    CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
    WITH VALUES
    

    例:

    ALTER TABLE SomeTable
            ADD SomeCol Bit NULL --Or NOT NULL.
     CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
        DEFAULT (0)--Optional Default-Constraint.
    WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
    

    注:

    オプションの制約名:
    CONSTRAINT D_SomeTable_SomeColを省略した場合 次に、SQLServerは自動生成します
    デフォルト-次のような面白い名前の制約:DF__SomeTa__SomeC__4FB7FEF6

    オプションのWith-Valuesステートメント:
    WITH VALUES 列がNULL可能であり、既存のレコードにデフォルト値を使用する場合にのみ必要です。
    列がNOT NULLの場合 の場合、WITH VALUESを指定するかどうかに関係なく、既存のすべてのレコードにデフォルト値
    が自動的に使用されます。 かどうか。

    インサートがデフォルト制約でどのように機能するか:
    SomeTableにレコードを挿入した場合 しない SomeColを指定します の値の場合、デフォルトで0になります 。
    レコードを挿入する場合および SomeColを指定します NULLとしてのの値 (そしてあなたの列はnullを許可します)、
    その場合Default-Constraintはしません 使用され、NULL 値として挿入されます。

    メモは、以下のすべての人のすばらしいフィードバックに基づいています。
    特に感謝します:
    @ Yatrix、@ WalterStabosz、@ YahooSerious、@StackManのコメント。



    1. どちらが速いですか:複数の単一のINSERTまたは1つの複数行のINSERT?

    2. 複数の列を持つ単一の固定テーブルと柔軟な抽象テーブル

    3. SQL Serverの小数点以下の桁数を切り捨てる(丸めない)

    4. rownumを使用してテーブルの2番目の行を選択する