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);
前の最初の例では、属性 email
、first_Name
、および last_Name
を持つ Employees
というデータベースを作成しました。 email
列のデータと重複する値を変更または編集すると、エラーが発生します。
キーワード UNIQUE.
を使用して、メールを一意の列として指定します。
最初と同様に、変数 email
と department.
を含む EmployeeDepartment
テーブルを作成しました。 email+department
列にデータと重複する値を挿入・変更するとエラーになります。
キーワード UNIQUE
を使用して、email
と department
の組み合わせを一意の列にします。
同様に、新しい一意の制約を追加することで、既存のテーブルを変更できます。
上記のコード行を、MySQL と互換性のあるブラウザーで実行します。 次の結果が表示されます。
Query executed successfully.
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