MySQL で複数の列に一意の制約を指定する

Shraddha Paghdar 2023年6月20日
MySQL で複数の列に一意の制約を指定する

本日の投稿では、MySQL で複数の列に一意の制約を指定する方法について説明します。

MySQL で複数の列に一意の制約を指定する

列または列のコレクションの各値が異なることを保証したい場合があります。

たとえば、従業員のデータベース内のユーザーの電子メール アドレスや、顧客のテーブル内の顧客の電話番号は異なる必要があります。 このルールを適用するために、一意の制約が使用されます。

UNIQUE と呼ばれる整合性制約により、列または列の組み合わせの各値が異なることが保証されます。 表制約または列制約は、両方とも一意制約にすることができます。

構文:

CREATE TABLE table_name(
    column_name data_type UNIQUE,
);

上記の構文では、一意性ルールを課したい列指定に UNIQUE キーワードが含まれています。 列名に重複する値を挿入または更新すると、MySQL は変更を拒否し、エラーを生成します。

この UNIQUE 制約では列制約が使用されます。 さらに、単一の列に一意のルールを適用するために使用される場合もあります。

次の構文は、2つ以上の列に対して UNIQUE 制約を確立するために使用されます。

構文:

CREATE TABLE table_name(
   column_name1 data_type,
   column_name2 data_type,
   UNIQUE(column_name1,column_name2)
);

MySQL ALTER TABLE コマンドを使用して、テーブルから列を追加、変更、またはドロップ/削除できます。 ADD UNIQUE コマンドは、一意の制約がない列が既に存在する場合に、一意の制約を追加できます。

次の構文を使用して、2つ以上の列に対して一意の制約を作成します。

構文:

ALTER TABLE table_name ADD UNIQUE column_name;
ALTER TABLE table_name ADD UNIQUE `index_name`(column_name1, column_name2);

前の概念をさらに理解するために、次の例を検討してください。

CREATE TABLE Employees(
    email varchar(255) UNIQUE,
    first_Name VARCHAR(255),
    last_Name VARCHAR(255)
);
CREATE TABLE EmployeeDepartment(
   email varchar(255),
   department varchar(255),
   UNIQUE(email,department)
);
-- If the Employees table does not have a unique email constraint
ALTER TABLE EmployeeDepartment ADD UNIQUE email;
-- If the EmployeeDepartment table does not have a unique constraint
ALTER TABLE EmployeeDepartment ADD UNIQUE `unique_department_emp`(email,department);

前の最初の例では、属性 emailfirst_Name、および last_Name を持つ Employees というデータベースを作成しました。 email 列のデータと重複する値を変更または編集すると、エラーが発生します。

キーワード UNIQUE. を使用して、メールを一意の列として指定します。

最初と同様に、変数 emaildepartment. を含む EmployeeDepartment テーブルを作成しました。 email+department列にデータと重複する値を挿入・変更するとエラーになります。

キーワード UNIQUE を使用して、emaildepartment の組み合わせを一意の列にします。

同様に、新しい一意の制約を追加することで、既存のテーブルを変更できます。

上記のコード行を、MySQL と互換性のあるブラウザーで実行します。 次の結果が表示されます。

Query executed successfully.
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

関連記事 - MySQL Column