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

SQLServerテーブルの列に非ヌル制約を作成する方法-SQLServer/T-SQLチュートリアルパート51

    シナリオ:

    要件の1つに顧客テーブルを作成しているので、名の列に常に値があることを確認する必要があります。名の列に常に値があることをどのように確認しますか?


    解決策:

    制約は、列に挿入するデータがルールに従うことを確認するルールを定義します。
    上記の要件では、列にNot Null制約を作成できます。NotNullConstraintは、その列に挿入される値がNullでないことを確認します。ユーザーが非ヌル制約を作成した列の値を指定せずに行を挿入しようとすると、列がヌル値を受け入れることができないため、挿入は失敗します。

    非ヌル制約を作成するにはテーブルの列では、以下に示すように、名の列のデータ型の後にNotNullを追加する必要があります。

    Create Table Customer
    (FirstName VARCHAR(50) Not Null,
    LastName VARCHAR(50),
    Age SmallInt,
    PhoneNumber CHAR(9),
    DOB Date,
    Gender CHAR(1)
    )
     他の列に非ヌル制約を指定しなかったことがわかります。つまり、それらの列はヌル値または不明な値を受け入れることができます。

    行の下に挿入して、何が起こるかを見てみましょう。

    insert into dbo.Customer ( FirstName,LastName,Age,PhoneNumber,DOB,Gender)
    Values
    ('Aamir','Shahzad',Null,Null,Null,Null)
    ,(Null,'Raza',33,'00000000',Null,'M')
     [名]列にNullを挿入できないためにトランザクションが失敗したことがわかるように、レコードは挿入されません。


    SQLServerの列に非ヌル制約を作成する方法-TSQLチュートリアル
    2番目の挿入について考えてみましょう、[名]列に何も挿入していない場合。それでも挿入は失敗します。挿入リストに列を指定しない場合、その列にNull値を挿入しようとし、[名]列に非NULL制約を作成しました。


    insert into dbo.Customer (LastName,Age,PhoneNumber,DOB,Gender)
    Values
    ('Raza',33,'00000000','2016-01-26','M')
      
     SQLServerで非NULL制約を作成する方法-SQLServer/TSQLチュートリアル



    1. MySQLのORDERBYRAND()関数を最適化するにはどうすればよいですか?

    2. WHERE句で同じ列を複数回使用する

    3. MySQL –現在のユーザーを知るためのさまざまな方法

    4. MySQL I/O使用率が高いかどうかを確認する方法