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

MySQLでカラムを一意(ユニーク)にする方法|UNIQUE制約の設定手順と重複エラーの確認

MySQLにおける「一意(UNIQUE)」とは、同じカラム内に重複した値を登録できないようにする制約のことです。メールアドレスやユーザーIDなど、一意性が求められるデータを扱う際に非常に重要な機能です。この記事では、テーブル作成時にUNIQUE制約を設定する方法と、実際に重複データを挿入した際の動作について解説します。

テーブル作成時にUNIQUE制約を設定する

まず、テーブルを作成する際にUNIQUE制約を付与する基本的な構文を見ていきましょう。以下の例では、「name」カラムにUNIQUE制約を設定したテーブルを作成しています。

mysql> create table UniqueConstDemo
-> (
-> name varchar(100) unique
-> );
Query OK, 0 rows affected (0.72 sec)

これで、「name」カラムには同じ値を複数回登録することができなくなります。

重複データを挿入してエラーを確認する

UNIQUE制約が正しく機能しているかを確認するため、意図的に同じ値を続けて挿入してみます。

mysql> insert into UniqueConstDemo values('John');
Query OK, 1 row affected (0.19 sec)

mysql> insert into UniqueConstDemo values('John');

同じ値「John」を2回目に挿入しようとすると、以下のようなエラーが発生します。

mysql> insert into UniqueConstDemo values('John');
ERROR 1062 (23000): Duplicate entry 'John' for key 'name'

「ERROR 1062 (23000)」は、UNIQUE制約に違反して重複したデータを登録しようとした際に表示されるエラーです。このように、UNIQUE制約を設定したカラムには同じ値を2つ以上登録できません。

異なる値を挿入する場合

一方、UNIQUE制約が設定されていても、異なる値であれば問題なく挿入できます。

mysql> insert into UniqueConstDemo values('Bob');
Query OK, 1 row affected (0.11 sec)

登録されたデータを確認する

最後に、SELECT文を使ってテーブル内の全レコードを表示してみましょう。

mysql> select * from UniqueConstDemo;

実行結果は以下の通りです。

+-------+
| name  |
+-------+
| Bob   |
| John  |
+-------+
2 rows in set (0.00 sec)

このように、重複した「John」は1件のみ登録されており、UNIQUE制約によってデータの重複が適切に防止されていることが確認できます。

まとめ

UNIQUE制約を使えば、特定のカラムに重複した値が登録されるのを防ぐことができます。テーブル作成時に「unique」キーワードを指定するだけで簡単に設定でき、データの整合性を保つうえで欠かせない機能です。すでに存在するテーブルのカラムに後からUNIQUE制約を追加したい場合は、ALTER TABLE文とADD UNIQUE句を組み合わせることで対応できます。ぜひ実際の開発で活用してみてください。

  1. MySQLでフィールド(カラム)の末尾3文字を削除する方法

    MySQLでは、REVERSE()関数とSUBSTR()関数を組み合わせることで、フィールド(カラム)の値から末尾の指定した文字数を簡単に取り除くことができます。この記事では、実際にテーブルを作成し、データを登録して、末尾3文字を削除するクエリの実行手順を解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> StudentId varchar(100) -> ); Query OK, 0 rows affected (0.58 sec)2. レコードの挿

  2. MySQLでGROUP BYのように特定の1行だけ更新する方法|ORDER BYとLIMITを活用したUPDATE文の書き方

    MySQLでは、UPDATE文の中でGROUP BYを直接使用することができません。しかし、「同じ値を持つ複数のレコードの中から、最初の1行だけを更新したい」というケースは実際の開発でよく発生します。 そんなときに役立つのが、ORDER BYとLIMITを組み合わせたUPDATE文です。この記事では、サンプルテーブルを使いながら、その具体的な手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、従業員情報を格納するテーブル「DemoTable2018」を作成します。テーブルには、自動採番される主キー「EmployeeId」、従業員名「EmployeeName」、給与「Emp