SQLの主キー
SQL PRIMARY KEY 制約
PRIMARY KEY 制約は、データベース テーブル内の各レコードを一意に識別します。
主キーには一意の値が含まれている必要があります。
主キー列には NULL 値を含めることはできません。
すべてのテーブルには主キーが 1 つある必要があり、各テーブルは主キーを 1 つだけ持つことができます。
CREATE TABLE 時の SQL PRIMARY KEY 制約
次の SQL は、「persons」テーブルの作成時に「P_Id」列に PRIMARY KEY 制約を作成します。 P_Id int NOT NULL,
LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),
PRIMARY KEY (P_Id))
SQL Server / Oracle / MS Access:
CREATE TABLE persons
(P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,SQL Server / Oracle / MS Access:
CREATE TABLE persons
(
FirstName varchar(255),Address varchar(255),City varchar(255) )
)PRIMARY KEY 制約に名前を付け、複数の列に PRIMARY KEY 制約を定義するには、次の SQL 構文を使用してください:
MySQL / SQL Server / Oracle / MS Access:
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),
CONSTRAINT pk_personID PRIMARY KEY (P_Id,LastName))
注:
上記の例では、主キー PRIMARY KEY (pk_personID) が 1 つだけあります。ただし、pk_PersonID の値は 2 つの列 (P_Id と 苗字)。
ALTER TABLE時のSQL PRIMARY KEY制約
テーブルの作成後、「P_Id」列にPRIMARY KEY制約を作成する必要がある場合は、次のSQLを使用してください: 注:
上記の例では、主キー PRIMARY KEY (pk_personID) が 1 つだけあります。ただし、pk_PersonID の値は 2 つの列 (P_Id と 苗字)。
ALTER TABLE時のSQL PRIMARY KEY制約
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE persons
ADD PRIMARY KEY (P_Id)PRIMARY KEY 制約に名前を付け、複数の列の PRIMARY KEY 制約を定義するには、次の SQL 構文を使用してください:
MySQL / SQL Server / Oracle / MS Access:注: ALTER TABLE ステートメントを使用して主キーを追加する場合は、主キーを宣言する必要がありますキー列に NULL 値が含まれないようにします (テーブルの最初の作成時)。
PRIMARY KEY制約の削除
PRIMARY KEY制約を取り消すには、次のSQLを使用してください: MySQL:
ALTER TABLE persons
DROP PRIMARY KEYSQL Server / Oracle / MS Access:
ALTER TABLE persons
DROP CONSTRAINT pk_personID
DROP CONSTRAINT pk_personID