MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

ALTER TABLE文以外で既存のMySQLテーブルのフィールドにUNIQUE制約を適用する方法

既存のMySQLテーブルのフィールドにUNIQUE制約を適用する場合、ALTER TABLEステートメントのほかに、CREATE UNIQUE INDEXステートメントを使用する方法もあります。ユニークインデックスを作成することで、指定した列に対して重複した値の登録を防ぐことができます。

CREATE UNIQUE INDEXの構文

基本的な構文は以下の通りです。

CREATE UNIQUE INDEX index_name ON table_name(Column_name);

実行例

ここでは、「Test5」という名前の次のようなテーブルがあると仮定し、列「ID」にUNIQUE制約を追加したいケースを考えます。CREATE UNIQUE INDEXコマンドを使えば、以下のように簡単に実現できます。

mysql> DESCRIBE TEST5;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID    | int(11)     | YES  |     | NULL    |       |
| Name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

mysql> CREATE UNIQUE INDEX ID_UNQ ON TEST5(ID);
Query OK, 0 rows affected (0.20 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> DESCRIBE test5;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID    | int(11)     | YES  | UNI | NULL    |       |
| Name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

まずDESCRIBEコマンドでテーブル構造を確認すると、初期状態では「ID」列のKey欄は空です。そこで「CREATE UNIQUE INDEX ID_UNQ ON TEST5(ID);」を実行してユニークインデックスを作成すると、再度DESCRIBEで確認した際に「ID」列のKey欄が「UNI」と表示されます。これにより、UNIQUE制約が正常に適用されたことが確認できます。

なお、既に重複データが存在する列にユニークインデックスを作成しようとするとエラーになるため、事前にデータの重複チェックを行っておくことが重要です。

  1. 既存のMySQLテーブルを削除するPHP関数とは?mysql_queryの使い方を解説

    PHPでは、既存のMySQLテーブルを削除するために mysql_query 関数を使用します。この関数は2つのパラメータを受け取り、処理が成功した場合は TRUE、失敗した場合は FALSE を返します。 構文 bool mysql_query( sql, connection ); パラメータの詳細 番号パラメータと説明 1.sql必須 – 既存のMySQLテーブルを削除するためのSQLクエリ(例:DROP TABLE テーブル名)を指定します。 2.connection任意 – MySQLへの接続リソースを指定します。省略した場合は、mysql_connect() によって最後に

  2. MySQLのALTER TABLEで一意制約(UNIQUE)を追加する方法

    MySQLでは、ALTER TABLE文を使うことで、すでに作成済みのテーブルに対して後から一意制約(UNIQUE制約)を追加できます。一意制約を設定すると、指定したカラム(または複数カラムの組み合わせ)に重複した値を挿入できなくなり、データの整合性を保つことができます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstName(名)」と「LastName(姓)」の2つのカラムを持つテーブルを用意します。mysql> create table DemoTable1811 ( FirstName varchar(20), Las