Sql-unique

提供:Dev Guides
移動先:案内検索

SQL-一意の制約

UNIQUE制約は、2つのレコードが列に同じ値を持つことを防ぎます。 たとえば、CUSTOMERSテーブルでは、2人以上の人が同じ年齢になるのを防ぐことができます。

たとえば、次のSQLクエリはCUSTOMERSという新しいテーブルを作成し、5つの列を追加します。 ここでは、AGE列がUNIQUEに設定されているため、同じ年齢の2つのレコードを持つことはできません。

CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL UNIQUE,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

CUSTOMERS表がすでに作成されている場合、UNIQUE制約をAGE列に追加します。 以下のコードブロックで提供されるクエリのようなステートメントを記述します。

ALTER TABLE CUSTOMERS
   MODIFY AGE INT NOT NULL UNIQUE;

また、次の構文を使用することもできます。この構文では、複数の列の制約の名前付けもサポートされています。

ALTER TABLE CUSTOMERS
   ADD CONSTRAINT myUniqueConstraint UNIQUE(AGE, SALARY);

一意の制約を削除する

UNIQUE制約を削除するには、次のSQLクエリを使用します。

ALTER TABLE CUSTOMERS
   DROP CONSTRAINT myUniqueConstraint;

MySQLを使用している場合は、次の構文を使用できます-

ALTER TABLE CUSTOMERS
   DROP INDEX myUniqueConstraint;