問題:
データベース内のテーブルの主キーを作成したい。
例:
product
。
ソリューション1(新しいテーブル):
CREATE TABLE product ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL, price DECIMAL(7,2) );
ディスカッション:
主キーとして定義された列を持つ新しいテーブルを作成するには、キーワードPRIMARY KEY
を使用できます。 その列の定義の最後にあります。この例では、テーブルproduct
CREATE TABLE
を使用する 列の名前とそれぞれのデータ型を括弧で囲んだ句。このテーブルの主キーとして列IDを選択するため、PRIMARY KEY
を指定します。 この列の定義の最後にあります。
特定のテーブルに対して作成できる主キーは1つだけであることに注意してください。
ソリューション2(新しいテーブル):
CREATE TABLE product ( name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL), price DECIMAL(7,2), PRIMARY KEY(name, producer) );
ディスカッション:
新しいテーブルの作成中に主キーを定義する別の方法は、PRIMARY KEY
を使用することです。 列定義の最後にある句。この場合、1つ以上の列をPRIMARY KEY
への引数として指定します。 句;これらの列がテーブルの主キーになります。
このアプローチでは、複数の列で作成された主キーが許可されることに注意してください。この例では、テーブルproduct
name
の2つの列で構成されます およびproducer
。
ソリューション3(既存のテーブル):
ALTER TABLE product ADD PRIMARY KEY (id);
ディスカッション:
主キーがまだない既存のテーブルの主キーを定義することもできます。
ここで、テーブルはALTER TABLE
を使用して変更されます 句。テーブル(この例では、product
)は、キーワードALTER TABLE
にちなんで名付けられています 、次にADD PRIMARY KEY
句の後に、主キーとして使用される列の名前が続きます。このコマンドを実行する前にテーブルがすでに存在している必要があり、テーブルに主キーがない必要があることに注意してください。
ソリューション4(既存のテーブル、主キーの制約):
ALTER TABLE product ADD CONSTRAINT PK_product_id PRIMARY KEY (id);
ディスカッション:
既存のテーブルの主キー制約に名前を付ける場合は、このようなクエリを使用します。ここでは、主キーの制約であるPK_product_id
、列id
から生成されます 。制約名を指定しない場合、データベースはデフォルトの制約名を生成します(名前はデータベースによって異なります)。