1

列に何らかの値が入力されていることを確認する制約はどれですか? 主キーと非 null 制約の間で混乱しています。

4

3 に答える 3

3

NOT NULL制約。

PK に参加するすべての列も許可する必要はありませんNULLが、PK 制約はそれ以上のもの、一意性を保証します。つまり、テーブル内の 2 つの行が主キーに対して同じ値を持つことはできません。

SQL ServerNOT NULLでは、DDL で構文的に制約に名前を付けることができますが、他の制約とは異なり、実際には制約自体に対してメタデータ (名前を含む) が格納されません。

CREATE TABLE T
(
X INT CONSTRAINT NotNull NOT NULL
)
于 2013-03-10T21:00:53.410 に答える
1

もう 1 点取り上げられていませんでした。NULLと 空の文字列は 2 つの非常に異なるものですが、コミュニティの大部分は、それらを交換可能と見なしていることがよくあります。

varchar列を次のように宣言できNOT NULLますが、それでもこれを行うことができます。

DECLARE @x TABLE(y VARCHAR(32) NOT NULL);

INSERT @x(y) VALUES('');

したがって、長さがゼロの文字列でもない有効な値があることを確認することが目標である場合はNULL チェック制約を追加することもできます。

DECLARE @x TABLE(y VARCHAR(32) NOT NULL CHECK (DATALENGTH(LTRIM(y)) > 0));
于 2013-03-10T21:45:57.553 に答える
0
NOT NULL

フィールドに値があるという条件です。テーブル定義でフィールドを NOT NULL にして、レコードが挿入または更新されるたびにフィールドに常に値が入力されるようにすることができます。

主キーは、次の 3 つの条件を満たす必要があります。

  1. フィールドの値は NOT NULL です。
  2. 値は一意です。
  3. 値は不変です。

データベースは、一意のインデックスを使用して最初の 2 つの条件 (およびフィールドの非 null 条件) を適用できます。

3 番目の条件は、通常、データベースによって適用されません。通常、データベースでは主キー フィールドの変更が許可されるため、DBA はそれらを「修正」できます。つまり、管理者がキーを修正することを意図していない限り、キーを識別に使用し、値を変更するアプリケーションを作成しないことに同意するという点で、3 番目の条件はより哲学的です。

ここではフィールドを使用していますが、主キーは、条件を満たすフィールドの任意の組み合わせで構成される複合主キーにすることができます。最初の 2 つまたは 3 つすべての条件に一致するフィールドの任意の組み合わせは、候補キーと呼ばれます。

主キーとして使用できる候補キーは 1 つだけです。どちらかは恣意的な選択です。

于 2013-03-10T21:10:43.823 に答える