MySQLで列を一意にする必要がある場合があります。これを行うには、MySQLにUNIQUE列制約を追加します。一意性制約を追加するには、CREATETABLEまたはALTERTABLEステートメントを使用する方法がいくつかあります。 MySQLに一意の制約を追加する方法は次のとおりです。
MySQLは一意性制約を追加します
MySQLに一意の制約を追加する方法は次のとおりです。テーブルを作成するとき、またはテーブルを作成した後に、一意性制約を追加できます。これら両方のアプローチを見ていきます。
MySQLはテーブルの作成中に一意の制約を追加します
テーブルを作成するときにUNIQUE制約を作成するSQLステートメントは次のとおりです
CREATE TABLE table_name( ..., column_name data_type UNIQUE, ... )
上記のクエリでは、一意にしたい列の定義にUNIQUEキーワードを指定する必要があります。
一意の制約を作成する例を次に示します。次の例では、 order_idにUNIQUE制約を追加しました。 列
mysql> create table recent_orders ( order_id int UNIQUE, amount int ); mysql> describe recent_orders; +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | order_id | int(11) | YES | UNI | NULL | | | amount | int(11) | YES | | NULL | | +----------+---------+------+-----+---------+-------+
ここで、 order_idに重複する値を挿入しようとすると 列にエラーが発生します。
mysql> insert into recent_orders(order_id, amount) values(1, 100),(1,250); ERROR 1062 (23000): Duplicate entry '1' for key 'order_id' mysql> insert into recent_orders(order_id, amount) values(1, 100),(2,250); mysql> select * from recent_orders; +----------+--------+ | order_id | amount | +----------+--------+ | 1 | 100 | | 2 | 250 | +----------+--------+
ボーナス読み取り:MySQLの名前変更列
MySQLは既存の列に一意の制約を追加します
これは、ALTERTABLEステートメントを使用して既存の列のUNIQUE制約を作成するSQLステートメントです。
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... );
上記のSQLクエリでは、 constraint_nameを指定する必要があります ADD CONSTRAINTの後のUNIQUE制約の場合、一意にしたい列を()
にリストします。既存の列に一意性制約を追加する例を次に示します
mysql> alter table recent_orders add constraint unique_amount UNIQUE (amount); mysql> describe recent_orders; +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | order_id | int(11) | YES | UNI | NULL | | | amount | int(11) | YES | UNI | NULL | | +----------+---------+------+-----+---------+-------+
上記のクエリでは、金額列に一意の制約を追加しました。
ボーナスリード:MySQLでテーブルを複製する方法
MySQLは一意性制約の複数の列を追加します
複数の列にUNIQUE制約を作成するSQLステートメントは次のとおりです。
mysql> create table old_orders ( order_id int, amount int, CONSTRAINT u_orders UNIQUE (order_id,amount) ); mysql> describe old_orders; +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | order_id | int(11) | YES | MUL | NULL | | | amount | int(11) | YES | | NULL | | +----------+---------+------+-----+---------+-------+ mysql> insert into old_orders(order_id, amount) values(1, 100),(1,100); ERROR 1062 (23000): Duplicate entry '1-100' for key 'u_orders'
ボーナス読み取り:パラメータを使用したMySQLストアドプロシージャ
ALTERTABLEステートメントを使用して複数の列にUNIQUECONSTRAINTを追加することもできます。
alter table old_orders add constraint unique_orders UNIQUE (order_id,amount);
Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。