ホームページ >データベース >mysql チュートリアル >mysqlの複数フィールドの一意の制約

mysqlの複数フィールドの一意の制約

(*-*)浩
(*-*)浩オリジナル
2019-05-10 13:09:388736ブラウズ

MySQL の一意制約 (一意キー) では、カラムが一意であることが必要であり、null も許可されますが、出現できる null 値は 1 つだけです。一意制約により、1 つ以上の列に重複する値が存在しないことが保証されます。

mysqlの複数フィールドの一意の制約

テーブルの作成時に一意制約を設定します。

列を定義した直後に UNIQUE キーワードを使用して、一意制約を指定します。構文規則は次のとおりです。

<字段名> <数据类型> UNIQUE

データ テーブル tb_dept2 を作成し、部門の一意の名前を指定し、次に示すように SQL ステートメントと実行結果を入力します。

mysql> CREATE TABLE tb_dept2
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) UNIQUE,
    -> location VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_dept2;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(40) | YES  | UNI | NULL    |       |
| location | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.08 sec)

ヒント: UNIQUE と PRIMARY KEY の違い: テーブルには UNIQUE として宣言された複数のフィールドを持つことができますが、PRIMARY KEY 宣言は 1 つだけあります。PRIMAY KEY として宣言された列は NULL 値を持つことができません。ただし、UNIQUE フィールドでは宣言 NULL 値が許可されます。

テーブル変更時に一意制約を追加する

テーブル変更時に一意制約を追加する構文形式は次のとおりです。

ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);

データを変更するtable tb_dept1、指定 部門名は一意です 入力したSQL文と実行結果は以下のとおりです。

mysql> ALTER TABLE tb_dept1
    -> ADD CONSTRAINT unique_name UNIQUE(name);
Query OK, 0 rows affected (0.63 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(22) | NO   | UNI | NULL    |       |
| location | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

ユーザーがコメントに「いいね!」するという要件があるとします。データベース設計は、ユーザー テーブル t_user、コメント テーブル t_comment、いいね テーブル t_praise の 3 つのテーブルです。いいね テーブルには 2 つの外部キーがあります。 : user_id と comment_id は、それぞれ user テーブルのユーザー ID とコメント テーブルのコメント ID に関連付けられ、ユーザーが同じコメントに「いいね!」できるのは 1 回だけであると規定します。これを実現する 1 つの方法は、user_id と comment_id を介してクエリを実行することです。 like テーブルに挿入する前に、like レコードがあるかどうかを確認します。ない場合は、挿入操作を再度実行します。そうでない場合は、すでに like していることが返されます。この方法で実装すると、データベース クエリ操作が 1 つ増えます。より良い実装は、like テーブルの user_id と comment_id を一意の制約になるように変更することです。つまり、2 つの列を同時に同じにすることはできません。この方法では、挿入操作中にすでに like をクリックしている場合、データベースは一意キー制約の違反をスローします。この場合、データベース クエリ操作をもう 1 回回避できます。特定の設定が多数あります。一意制約としてリストされているステートメントは次のとおりです:

UNIQUE KEY <唯一约束名>(<列名>,...,<列名n>)
rrree

以上がmysqlの複数フィールドの一意の制約の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。