SQL UNIQUE 制約

SQL UNIQUE 制約

UNIQUE制約は、データベーステーブルの各レコードをユニークに識別します。

UNIQUEおよびPRIMARY KEY制約は、列または列の集合にユニーク性の保証を提供します。

PRIMARY KEYは自動的にUNIQUE制約が定義されます。

各テーブルには複数のUNIQUE制約が可能ですが、各テーブルにはPRIMARY KEY制約が1つしかありません。

CREATE TABLEでのSQL UNIQUE制約

以下のSQLは、"Persons"テーブルが作成されたときに"Id_P"カラムにUNIQUE制約を作成する:

MySQL:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

UNIQUE 约束に名前を付け、複数の列に対する UNIQUE 约束を定義する場合は、以下の SQL 语法を使用してください:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)

ALTER TABLE 上の SQL UNIQUE 约束

テーブルが作成されている場合、"Id_P" 列に UNIQUE 约束を追加するには、以下の SQL を使用してください:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD UNIQUE (Id_P)

UNIQUE 约束に名前を付ける場合、複数の列に対する UNIQUE 约束を定義する場合は、以下の SQL 语法を使用してください:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

UNIQUE 约束を取り消す

UNIQUE 约束を取り消すには、以下の SQL を使用してください:

MySQL:

ALTER TABLE Persons
DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID