私はあなたの問題を正確に理解することができません.SQLの制約の定義と型を含む概念を理解してもらうことを考えました。
制約は、テーブルに入力できるデータの種類を制限するために使用されます。
制約は、テーブルの作成時 (CREATE TABLE ステートメントを使用) またはテーブルの作成後 (ALTER TABLE ステートメントを使用) に指定できます。
制約の種類:
•NOT NULL
•個性的
•主キー
•外部キー
•小切手
•デフォルト
それぞれの小さな例を含む制約の種類の説明:-
SQL NOT NULL 制約
•NOT NULL 制約は、列が NULL 値を受け入れないように強制します。
•NOT NULL 制約は、フィールドが常に値を含むように強制します。つまり、このフィールドに値を追加しないと、新しいレコードを挿入したり、レコードを更新したりできません。
次の SQL は、「P_Id」列と「LastName」列が NULL 値を受け入れないように強制します。
•テーブル作成者
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
シティ varchar(255)
)
SQL UNIQUE 制約
UNIQUE 制約は、データベース テーブル内の各レコードを一意に識別します。
CREATE TABLE の SQL UNIQUE 制約
次の SQL は、「Persons」テーブルが「P_Id」列に UNIQUE 制約を作成します
創造された:
MySQL:
CREATE TABLE 人
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
都市 varchar(255),
ユニーク (P_Id)
)
SQL サーバー/オラクル/MS アクセス:
CREATE TABLE 人
(
P_Id int NOT NULL 一意、
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
シティ varchar(255)
)
UNIQUE 制約の命名を許可し、複数の列で UNIQUE 制約を定義するには、次の SQL 構文を使用します。
MySQL / SQL サーバー / オラクル / MS アクセス:
CREATE TABLE 人
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
都市 varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)
ALTER TABLE の SQL UNIQUE 制約
テーブルが既に作成されている場合に「P_Id」列に UNIQUE 制約を作成するには
、次の SQL を使用します。
MySQL / SQL サーバー / オラクル / MS アクセス:
ALTER TABLE の人物
一意の追加 (P_Id)
UNIQUE 制約の命名を許可し、複数の列で UNIQUE 制約を定義するには、次の SQL 構文を使用します。
MySQL / SQL サーバー / オラクル / MS アクセス:
ALTER TABLE の人物
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
UNIQUE 制約を削除するには
UNIQUE 制約を削除するには、次の SQL を使用します。
MySQL:
ALTER TABLE の人物
ドロップ インデックス uc_PersonID
SQL サーバー/オラクル/MS アクセス:
ALTER TABLE の人物
DROP CONSTRAINT uc_PersonID
SQL PRIMARY KEY 制約
PRIMARY KEY 制約は、データベース テーブル内の各レコードを一意に識別します。
主キーには一意の値が含まれている必要があります。
主キー列に NULL 値を含めることはできません。
各テーブルには主キーが必要であり、各テーブルには主キーを 1 つだけ含めることができます。
CREATE TABLE の SQL PRIMARY KEY 制約
次の SQL は、「Persons」テーブルが
作成した:
MySQL:
CREATE TABLE 人
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
都市 varchar(255),
主キー (P_Id)
)
SQL サーバー/オラクル/MS アクセス:
CREATE TABLE 人
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
シティ varchar(255)
)
PRIMARY KEY 制約の命名を許可し、複数の列で PRIMARY KEY 制約を定義するには、次の SQL 構文を使用します。
MySQL / SQL サーバー / オラクル / MS アクセス:
CREATE TABLE 人
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
都市 varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
CREATE TABLE の SQL FOREIGN KEY 制約
次の SQL は、"Orders" テーブルが作成されるときに "P_Id" 列に FOREIGN KEY を作成します: MySQL:
CREATE TABLE オーダー
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_ID 整数、
主キー (O_Id)、
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL サーバー/オラクル/MS アクセス:
CREATE TABLE オーダー
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES 人物(P_Id)
)
FOREIGN KEY 制約の命名を許可し、複数の列で FOREIGN KEY 制約を定義するには、次の SQL 構文を使用します: MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE オーダー
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_ID 整数、
主キー (O_Id)、
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES 人物(P_Id)
)
CREATE TABLE の SQL CHECK 制約
次の SQL は、"Persons" テーブルの作成時に "P_Id" 列に CHECK 制約を作成します。CHECK 制約は、列「P_Id」に 0 より大きい整数のみを含める必要があることを指定します。
MySQL:
CREATE TABLE 人
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
都市 varchar(255),
チェック (P_Id>0)
)
SQL DEFAULT 制約
DEFAULT 制約は、デフォルト値を列に挿入するために使用されます。
CREATE TABLE の SQL DEFAULT 制約
次の SQL は、"Persons" テーブルの作成時に "City" 列に DEFAULT 制約を作成します。
私の SQL / SQL Server / Oracle / MS Access:
CREATE TABLE 人
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
名 varchar(255),
アドレス varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)
GETDATE() などの関数を使用して、DEFAULT 制約を使用してシステム値を挿入することもできます。
CREATE TABLE オーダー
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_ID 整数、
OrderDate 日付 DEFAULT GETDATE()
)
上記の説明は、制約を使用する一般的な形式です。問題を解決するのに役立つことを願っています。